*ba93bdb14d- (tag: build-1.3.70-dev-1666) JVM_IR: keep the $default suffix for stubs for @JvmName functions (3 days ago) <pyos> *23dfade24f- (tag: build-1.3.70-dev-1664) JVM IR: Fix inlining of inline class properties in external modules (3 days ago) <Steven Schäfer> *fa62d0c325- (tag: build-1.3.70-dev-1656) Don't clear InBlockModifications on CanceledException (3 days ago) <Vladimir Dolzhenko> *92dae5d8a9- (tag: build-1.3.70-dev-1653) [NI] Split substitution of inferred type parametes into two steps (3 days ago) <Pavel Kirpichenkov> *b6af13f18d- [NI] Add missing substitution of known type parameters (3 days ago) <Pavel Kirpichenkov> *3122f2704c- [Minor] Refactor resulting descriptor substitution in call transformer (3 days ago) <Pavel Kirpichenkov> *ea66f02035- [Minor] Rename fresh variable substitutor in resolved atom (3 days ago) <Pavel Kirpichenkov> *25f3de2085- (tag: build-1.3.70-dev-1651) Use more stable kotlin dependency in tests for enabling inline classes flag (3 days ago) <victor.petukhov> *4438dd282f- (tag: build-1.3.70-dev-1647) [kotlinx-metadata-klib] Bugfixes: (3 days ago) <Sergey Bogolepov> *95399b3a41- (tag: build-1.3.70-dev-1639, origin/rr/gradle/ilgonmic/debugger-js) Introduce `kotlinx-metadata-klib`. (3 days ago) <Sergey Bogolepov> *d91453fb7a- (tag: build-1.3.70-dev-1635) Do not preprocess apiVersionIsAtLeast calls inlined into kotlin package (3 days ago) <Ilya Gorbunov> *352a10a0ed- (tag: build-1.3.70-dev-1629) Do not fail tests on unknown version of gradle Kotlin plugin (4 days ago) <Andrey Uskov> *e963b71921- Tests of import with latest gradle plugin are implemented (4 days ago) <Andrey Uskov> *51590ef1b7- Migrate import tests to annotation-driven determination of target kotlin plugin versions (4 days ago) <Andrey Uskov> *d05f893233- Import tests with gradle 5.6.4 were added (4 days ago) <Andrey Uskov> *a51e2ca4d6- Limit initial heap of gradle daemon in import tests (4 days ago) <Andrey Uskov> *1f2767ae21- Remove gradle testing import from gradle 3.x (4 days ago) <Andrey Uskov> *48f6207d26- Support annotation-based declaration of target plugin and gradle version in gradle importing tests (4 days ago) <Andrey Uskov> *14aa0eae71- Extract kotlin gradle plugin versions to constants in tests (4 days ago) <Andrey Uskov> *633005fb57- (tag: build-1.3.70-dev-1627) KT-25732 Perform keywords completion earlier to complete them before freeze (4 days ago) <Roman Golyshev> *36ca280b86- (tag: build-1.3.70-dev-1624) Fix compilation error in ResolveInlineCalls.kt (4 days ago) <Alexander Udalov> *635add4823- FIR substitution: generate fake overrides for accessor symbols (4 days ago) <Mikhail Glukhikh> *bd70daa3d1- FIR Java: use definitely not-null types for type parameters (4 days ago) <Mikhail Glukhikh> *63f38bb28a- FIR [rendering only]: render fake overrides for properties (4 days ago) <Mikhail Glukhikh> *4733c78a6a- (tag: build-1.3.70-dev-1621) [FIR] Add `toString()` to `ErrorTypeConstructor` and `ConeClassifierLookupTag` (4 days ago) <Dmitriy Novozhilov> *944be132de- [FIR-TEST] Add test with calling constructor of type with aliased import (4 days ago) <Dmitriy Novozhilov> *d9fe70f97c- [FIR] Fix binding overrides with flexible types in arguments (4 days ago) <Dmitriy Novozhilov> *3a7251a90b- [FIR-TEST] Add test with problems in mapping getter name to property name (4 days ago) <Dmitriy Novozhilov> *6f9e576502- [FIR-TEST] Add test with ambiguity on accidental override property (4 days ago) <Dmitriy Novozhilov> *f43d77d422- [FIR-TEST] Move `nestedClassConstructor` test to `problems` test suite (4 days ago) <Dmitriy Novozhilov> *2409a74fb5- [FIR-TEST] Add test for problem with += and java synthetic property (4 days ago) <Dmitriy Novozhilov> *11063a25a8- [FIR] Replace FirEmptyDiagnostic with FirStubDiagnostic (4 days ago) <Dmitriy Novozhilov> *ee20f88837- [FIR] Propagate smartcasts in safe calls chain (4 days ago) <Dmitriy Novozhilov> *833648d8e0- [FIR] Fix smartcasts on receivers of implict invoke call (4 days ago) <Dmitriy Novozhilov> *660bcce90a- [FIR] Add smartcasts for reassigned vars (4 days ago) <Dmitriy Novozhilov> *2a74e37e28- [FIR] Ignore expected type for resolve constant expressions (4 days ago) <Dmitriy Novozhilov> *6a3c07688f- Add print of detailed stack trace to NonFir modularized test (4 days ago) <Dmitriy Novozhilov> *a235dd2891- (tag: build-1.3.70-dev-1618) IR: move defaultParameterDeclarationsCache access up one level (4 days ago) <pyos> *70f09a7531- IR: make DefaultArgumentStubGenerator a few lines shorter (4 days ago) <pyos> *2b2dd097a3- IR: refactor DefaultParameterInjector (4 days ago) <pyos> *7a2715da44- IR: refactor generateDefaultsFunction (4 days ago) <pyos> *29a14e2330- (tag: build-1.3.70-dev-1616) JVM_IR: resolve inline fake overrides before codegen (4 days ago) <pyos> *1b2091d536- (tag: build-1.3.70-dev-1612) Fix: KLIB reading error on Windows (4 days ago) <Dmitriy Dolovov> *77950c5410- (tag: build-1.3.70-dev-1607) [Gradle, JS] Remove redundant from kotlin-test-js-runner (4 days ago) <Ilya Goncharov> *6a6bef0f6c- [Debugger, JS] Remove kotlin source map support from tests and build (4 days ago) <Ilya Goncharov> *35cb412dc3- [Gradle, JS] Fix source map support initializing for mocha (4 days ago) <Ilya Goncharov> *4e427d2ce4- [Gradle, JS] Fix source map support initializing for nodejs (4 days ago) <Ilya Goncharov> *20e33806ec- [Debugger, JS] Provide possibility to debug mocha tests (4 days ago) <Ilya Goncharov> *30b4622a45- (tag: build-1.3.70-dev-1601) Remove invalid unused reference (4 days ago) <Igor Yakovlev> *c905bbca36- (tag: build-1.3.70-dev-1597) Scripting: invalidate caches on roots changes (4 days ago) <Sergey Rostov> *b0327964b7- (tag: build-1.3.70-dev-1590) Fix compilation on 183 and as34 (4 days ago) <Denis Zharkov> *c7e9a6c5d9- (tag: build-1.3.70-dev-1587) Add new script dependency resolvers (4 days ago) <Anatoly Nikitin> *81e2e119e2- Fix propagation of dependency resolution failure reports during script compilation (4 days ago) <Anatoly Nikitin> *744dfc6bf9- (tag: build-1.3.70-dev-1585) Minor. Pass proper timeout to logger (4 days ago) <Mikhael Bogdanov> *4281fd6bd5- (tag: build-1.3.70-dev-1584) Don't write nop for extension lambda during inline (4 days ago) <Mikhael Bogdanov> *b757224df1- (tag: build-1.3.70-dev-1583) Scripting: invalidate caches on roots changes (4 days ago) <Sergey Rostov> *df0c250fd8- Scripting: fix lost caches clearing call (4 days ago) <Sergey Rostov> *542f21b701- Scripting, minor: cache firstScriptSdk (4 days ago) <Sergey Rostov> *ab3f9586b3- (tag: build-1.3.70-dev-1580) Suspend function calls highlighting added. (4 days ago) <Vladimir Ilmov> *46423443e9- 'it' parameter highlighting fixed for chain usage. (4 days ago) <Vladimir Ilmov> *fb9fb2e048- (tag: build-1.3.70-dev-1578) JVM IR: minor, remove obsolete code (5 days ago) <Alexander Udalov> *180e718752- JVM IR: minor, repurpose JvmBackendContext.getLocalClassInfo to store Type (5 days ago) <Alexander Udalov> *6be9101675- JVM IR: add jvmLocalClassExtractionPhase to lift out local classes from initializers (5 days ago) <Alexander Udalov> *c5159d9cbe- (tag: build-1.3.70-dev-1576) IR: Add UniqId to IrSymbol (5 days ago) <Georgy Bronnikov> *1647279a8c- IR: move UniqId to ir.tree module (5 days ago) <Georgy Bronnikov> *76016b1a3c- IR: move KotlnMangler to ir.tree module (5 days ago) <Georgy Bronnikov> *92ebb092a2- JvmMangler (5 days ago) <Georgy Bronnikov> *2f5442800b- Move WrappedDescriptors to ir.tree module (5 days ago) <Georgy Bronnikov> *cb11282183- (tag: build-1.3.70-dev-1573) Merge pull request #2516 from t-kameyama/KT-18539 (5 days ago) <igoriakovlev> |\ | *4d9b19da82- Remove comments from function/property implementation template (5 days ago) <Toshiaki Kameyama> *3429c07016- (tag: build-1.3.70-dev-1564) Fix Native dependencies not transformed when imported from a source set (5 days ago) <Sergey Igushkin> *94f66c237b- (minor) replace the predicate for intermediate source set (5 days ago) <Sergey Igushkin> *bcabbcf3e1- Add Native stdlib to intermediate source set dependencies (5 days ago) <Dmitry Savvinov> *1ccda6a8d4- Add fast find usages for data class components (5 days ago) <Igor Yakovlev> *6d9c00addd- (tag: build-1.3.70-dev-1558) Do not add preparation task to project import if registry option is switched off (5 days ago) <Natalia Selezneva> *455b9f852d- (tag: build-1.3.70-dev-1554) [NI] Disable caching of LHS expression types for "+=" operators (5 days ago) <Mikhail Zarechenskiy> *4973baae4e- (tag: build-1.3.70-dev-1551) [JVM IR] Fix JvmOverloads+Parameterless Main (5 days ago) <Kristoffer Andersen> *b4185c9d47- (tag: build-1.3.70-dev-1543) ScriptClassRootsCache: load configuration if it is not cached (5 days ago) <Sergey Rostov> *a84e948051- Scripting: pass KtFile to ScriptConfigurationLoader (5 days ago) <Sergey Rostov> *9a231bbbfa- (tag: build-1.3.70-dev-1537) Update trailing lambda quickfix, add tests (5 days ago) <Pavel Kirpichenkov> *f1934fa49d- Amend "Terminate preceding call with semicolon" quickfix (5 days ago) <Pavel Kirpichenkov> *0f638db3e5- (tag: build-1.3.70-dev-1536) FIR: Turn SupertypeSupplier into a class (5 days ago) <Denis Zharkov> *56b5d170eb- FIR: Minor. Rename FirSupertypeResolverTransformerAdapter -> FirSupertypeResolverTransformer (5 days ago) <Denis Zharkov> *3a4f9e9109- FIR: Drop FirClassLikeDeclaration::supertypesComputationStatus (5 days ago) <Denis Zharkov> *2fba6b54a0- FIR: Minor. Drop old FirSupertypeResolverTransformer (5 days ago) <Denis Zharkov> *3f7bffa6fd- FIR: Do not use FirClass::supertypesComputationStatus (5 days ago) <Denis Zharkov> *5e0e78e555- FIR: Rewrite supertype resolution (5 days ago) <Denis Zharkov>
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.