*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>
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-libsmay be needed - on recent Ubuntu
apt install libncurses5is 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.