*df2adb060c- (tag: build-1.3.70-dev-2743) Bumped K/N version (5 hours ago) <Igor Chevdar> *a7b3f26cef- [native-gradle-plugin] Supported klib cache (building and using) (5 hours ago) <Igor Chevdar> *364d6a5afa- [Gradle, JS] Actualize NPM dependencies (5 hours ago) <Ilya Goncharov> *f1f2e1830b- (tag: build-1.3.70-dev-2742) [FIR-TEST] Fix incorrect testdata (5 hours ago) <Dmitriy Novozhilov> *4faa2c0c2c- [FIR] Replace static cone types for integers with default classIds in ILT (5 hours ago) <Dmitriy Novozhilov> *c6b9593157- [FIR-TEST] Add identity checker of old frontend and fir testdata to old FE diagnostics tests (5 hours ago) <Dmitriy Novozhilov> *579cb5014a- [FIR-TEST] Add `!FIR_DUMP` directive to diagnostics tests from old frontend (5 hours ago) <Dmitriy Novozhilov> *2536fa0cd5- [FIR-TEST] Add new testdata generated after changes in previous commit (5 hours ago) <Dmitriy Novozhilov> *e9c02a1cca- [FIR-TEST] Add fir diagnostics test based on diagnostics tests from old frontend (5 hours ago) <Dmitriy Novozhilov> *e7f8c8e155- [TEST] Regenerate tests after previous commit (5 hours ago) <Dmitriy Novozhilov> *5b1f96ba1b- [TEST] Add ability to exclude some testdata with pattern in test generator (5 hours ago) <Dmitriy Novozhilov> *ae15fa7676- [FIR] Fix outputs for logs of modularized test (5 hours ago) <Dmitriy Novozhilov> *bb301f8aca- (tag: build-1.3.70-dev-2740) JVM_IR: fix wrong check in skipping captured vars (6 hours ago) <Georgy Bronnikov> *26032e4297- (tag: build-1.3.70-dev-2739) Split exception table on finally insertion before non-local return (6 hours ago) <Mikhael Bogdanov> *c335015c05- Generate proper exception table (6 hours ago) <Mikhael Bogdanov> *078cfc02a5- (tag: build-1.3.70-dev-2735) [IR] Removed wrong validation IrEnumConstructorCall behaves differently whether it is inside IrEnumEntry or not. Remove the validation for now. (6 hours ago) <Igor Chevdar> *62ef280c53- Add compiler:ir.serialization.jvm to IDEA plugin (6 hours ago) <Alexander Udalov> *5f367278c1- Psi2ir: support generic properties in class delegation (6 hours ago) <Alexander Udalov> *025360edc4- (tag: build-1.3.70-dev-2733) JVM IR: lookup symbols by name in ProgressionHandlers in known classes only (7 hours ago) <Alexander Udalov> *359e49fa02- (tag: build-1.3.70-dev-2732) [Commonizer] Blacklist conflicting K/N functions from commonization (7 hours ago) <Dmitriy Dolovov> *c79fcb8cf3- [Commonizer] Add compatible metadata version checks (7 hours ago) <Dmitriy Dolovov> *503fc4883c- [Commonizer] Log duration of each CLI phase (7 hours ago) <Dmitriy Dolovov> *18117ed1f3- [Commonizer] Serialize commonized metadata for KLIB writer (7 hours ago) <Dmitriy Dolovov> *ce376f49fd- [Commonizer] CLI for Kotlin/Native KLIBs (7 hours ago) <Dmitriy Dolovov> *5bc2a4e1e8- [Commonizer] Fix: Don't commonize contents of stdlib (7 hours ago) <Dmitriy Dolovov> *ee42e8c64c- [Commonizer] Fix: Correct resolution of nested classes (7 hours ago) <Dmitriy Dolovov> *a74e364849- [Commonizer] Support Kotlin/Native forward declarations (7 hours ago) <Dmitriy Dolovov> *f4780206d9- [Commonizer] Fix: Skip KNI bridge functions (7 hours ago) <Dmitriy Dolovov> *0a6c132241- [Commonizer] Fix: Cache package fragments with module name (7 hours ago) <Dmitriy Dolovov> *a3e3b43aed- [Commonizer] Fix: approximate signatures with type parameter upper bounds (7 hours ago) <Dmitriy Dolovov> *92656a53ae- [Commonizer] Fix: don't process same package fragments more than once (7 hours ago) <Dmitriy Dolovov> *8dc2784fc4- (tag: build-1.3.70-dev-2727) Reapply "Drop deprecated displayName from descriptor visibility" (8 hours ago) <Pavel Kirpichenkov> *6e19004a4f- (tag: build-1.3.70-dev-2717) [Gradle, JS] Add comment for test (9 hours ago) <Ilya Goncharov> *1bc47b3f6f- [Gradle, JS] Add test for package.json deserializing (9 hours ago) <Ilya Goncharov> *b9a529d7d0- [Gradle, JS] Hack for GSON to get non-null values (9 hours ago) <Ilya Goncharov> *7d98d33e3d- [Gradle, JS] Hack for GSON to get non-null values (9 hours ago) <Ilya Goncharov> *53480c2266- (tag: build-1.3.70-dev-2704) [FIR] Fix fir2ir testdata broken in4777dd6(11 hours ago) <Dmitriy Novozhilov> *39e0c6d55b- (tag: build-1.3.70-dev-2681) Revert "Drop deprecated displayName from descriptor visibility" (27 hours ago) <Pavel Kirpichenkov> *d9ef7d0c8a- (tag: build-1.3.70-dev-2675) [NI] Update / mute diagnostics (28 hours ago) <Pavel Kirpichenkov> *6fa11d1573- (tag: build-1.3.70-dev-2671) Drop deprecated displayName from descriptor visibility (28 hours ago) <Pavel Kirpichenkov> *ebc1562b32- (tag: build-1.3.70-dev-2669) Filter out non-xml model files in modularized test (28 hours ago) <Simon Ogorodnik> *48a05e3688- Support prefixed modularized test-data installation (28 hours ago) <Simon Ogorodnik> *498b41b148- (tag: build-1.3.70-dev-2667) JVM_IR: do not do invokeinterface on Object methods (28 hours ago) <pyos>
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-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.