*e9e3df23fc- (HEAD -> master, tag: build-1.3.60-dev-1210, origin/master, origin/HEAD) Fix typos and improve grammar in stdlib readmes (#2527) (3 days ago) <Yanis Batura> *ad8bcda99e- (tag: build-1.3.60-dev-1206) [IR] Merged K/N inliner with the common one (3 days ago) <Igor Chevdar> *32153c26a8- (tag: build-1.3.60-dev-1198, origin/rr/4u7/publishing-fixes-before) Build: Rewrite upload_plugins.gradle in Kotlin (3 days ago) <Vyacheslav Gerasimov> *af2cd36c3d- Build: Rename upload_plugins.gradle -> kts (3 days ago) <Vyacheslav Gerasimov> *fba22606e6- (tag: build-1.3.60-dev-1197) Introduce erroneous operators ClockMark.minus/compareTo(ClockMark) (3 days ago) <Ilya Gorbunov> *ac07cb686b- Change status of ExperimentalTime API to a more risky one (3 days ago) <Ilya Gorbunov> *a985402507- Introduce ClockMark.hasPassedNow, hasNotPassedNow functions (3 days ago) <Ilya Gorbunov> *44195d436e- Rename: Clock.markNow, ClockMark.elapsedNow (3 days ago) <Ilya Gorbunov> *a493d46a6e- Make effectively private properties actually private to avoid accessors (3 days ago) <Ilya Gorbunov> *f889d25287- Introduce TestClock.plusAssign(Duration) and hide implementation details (3 days ago) <Ilya Gorbunov> *4de9361c37- Introduce Duration.isPositive method (3 days ago) <Ilya Gorbunov> *4befca95d6- (tag: build-1.3.60-dev-1176) Add an ability to switch between old and new J2K via settings window (3 days ago) <Ilya Kirillov> *3b8da0afe4- (tag: build-1.3.60-dev-1175) Update dukat dependency to 0.0.16 (3 days ago) <Shagen Ogandzhanian> *1aa8e28dd8- (tag: build-1.3.60-dev-1155) Add JvmOverloads to KtLightClassImpl (4 days ago) <Igor Yakovlev> *8e6a80bed7- (tag: build-1.3.60-dev-1154) Add test logs specific for IC with JS IR (4 days ago) <Alexey Tsvetkov> *12c209d360- Do not compare output for IC with JS IR BE (4 days ago) <Alexey Tsvetkov> *3366ac4b18- Save incremental data with KLIB compiler (4 days ago) <Alexey Tsvetkov> *fc49510049- Add tests for IC with JS IR BE (4 days ago) <Alexey Tsvetkov> *9572800ef7- Add missing dependency (4 days ago) <Alexey Tsvetkov> *b5a407371c- (tag: build-1.3.60-dev-1145) Update the year in LICENSE.txt (4 days ago) <Stanislav Erokhin> *d59b910403- (tag: build-1.3.60-dev-1139) Add tests for obsolete issues (4 days ago) <Mikhail Zarechenskiy> *1969ad6e9d- [NI] Take into account use-site variance for constraint from LHS of CR (4 days ago) <Mikhail Zarechenskiy> *0620762b97- (tag: build-1.3.60-dev-1137) Enable new inference explicitly for MPP tests with type refinement (4 days ago) <Mikhail Zarechenskiy> *735e1ecec1- Disable new inference for IDE analysis by default in releases (4 days ago) <Mikhail Zarechenskiy> *69942681a3- Refactoring: move `versioning.kt` file to `idea-analysis` module (4 days ago) <Mikhail Zarechenskiy> *50e7ff4097- Refactoring: move `isSnapshot` function closer to similar ones (4 days ago) <Mikhail Zarechenskiy> *2c0d6ab1a5- (tag: build-1.3.60-dev-1135) [Compatibility] Restore GradleBuildScriptManipulator.addKotlinLibraryToModuleBuildScript(scope, libraryDescriptor) #KT-33336 Fixed (4 days ago) <Dmitry Gridin> *63895483fd- (tag: build-1.3.60-dev-1131) Fix take method from iterating one extra element (KT-32024) (4 days ago) <Abduqodiri Qurbonzoda> *01a613dca4- (tag: build-1.3.60-dev-1129) Add tests for floating-point to integral conversion (4 days ago) <Abduqodiri Qurbonzoda> *432828a2db- Clarify floating-point to integral conversion rounding behaviour (4 days ago) <Abduqodiri Qurbonzoda> *fd5bf33861- (tag: build-1.3.60-dev-1128) Removed asserts for mirror files for java stubs on kt files (5 days ago) <Igor Yakovlev> *8cfdd140bb- (tag: build-1.3.60-dev-1121) Upgrade plugin-repository-rest-client & use token auth (5 days ago) <Vyacheslav Gerasimov>
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 10.2
- 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
To include Kotlin/Native Shared in a composite build and build against
it, use the sharedProjectPath project property:
./gradlew dist -PsharedProjectPath=path/to/kotlin/native/shared
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.