*ca0bff75cd- [KLIB] Keep order of constant properties depending on backend - Fix K/N performance regression (3 hours ago) <Roman Artemev> *6ef3831f14- Build: Take parent directory as rootProject directory in case of buildSrc (3 hours ago) <Vyacheslav Gerasimov> *462d6ac5b6- Build: Add remote build cache parameters for teamcity builds (3 hours ago) <Vyacheslav Gerasimov> *d3c1ef9251- Build: Use kotlin-build-gradle-plugin in buildSrc (3 hours ago) <Vyacheslav Gerasimov> *ab8542bbdb- Build: Advance kotlin-build-gradle-plugin version to 0.0.2 (3 hours ago) <Vyacheslav Gerasimov> *46d77419a8- Build: Add build cache properties to kotlin-build-gradle-plugin (3 hours ago) <Vyacheslav Gerasimov> *ad79efeba3- Build: Use kotlin version embedded to gradle (3 hours ago) <Vyacheslav Gerasimov> *fa7bd3dd2e- FIR: Support SAM constructors for type aliases (3 hours ago) <Denis Zharkov> *ae01d050c9- FIR: Abstract parts for type alias constructors resolution (3 hours ago) <Denis Zharkov> *fbe7db5471- FIR: Move constructor processing parts to a separate file (3 hours ago) <Denis Zharkov> *bf68e85a5c- FIR: Support SAM conversion for interfaces containing Object methods (3 hours ago) <Denis Zharkov> *7cd55c85e6- (tag: build-1.3.70-dev-2416) JVM/JVM_IR: fix mapping of KClass in annotation classes (5 hours ago) <pyos> *f869be6a71- (tag: build-1.3.70-dev-2414) JVM IR: do not mangle synthetic methods with inline class parameters (5 hours ago) <Alexander Udalov> *66ffdf1b2d- (tag: build-1.3.70-dev-2412) KT-33979 KT-34150 Remove filtering overridden object members and nested objects (5 hours ago) <Roman Golyshev> *2552540f71- (tag: build-1.3.70-dev-2411) IR: wrap exceptions and add file path in per-file lowerings (6 hours ago) <Alexander Udalov> *fd627603a0- Refactor CompilationErrorHandler (6 hours ago) <Alexander Udalov> *2435b8d9fa- (tag: build-1.3.70-dev-2407) Update testData for enum constructor result type in IR (7 hours ago) <Dmitry Petrov> *35c2573b33- PSI2IR: generate IrEnumConstructorCalls with correct return type (7 hours ago) <pyos> *145ad1a6fa- (tag: build-1.3.70-dev-2406) FIR: Minor. Extract common parts in FirCallCompletionResultsWriterTransformer (7 hours ago) <Denis Zharkov> *71bf8a14e8- (tag: build-1.3.70-dev-2405) [FIR] Make `ConeTypeCheckerContext` implements `ConeInferenceContext` (7 hours ago) <Dmitriy Novozhilov> *69033b7b15- (tag: build-1.3.70-dev-2403) JVM_IR: handle @JvmName on annotation getters (8 hours ago) <pyos> *ac7d9fa90d- (tag: build-1.3.70-dev-2402) JVM_IR: implement -Xpolymorphic-signature (8 hours ago) <pyos> *fe6be0f436- (tag: build-1.3.70-dev-2401) Fix failed FIR multi-module test (forgotten test data update) (8 hours ago) <Mikhail Glukhikh> *0ff77bd3c5- (tag: build-1.3.70-dev-2394) Add UL support for const fields initializers (22 hours ago) <Igor Yakovlev> *775eb67219- (tag: build-1.3.70-dev-2386) NI: Add constraints which contain constraining type without projection ^KT-32243 Fixed ^KT-35172 Fixed (23 hours ago) <Victor Petukhov> *65cc0fa463- (tag: build-1.3.70-dev-2382) PSI2IR: have GeneratorExtensions implement StubGeneratorExtensions (24 hours ago) <pyos> *a950df3c80- PSI2IR: copy isPropertyWithPlatformField to GeneratorExtensions (24 hours ago) <pyos> *3cae90dd26- (tag: build-1.3.70-dev-2379) [minor] fix source root creation from imported scripts: (24 hours ago) <Ilya Chernikov> *f2a4a835e7- Improve script cli diagnostics (24 hours ago) <Ilya Chernikov> *49de5e19fb- Implement repl, script and expressions evaluation support in kotlin runner (24 hours ago) <Ilya Chernikov> *531ff92791- Implement support for expression evaluation in jvm cli compiler (24 hours ago) <Ilya Chernikov> *7bb9f97b11- Allow to separate top-level script declarations and statements with semicolon (24 hours ago) <Ilya Chernikov> *b8034567ef- Change script definition lookup key from File to ScriptSource (24 hours ago) <Ilya Chernikov> *615624802c- Add kotlinx-html test (24 hours ago) <Ilya Chernikov> *4439582d23- Remove unnecessary update of the source roots, simplify interface accordingly (24 hours ago) <Ilya Chernikov> *02a71d2cda- Save updated roots before a packagePartProvider is created (24 hours ago) <Ilya Chernikov> *a190ab260e- Load main-kts jar automatically from scripting plugin, if available (24 hours ago) <Ilya Chernikov> *22cb6fa836- (tag: build-1.3.70-dev-2373) [Gradle, JS] Fix case with null distribution (25 hours ago) <Ilya Goncharov> *c267357596- [Gradle, JS] Add distribution DSL (25 hours ago) <Ilya Goncharov> *fe9ddd9f22- [Gradle, JS] Check if resourcesDir exists and resourceDir is input directory (25 hours ago) <Ilya Goncharov> *053469dcec- [Gradle, JS] Copy index.html from resources to dist (25 hours ago) <Ilya Goncharov> *b9dee4e93a- (tag: build-1.3.70-dev-2355) Remove assertion on sorted ranges: it could be empty if lambda doesn't contain any linenumber (29 hours ago) <Mikhael Bogdanov> *ae4a1e3cca- [Gradle, JS] Fix check on Kotlin/JS modules from NPM in DCE (29 hours ago) <Ilya Goncharov> *0380380de4- (tag: build-1.3.70-dev-2351) More cleanups after tests execution (29 hours ago) <Nikolay Krasko> *0cbb3a3956- Remove unused ProjectRootModificationTrackerFixer.kt (29 hours ago) <Nikolay Krasko> *c12599a045- Fix test data for testParamTypeLambdaMismatch in >= 192 (29 hours ago) <Nikolay Krasko> *408f958273- (tag: build-1.3.70-dev-2350) [Gradle, JS] Add idle run for debug node tests (29 hours ago) <Ilya Goncharov> *38de98429d- (tag: build-1.3.70-dev-2348) Fix importing tests in bunch 183 (30 hours ago) <Andrey Uskov> *9643d5d28e- Added import-resolve integration tests (30 hours ago) <Andrey Uskov> *e9946b21b5- (tag: build-1.3.70-dev-2344, tag: build-1.3.70-dev-2340) JVM IR: do not hide constructor with inline class types and defaults (31 hours ago) <Alexander Udalov> *4e1cd6bcd5- (tag: build-1.3.70-dev-2338) Mute 2 black-box FIR test due to disallowed Kotlin synthetic properties problem (31 hours ago) <Mikhail Glukhikh> *18e8896c08- (tag: build-1.3.70-dev-2334) [JVM IR] Leave private @JvmDefault methods on interface (33 hours ago) <Kristoffer Andersen> *6f8682c950- [JVM IR] Stabilize accesor names in IR Backend (33 hours ago) <Kristoffer Andersen> *d1c2862e27- IR: Align Interface Defaults with Old Backend (33 hours ago) <Kristoffer Andersen> *b5de625350- Minor refactor: lifting common code (33 hours ago) <Kristoffer Andersen> *6a41700689- [JVM_IR] Fix interface method resolution (33 hours ago) <Kristoffer Andersen> *df96841c9d- (tag: build-1.3.70-dev-2333) Prohibit protected method calls from inline function (33 hours 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
- 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.