*6d1da6e6d5- (tag: build-1.4.0-dev-2894) KT-36143 Fix type approximation for type arguments in PSI2IR (vor 28 Stunden) <Dmitry Petrov> *2340a86d8d- (tag: build-1.4.0-dev-2892) Update to 201.5259.13-EAP-SNAPSHOT (vor 28 Stunden) <Nikolay Krasko> *6c968859ad- Access to test root disposable through accessor (vor 28 Stunden) <Nikolay Krasko> *272ccf64ae- Refactoring: extract resetApplicationToNull to separate file (vor 28 Stunden) <Nikolay Krasko> *c748b6f3ee- (tag: build-1.4.0-dev-2888) JVM_IR. Minor. Update bytecode text test to JVM_IR or create issues when this (vor 28 Stunden) <Ilmir Usmanov> *4b954c347a- JVM IR: Avoid optimizing comparisons between boxed primitives and null (vor 29 Stunden) <Steven Schäfer> *32e1ec8e98- (tag: build-1.4.0-dev-2882, tag: build-1.4.0-dev-2872) [minor] Update build output in test to fit NI (vor 31 Stunden) <Pavel Kirpichenkov> *64590cc56b- [JPS-TEST] Update test checking JPS build with NI in IDE (vor 31 Stunden) <Pavel Kirpichenkov> *2ead2fba08- [IDEA-TESTS] Update quickfix test parameters for 1.4 (vor 31 Stunden) <Pavel Kirpichenkov> *fdf4f477a6- (tag: build-1.4.0-dev-2871) FIR2IR: fix problems with enum entry / anonymous object visibility (vor 31 Stunden) <Mikhail Glukhikh> *9f0ef77531- [Gradle, JS] Provide js compilations parameters to link tasks (vor 33 Stunden) <Ilya Goncharov> *ce8e511b79- (tag: build-1.4.0-dev-2863) Add setOfNotNull function #KT-35851 (vor 2 Tagen) <Abduqodiri Qurbonzoda> *5a4ce2aa4c- (tag: build-1.4.0-dev-2862) Mark shared global vals to fix K/N worker thread crash (vor 2 Tagen) <Abduqodiri Qurbonzoda> *94d20d9176- (tag: build-1.4.0-dev-2856) Update bytecode text tests in JVM_IR (vor 2 Tagen) <Dmitry Petrov> *64141b8b38- (tag: build-1.4.0-dev-2854) [JVM IR] Fix issue where fields are not being set to their default values within initializer blocks. (vor 2 Tagen) <Mark Punzalan> *56c819f06e- (tag: build-1.4.0-dev-2851) FIR2IR: add two-statements block with iterator + while for 'for' loops (vor 2 Tagen) <Mikhail Glukhikh> *2bfce4f127- FIR2IR: provide correct origins for 'for' loops (vor 2 Tagen) <Mikhail Glukhikh> *83e68be2dc- FIR2IR: add declarations to all library classes from kotlin.* package (vor 2 Tagen) <Mikhail Glukhikh> *4a4fb5a590- Raw FIR: eliminate range variable declaration in 'for' loops (vor 2 Tagen) <Mikhail Glukhikh> *4abbcd1267- Unmute two passing FIR black box tests (fixed by commits of demiurg) (vor 2 Tagen) <Mikhail Glukhikh> *91814364de- Mute two failing FIR black box tests (broken by commits of demiurg) (vor 2 Tagen) <Mikhail Glukhikh> *baa2c56e2d- (tag: build-1.4.0-dev-2850) Force-set path to exact project for MPP run configurations (vor 2 Tagen) <Dmitry Savvinov> *cc2884b8ae- Add test on multiplatform run configurations in multiproject build (vor 2 Tagen) <Dmitry Savvinov> *1ea3db90e1- Add ability to render project of run configuration in tests (vor 2 Tagen) <Dmitry Savvinov> *51edf2b351- (tag: build-1.4.0-dev-2846) NI: introduce warning about implicitly inferred Nothing with existing non-Nothing expected type ^KT-35406 Fixed (vor 2 Tagen) <Victor Petukhov> *e3184e407d- (tag: build-1.4.0-dev-2829) KT-20844 Re-enable stack spilling during inline. (vor 2 Tagen) <Jinseong Jeon> *c9ed27e674- (tag: build-1.4.0-dev-2822) KT-36685 "Convert to a range check" transform hex range to int if it is compared with "Less" or "Greater" (vor 2 Tagen) <Vladimir Dolzhenko> |\ | *7f2cf571b0- Convert to range check: do not transform binaries/hexadecimals to decimals (vor 3 Tagen) <Toshiaki Kameyama> *811ed1ade4- (tag: build-1.4.0-dev-2809) [FIR] Don't update expression in receiver value with smartcast in candidate factory (vor 2 Tagen) <Dmitriy Novozhilov> *e302e06c73- [FIR-TEST] Add test with nullability annotation problem (vor 2 Tagen) <Dmitriy Novozhilov> *47d5bbc224- [FIR-TEST] Move fixed tests out `problems` directory (vor 2 Tagen) <Dmitriy Novozhilov> *e67c8a55bf- [FIR-TEST] Add test with callable reference to member of local class (vor 2 Tagen) <Dmitriy Novozhilov> *d10e56c358- [FIR] Add mapping of primitive types to JVM signatures (vor 2 Tagen) <Dmitriy Novozhilov> *031952268a- (tag: build-1.4.0-dev-2808) Minor. Disable test on Android (vor 2 Tagen) <Mikhael Bogdanov> *ee2e40ce6b- (tag: build-1.4.0-dev-2802) Regenerate test (vor 2 Tagen) <Alexey Tsvetkov> *70d416cafd- (tag: build-1.4.0-eap-2, tag: build-1.4.0-eap-10, tag: build-1.4.0-dev-2800, tag: build-1.4-M1-eap-11) Remove test that become useless after enabling NI everywhere (vor 2 Tagen) <Mikhail Zarechenskiy> *dfe23e770c- Update test about lookups for SAMs after enabling NI (vor 2 Tagen) <Mikhail Zarechenskiy> *297d296b62- (tag: build-1.4.0-dev-2798) [JS] Respect SKIP_DCE_DRIVEN in tests (vor 2 Tagen) <Igor Chevdar> *9bc7a43991- [IR] [JS_IR] Supported fun interfaces in JS (vor 2 Tagen) <Igor Chevdar> *4a7b4d655c- (tag: build-1.4.0-dev-2795) [NI] Fix completion for ILT when Nothing constraint is present (vor 2 Tagen) <Pavel Kirpichenkov> *208c06516b- (tag: build-1.4.0-dev-2794) [IR][Serialization] Allow backends to skip files (vor 2 Tagen) <Sergey Bogolepov> *bcf6ee0c0b- (tag: build-1.4.0-dev-2792) KotlinDslScriptsModel: pass provider mode properly (vor 2 Tagen) <Natalia Selezneva> *ed6f13cf56- KotlinDslScriptsModel: do not add prepare task for each gradle task invocation (vor 2 Tagen) <Natalia Selezneva> *e40dc37be8- KotlinDslScriptsModel: pass correlationId during the request (vor 2 Tagen) <Natalia Selezneva> *55b836a0ac- (tag: build-1.4.0-dev-2790) Mute light class tests (vor 2 Tagen) <Pavel Kirpichenkov> *fda8d7de8b- [IDEA-TESTS] Specify language version in feature-dependent tests (vor 2 Tagen) <Pavel Kirpichenkov> *85d7a0f6b1- [IDEA-TESTS] Fix `ReplaceProtectedToPublishedApiCallFix` (vor 2 Tagen) <Pavel Kirpichenkov> *05b00a1302- [JPS-TEST] Update deprecated language version in test (vor 2 Tagen) <Pavel Kirpichenkov> *bd3b23b933- Use LATEST_STABLE version during prerelease in VersionView (vor 2 Tagen) <Pavel Kirpichenkov> *f9129332b7- (tag: build-1.4.0-dev-2787) [NI] Minor optimisation: don't call extra `contains` checks (vor 2 Tagen) <Mikhail Zarechenskiy> *724bb1b134- [NI] Force variable substitution for properties with stub types (vor 2 Tagen) <Mikhail Zarechenskiy> *155b716e7e- Revert "Disable NewInference for stdlib tests" (vor 2 Tagen) <Mikhail Zarechenskiy> *18b218bfa8- [NI] Use projected type for constraint like Cap(out A) <: out @Exact T (vor 2 Tagen) <Mikhail Zarechenskiy> *3cf77d29b5- Unmute test for NI (vor 2 Tagen) <Mikhail Zarechenskiy> *4542f3b720- [NI] Finish analysis for coerced last lambda expressions if needed (vor 2 Tagen) <Mikhail Zarechenskiy>
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.