Files
kotlin-fork/kotlin-native
Vasily Levchenko d72e63334d [kotlin compiler][update] 1.5.20-dev-60
* 509ed64917 - (tag: build-1.5.20-dev-60) KT-43686: Make kapt Gradle task cacheable across machines (2 hours ago) <Ivan Gavrilovic>
* 771600077c - (tag: build-1.5.20-dev-53, origin/push/demiurg906/fir-identical-TC) [Test] Fail if there are changes in generated fir tree files in teamcity build (5 hours ago) <Dmitriy Novozhilov>
* 297288e984 - [Test] Don't generate new files in GeneratorsFileUtil in teamcity mode (5 hours ago) <Dmitriy Novozhilov>
* 772ca2715c - [Test] Don't change testdata in FirIdenticalChecker in teamcity mode (5 hours ago) <Dmitriy Novozhilov>
* 6265ac8c19 - (tag: build-1.5.20-dev-38, origin/rr/gorshenev/klib_evolution_master) Re-enabled disabled test (2 days ago) <Alexander Gorshenev>
* 16b3fedcd4 - Created AbstractKlibBinaryCompatibilityTest and AbstractJsKlibBinaryCompatibilityTest A common test runner for klib binary compatibility tests and its js counterpart (2 days ago) <Alexander Gorshenev>
* e7cf34a2a9 - (tag: build-1.5.20-dev-27) Workaround illegal access problem in daemon for JDK 17-ea (3 days ago) <Alexander Udalov>
* f08733eb75 - CLI: suppress warning on JDK 9+ with illegal access to ResourceBundle (3 days ago) <Alexander Udalov>
* 2ef4ca4e6e - CLI: do not pass -noverify to java process starting from JDK 13 (3 days ago) <Alexander Udalov>
* 2bbe3db041 - Update copyrights in CLI scripts (3 days ago) <Alexander Udalov>
* 9f9c8e3d77 - (tag: build-1.5.20-dev-15) Mute stream api test on Android (3 days ago) <Mikhael Bogdanov>
* 21f022dec2 - (tag: build-1.5.20-dev-13) Add :kotlin-scripting-compiler.test to modules with disabled -Werror flag (3 days ago) <Dmitriy Novozhilov>
* 021a63827d - (tag: build-1.5.20-dev-12) Add API version 1.5 to accepted values in MPP language settings (3 days ago) <Sergey Igushkin>
* 6a29097a8c - Remove obsolete dependency for dx (3 days ago) <Mikhael Bogdanov>
* be9ef8f3c8 - Remove obsolete DxChecker (3 days ago) <Mikhael Bogdanov>
2021-02-02 09:38:07 +01:00
..
2020-11-28 20:57:40 +01:00
2021-01-19 13:37:37 +03:00
2020-12-14 15:25:36 +01:00
2021-01-19 13:37:37 +03:00
2021-01-19 13:37:37 +03:00
2021-01-26 17:38:03 +03:00
2021-01-26 17:38:02 +03:00
2020-11-28 21:01:57 +01:00
2021-01-26 17:38:02 +03:00
2020-12-28 22:55:51 +03:00
2021-01-26 17:38:02 +03:00

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 (Xcode 12.0 is required to compile Kotlin/Native from sources)
  • 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.