kotlin-native

Kotlin/Native infrastructure

Github stars Tracking Chart

official project
version

Kotlin/Native

Kotlin/Native is an LLVM backend for the Kotlin compiler, runtime
implementation, and native code generation facility using the LLVM toolchain.

Kotlin/Native is primarily designed to allow compilation for platforms where
virtual machines are not desirable or possible (such as iOS or embedded targets),
or where a developer is willing to produce a reasonably-sized self-contained program
without the need to ship an additional execution runtime.

Prerequisites:

  • install JDK for your platform, instead of JRE. The build requires tools.jar, which is not included in JRE;
  • on macOS install Xcode 11
  • on Fedora 26+ yum install ncurses-compat-libs may be needed
  • on recent Ubuntu apt install libncurses5 is needed

To compile from sources use following steps:

First, download dependencies:

./gradlew dependencies:update

Then, build the compiler and libraries:

./gradlew bundle

To build with experimental targets support compile with -Porg.jetbrains.kotlin.native.experimentalTargets.

The build can take about an hour on a Macbook Pro.
To run a shorter build with only the host compiler and libraries, run:

./gradlew dist distPlatformLibs

To include Kotlin compiler in composite build and build
against it, use the kotlinProjectPath project property:

./gradlew dist -PkotlinProjectPath=path/to/kotlin/project

It's possible to include in a composite build both Kotlin compiler and Kotlin/Native Shared simultaneously.

After that, you should be able to compile your programs like this:

export PATH=./dist/bin:$PATH
kotlinc hello.kt -o hello

For an optimized compilation, use -opt:

kotlinc hello.kt -o hello -opt

For tests, use:

./gradlew backend.native:tests:run

To generate interoperability stubs, create a library definition file
(refer to samples/tetris/.../sdl.def), and run the cinterop tool like this:

cinterop -def lib.def

See the provided samples and INTEROP.md for more details.

The Interop tool generates a library in the .klib library format. See LIBRARIES.md
for more details on this file format.

Main metrics

Overview
Name With OwnerJetBrains/kotlin-native
Primary LanguageKotlin
Program languageKotlin (Language Count: 18)
Platform
License:Apache License 2.0
所有者活动
Created At2016-05-16 18:40:45
Pushed At2021-08-10 12:31:53
Last Commit At2021-08-10 15:26:14
Release Count6551
Last Release Namev1.5.10 (Posted on )
First Release Namev0.1 (Posted on )
用户参与
Stargazers Count7k
Watchers Count246
Fork Count563
Commits Count6.9k
Has Issues Enabled
Issues Count1135
Issue Open Count0
Pull Requests Count3226
Pull Requests Open Count0
Pull Requests Close Count338
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private