*3eeaa07e0c- (tag: build-1.4.30-dev-1359) Sync up plugin.xml AS42 with 202 (vor 2 Stunden) <Vladimir Dolzhenko> *f941733f13- (tag: build-1.4.30-dev-1358) [JVM_IR] Rebase init blocks stepping test that is working as intended. (vor 2 Stunden) <Mads Ager> *a9bc63dece- (tag: build-1.4.30-dev-1337) Drop redundant legacy_name from ide perf tests json stats (vor 35 Stunden) <Vladimir Dolzhenko> *a4fb2a445f- (tag: build-1.4.30-dev-1328) Minor, add spaces to diagnostic message (vor 3 Tagen) <Alexander Udalov> *ac39e4d89c- Minor, add regression test (vor 3 Tagen) <Alexander Udalov> *6f9f437f15- IR: refuse to copy classes in InitializersLowering (vor 3 Tagen) <pyos> *e6c0575d3a- JVM_IR: do not deep-copy suspend lambdas in initializers (vor 3 Tagen) <pyos> *8bc7370b92- (tag: build-1.4.30-dev-1324) ForLoopsLowering: Add PLUSEQ origin to increment to use IINC instructions if possible. (vor 3 Tagen) <Mark Punzalan> *14137cb013- ForLoopsLowering: Remove `additionalNotEmptyCondition` as it is no longer used in UntilHandler. (vor 3 Tagen) <Mark Punzalan> *ccbf7cc2ee- ForLoopsLowering: Use last-exclusive for-loops for optimized `until` progressions instead of decrementing "last". (vor 3 Tagen) <Mark Punzalan> *1adb130509- ForLoopsLowering: Move `isLastInclusive` to HeaderInfo. (vor 3 Tagen) <Mark Punzalan> *a093efde11- Add blackbox test for KT-42533. (vor 3 Tagen) <Mark Punzalan> *375d92cf67- (tag: build-1.4.30-dev-1319) Merge two consequent records in LVT (vor 3 Tagen) <Ilmir Usmanov> *91b8e32d43- (tag: build-1.4.30-dev-1318, origin/rr/pdn_jvmir_abi_tests) Add ABI tests for classes extending Number and CharSequence (vor 3 Tagen) <Dmitry Petrov> *6dd2d8bbdb- (tag: build-1.4.30-dev-1312) JVM_IR drop 'SpecialMethodWithDefaultInfo#needsArgumentBoxing' (vor 3 Tagen) <Dmitry Petrov> *a412596d8e- JVM_IR emulate old back-end behavior in special bridges + inline classes (vor 3 Tagen) <Dmitry Petrov> *92fa13cbab- Workaround for a possible compiler bug in object literals (vor 3 Tagen) <Dmitry Petrov> *23beaa5883- [formatter] add tests for line indent after properties (vor 3 Tagen) <Dmitry Gridin> *434139d986- Revert "Add indent before accessor for extension property (KT-33131)" (vor 3 Tagen) <Dmitry Gridin> *852d705c71- (tag: build-1.4.30-dev-1305) FIR: optimize converting string expressions in raw FIR builder (vor 3 Tagen) <Ilya Kirillov> *5937ffae4d- FIR: optimize checking if placeholder projection for raw FIR builder (vor 3 Tagen) <Ilya Kirillov> *bbc641b390- FIR: do not get statement text for every statement in raw FIR builder (vor 3 Tagen) <Ilya Kirillov> *b1768d805f- (tag: build-1.4.30-dev-1298) [Gradle, JS] Rename dukatMode to externalsOutputFormat (vor 3 Tagen) <Ilya Goncharov> *3ad6d58153- [Gradle, JS] Execute dukat on import in both mode (vor 3 Tagen) <Ilya Goncharov> *0a86beeb64- [Gradle, JS] Add descriptors to dependencies in configurations phase (vor 3 Tagen) <Ilya Goncharov> *af65365d6a- [Gradle, JS] Move gradle post processing after executing of dukat (vor 3 Tagen) <Ilya Goncharov> *4eea52e4e7- [Gradle, JS] Add TaskAction on overriden method for integrated task (vor 3 Tagen) <Ilya Goncharov> *b37414ae0b- [Gradle, JS] Add test on compilation with dukat binaries (vor 3 Tagen) <Ilya Goncharov> *c1fe8defd2- [Gradle, JS] Dukat descriptors (vor 3 Tagen) <Ilya Goncharov> *500fceb438- [Gradle, JS] Add binary dukat mode (vor 3 Tagen) <Ilya Goncharov> *f50851a982- (tag: build-1.4.30-dev-1297) Fix testdata after migrating to NewKotlinTypeCheckerImpl in OverrideResolver (vor 3 Tagen) <Dmitry Savvinov> *f02593074f- Drop isEqualTypeConstructor in favour of areEqualTypeConstructors (vor 3 Tagen) <Dmitry Savvinov> *fc4b488d43- Use NewKotlinTypeChecker in OverridingUtil (vor 3 Tagen) <Dmitry Savvinov> *01d6181050- Add test on overriding declaration with a composite type with expect declaration (vor 3 Tagen) <Dmitry Savvinov> *f8b9011667- Minor: unify error reporting for fun/properties overriding (vor 3 Tagen) <Dmitry Savvinov> *ac63d8b3bf- Unify code for checking return type on override for fun/property (vor 3 Tagen) <Dmitry Savvinov> *736ecf3e9f- Add test case on overriding property of expect-type (vor 3 Tagen) <Dmitry Savvinov> *ac107f362e- Refine types of type parameters before checking their equality in OverridingUtil (vor 3 Tagen) <Dmitry Savvinov> *80f4061a3d- Add test on override with expect in return type (vor 3 Tagen) <Dmitry Savvinov> *f8b8f94040- (tag: build-1.4.30-dev-1296, tag: build-1.4.30-dev-1292) Adjust vega IDE performance test charts (vor 3 Tagen) <Vladimir Dolzhenko> *a6efaf440a- (tag: build-1.4.30-dev-1291) FIR supertypes: replace class phase even if it hasn't unresolved supers (vor 3 Tagen) <Mikhail Glukhikh> *94302614cd- [FIR] Add forgotten resolving status of enum entries (by Dmitry) (vor 3 Tagen) <Mikhail Glukhikh> *5fbe715871- [FIR] Add forgotten replacing resolve phase during type resolve (vor 3 Tagen) <Dmitriy Novozhilov> *1f5797e929- Don't resolve annotation arguments in FirTypeResolveTransformer (vor 3 Tagen) <Mikhail Glukhikh> *6f89385aec- Transform forgotten property annotations in FirTypeResolveTransformer (vor 3 Tagen) <Mikhail Glukhikh> *e5463be6ba- Don't transform parameter default values in FirTypeResolveTransformer (vor 3 Tagen) <Mikhail Glukhikh> *bdec245424- Don't transform enum entry initializer in FirTypeResolveTransformer (vor 3 Tagen) <Mikhail Glukhikh> *880eb6da6c- Don't transform delegated constructor args in FirTypeResolveTransformer (vor 3 Tagen) <Mikhail Glukhikh> *949952e766- (tag: build-1.4.30-dev-1275) kotlinx-metadata: minor, remove incorrect ReplaceWith from IS_PRIMARY deprecation (vor 4 Tagen) <Alexander Udalov> *afd710292a- [JVM_IR] Fix mangling of default argument stubs for internal methods. (vor 4 Tagen) <Mads Ager> *8c88670185- (tag: build-1.4.30-dev-1270) FIR: copy constructor for typealias'ed inner/nested class (vor 4 Tagen) <Jinseong Jeon>
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.