*cc4d93ac71- (HEAD -> master, tag: build-1.4.30-dev-1638, origin/master, origin/HEAD) [IR] Eliminated expensive calculating of fqNames (#3815) (vor 3 Tagen) <LepilkinaElena> *4f5b2b8e22- (tag: build-1.4.30-dev-1637) Uncomment accidentally commented code in debugger tests (vor 3 Tagen) <Ilya Kirillov> *318d11dcec- (tag: build-1.4.30-dev-1633, origin/rr/gorshenev/tmp_rebase) [JVM_IR] Remove muting of fwBackingField. (vor 3 Tagen) <Mads Ager> *0505bd958a- [JVM] Fix the nop removal optimization. (vor 3 Tagen) <Mads Ager> *69127445a3- (tag: build-1.4.30-dev-1631) JVM_IR: refine the condition for caching method nodes (vor 3 Tagen) <pyos> *d6e0d2a55b- (tag: build-1.4.30-dev-1618) [Gradle, JS] Fix K/JS project build with configuration cache (part 2) (vor 3 Tagen) <Alexander.Likhachev> *d7db643422- (tag: build-1.4.30-dev-1615) Add box test for KT-33992 (vor 3 Tagen) <Roman Artemev> *023a62395a- Add box test for KT-36897 (vor 3 Tagen) <Roman Artemev> *5e406e8803- (tag: build-1.4.30-dev-1613) [FIR-IDE] Unmute passing test (vor 3 Tagen) <Dmitriy Novozhilov> *9f5191f2a1- [FIR-IDE] Regenerate tests (vor 3 Tagen) <Dmitriy Novozhilov> *8cb08139e1- [FIR-IDE] Add example flag for enabling fir ide to gradle.properties (vor 3 Tagen) <Dmitriy Novozhilov> *0e47d32587- [FIR] Properly set type of constants for java declarations (vor 3 Tagen) <Dmitriy Novozhilov> *5f641a2552- [FIR] Add wrapping scopes with forced calculator in checkers and fir2ir (vor 3 Tagen) <Dmitriy Novozhilov> *e75f218f87- [FIR] Rename FirDeclarationOrigin.FakeOverride to SubstitutionOverride (vor 3 Tagen) <Dmitriy Novozhilov> *739ebf772c- [FIR] Add configuring FakeOverrideTypeCalculator into ConeKotlinType.scope (vor 3 Tagen) <Dmitriy Novozhilov> *fc23cf76d4- [FIR] Force calculation of return type of fake overrides in return type calculator (vor 3 Tagen) <Dmitriy Novozhilov> *f9faa5be64- [FIR] Don't force calculation of return type in substitution scope (vor 3 Tagen) <Dmitriy Novozhilov> *06981fc0af- [FIR] Move functions for fake override creating to separate objects (vor 3 Tagen) <Dmitriy Novozhilov> *1c2fdf7e3f- [FIR] Remove scope session from FirClassSubstitutionScope constructor (vor 3 Tagen) <Dmitriy Novozhilov> *9e863c90fc- [FIR] Remove redundant default values for functions in FirClassSubstitutionScope (vor 3 Tagen) <Dmitriy Novozhilov> *e07f63d26c- [FIR] Move declaration attributes to declaration builders (vor 3 Tagen) <Dmitriy Novozhilov> *0b51fd03e2- [FIR] Add failing test for incorrect type calculation of implicit types (vor 3 Tagen) <Dmitriy Novozhilov> *23f1cc6b07- [FIR] Get rid of ReturnTypeCalculator in ScopeSession (vor 3 Tagen) <Dmitriy Novozhilov> *fae1b70605- [FIR] Fix type of this reference in `copy` funciton of data class (vor 3 Tagen) <Dmitriy Novozhilov> *0616f948c7- (tag: build-1.4.30-dev-1612) Use actual form of decodeSerializableElement function in 'decodeSequentially' (vor 3 Tagen) <Leonid Startsev> *1bb2eefcaa- (tag: build-1.4.30-dev-1610) Fix find usages test testdata adding FIR_COMPARISON directive (vor 3 Tagen) <Ilya Kirillov> *1bc52c195c- (tag: build-1.4.30-dev-1609) [Gradle, JS] Uninternal _target in js extension (vor 3 Tagen) <Ilya Goncharov> *0b6959ee3d- (tag: build-1.4.30-dev-1606) [Gradle, K/N] Deprecate K/N compile classpath prop in favor of libraries (vor 3 Tagen) <Alexander.Likhachev> *f4da283ffb- [Gradle, K/N] Move build cache tests into appropriate class (vor 3 Tagen) <Alexander.Likhachev> *a0f4898009- [Gradle, K/N] Make compile and link tasks cacheable (vor 3 Tagen) <Alexander.Likhachev> *a9b53adc50- (tag: build-1.4.30-dev-1604) JVM_IR: make `primitive == object` slightly less lazy. (vor 3 Tagen) <pyos> *4c09906235- (tag: build-1.4.30-dev-1603) Build: add kotlin.build.useIRForLibraries to enable JVM IR for libraries separately (vor 3 Tagen) <Alexander Udalov> *29d8730964- Build: when using JVM IR, produce stable binaries (vor 3 Tagen) <Alexander Udalov> *04a4f9cde6- (tag: build-1.4.30-dev-1600) Minor: cover negative cases with test +m (vor 3 Tagen) <Pavel Kirpichenkov> *9669ab1468- Report warning on @JvmStatic in private companion objects (vor 3 Tagen) <Pavel Kirpichenkov> *d769ca06ab- Add test for KT-25114 (vor 3 Tagen) <Pavel Kirpichenkov> *c6da2a1138- (tag: build-1.4.30-dev-1597) Reuse built functional types for postponed arguments by expected types and paths from a top level type variable (vor 3 Tagen) <Victor Petukhov> *ee5edf4caa- (tag: build-1.4.30-dev-1596, origin/rr/pdn_jvmir_abi_ic_remove_int) JVM_IR fix 'remove' in inline class implementing MutableCollection (vor 3 Tagen) <Dmitry Petrov> *95edcea9a9- (tag: build-1.4.30-dev-1579) Build: fix kotlinx-metadata-jvm publication (vor 4 Tagen) <Alexander Udalov> *8dd80fe3c9- (tag: build-1.4.30-dev-1578) Wizard: fix maven testdata (vor 4 Tagen) <Ilya Kirillov> *394245ba4c- Wizard: do not run compose tests for Groovy dsl (vor 4 Tagen) <Ilya Kirillov> *ec1528e742- Wizard: use custom Kotlin version for compose project (vor 4 Tagen) <Ilya Kirillov> *b0bb03d761- Wizard: return junit back to android target (vor 4 Tagen) <Ilya Kirillov> *42914b4046- Wizard: add resolutionStrategy for mpp library template (vor 4 Tagen) <Ilya Kirillov> *f5d638eb8f- Wizard: do not create empty local.properties file (vor 4 Tagen) <Ilya Kirillov> *aeff3c2682- Wizard: regenerate tests (vor 4 Tagen) <Ilya Kirillov> *b7017c233e- Wizard: use different Kotlin version for compose templates (vor 4 Tagen) <Ilya Kirillov> *1cc007fcbf- Wizard: introduce Compose MPP template (vor 4 Tagen) <Ilya Kirillov> *7422690ea1- Wizard: fix InvalidModuleDependencyError error message (vor 4 Tagen) <Ilya Kirillov> *2a5679e0c6- Wizard: make project templates list scrollable (vor 4 Tagen) <Ilya Kirillov> *db069c3264- Wizard: add compose desktop template (vor 4 Tagen) <Ilya Kirillov> *d547cb9ee6- Wizard: introduce mobile mpp module template & allow module templates for mpp modules (vor 4 Tagen) <Ilya Kirillov> *ac6b9e4aa0- Wizard: add android extensions plugin only by flag (vor 4 Tagen) <Ilya Kirillov> *ed924a1c99- Wizard: change custom maven repositories rendering (vor 4 Tagen) <Ilya Kirillov> *31dac65a39- Wizard: remove extra line break in build files (vor 4 Tagen) <Ilya Kirillov> *9948c265df- Wizard: add setting to hide version & groupId in gradle (vor 4 Tagen) <Ilya Kirillov> *d3e99bd7a7- Wizard: simplify custom maven repository syntax for Gradle (vor 4 Tagen) <Ilya Kirillov> *3ef12e32ee- Wizard: update libraries versions (vor 4 Tagen) <Ilya Kirillov> *fa8951c19e- Wizard: move common repositories to the allprojects section (vor 4 Tagen) <Ilya Kirillov> *e824199169- Wizard: remove resolutionStrategy from settings.gradle (vor 4 Tagen) <Ilya Kirillov> *8b89eb5dc8- Wizard: clean activity_main.xml & AndroidManifest.xml files (vor 4 Tagen) <Ilya Kirillov> *733cd8891a- Wizard: simplify android configuration (vor 4 Tagen) <Ilya Kirillov> *4858b72a8d- (tag: build-1.4.30-dev-1577) Bump junit from 4.11 to 4.13.1 in /libraries (vor 4 Tagen) <dependabot[bot]> *f69928d2b1- Bump junit (vor 4 Tagen) <dependabot[bot]> *845d6ae063- Bump junit in /libraries/tools/kotlin-maven-plugin/src/it/simple (vor 4 Tagen) <dependabot[bot]> *b778298486- Bump junit (vor 4 Tagen) <dependabot[bot]> *f3c26af0c7- Bump junit (vor 4 Tagen) <dependabot[bot]> *c2ed625f25- Bump junit (vor 4 Tagen) <dependabot[bot]> *e9255c8f17- Bump junit (vor 4 Tagen) <dependabot[bot]> *41123be3a2- (tag: build-1.4.30-dev-1575) Bump junit (vor 4 Tagen) <dependabot[bot]> *3f27bb374a- Bump junit (vor 4 Tagen) <dependabot[bot]> *fb7736377c- Bump junit (vor 4 Tagen) <dependabot[bot]> *df202c9b3f- Bump junit (vor 4 Tagen) <dependabot[bot]> *7fe9966e02- Bump junit (vor 4 Tagen) <dependabot[bot]> *046ed1e08c- (tag: build-1.4.30-dev-1573) Bump junit (vor 4 Tagen) <dependabot[bot]> *0396ed29cc- Bump junit (vor 4 Tagen) <dependabot[bot]> *2a9e6df9b1- Bump junit (vor 4 Tagen) <dependabot[bot]> *1bf2a6b013- Bump junit (vor 4 Tagen) <dependabot[bot]> *797c02e1cb- Bump junit (vor 4 Tagen) <dependabot[bot]> *916f9766ad- (tag: build-1.4.30-dev-1572) Bump junit (vor 4 Tagen) <dependabot[bot]> *c012b16430- Bump junit (vor 4 Tagen) <dependabot[bot]> *74ad4eb00e- Bump junit (vor 4 Tagen) <dependabot[bot]> *e888f54ae8- Bump junit (vor 4 Tagen) <dependabot[bot]> *1ca5bef7e6- (origin/dependabot/maven/libraries/tools/kotlin-maven-plugin-test/src/it/test-helloworld/junit-junit-4.13.1) Bump junit (vor 6 Tagen) <dependabot[bot]> *209d5fd6c9- Bump junit (vor 4 Tagen) <dependabot[bot]> *c8e84f82eb- (tag: build-1.4.30-dev-1564) Proper check NON_JVM_DEFAULT_OVERRIDES_JAVA_DEFAULT in new jvm-default modes (vor 4 Tagen) <Mikhael Bogdanov> *b6dc99b98e- Skip java defaults in EXPLICIT_OVERRIDE_REQUIRED_IN_MIXED_MODE check (vor 4 Tagen) <Mikhael Bogdanov> *a60febbdfb- (tag: build-1.4.30-dev-1559) KotlinMPPGradleProjectResolver: Ensure that artifactsMap is populated when Android plugin applied (vor 4 Tagen) <sebastian.sellmair> *b42795a9ea- (tag: build-1.4.30-dev-1557) Bump 'com.gradle.plugin-publish' from 0.11.0 to 0.12.0 (#3853) (vor 4 Tagen) <Victor Turansky> *09acea5548- (tag: build-1.4.30-dev-1555) [FIR]: Set proper classId to enum entries (vor 4 Tagen) <Juan Chen> *ed188204b4- (tag: build-1.4.30-dev-1551) FIR checker: make property init analyzer path-sensitive (vor 4 Tagen) <Jinseong Jeon> *6fc3f7e776- FIR CFG: label edges from try-enter through finally block to exit target (vor 4 Tagen) <Jinseong Jeon> *43852ad7ab- FIR CFG: add edges from try/catch to finally (vor 4 Tagen) <Jinseong Jeon> *ea2f773e54- FIR checker: reproduce KT-42350 (vor 4 Tagen) <Jinseong Jeon> *da69e3db7c- (tag: build-1.4.30-dev-1550) kotlinx-metadata-jvm: report error on using metadata version < 1.4 in writers (vor 4 Tagen) <Alexander Udalov> *5d7d9beb0d- kotlinx-metadata-jvm: remove bytecodeVersion from write methods (vor 4 Tagen) <Alexander Udalov> *90d66b0ba5- kotlinx-metadata: reformat, cleanup, fix inspections (vor 4 Tagen) <Alexander Udalov> *c89c31cd29- (tag: build-1.4.30-dev-1549) [KLIB] Fix package name (js -> common) (vor 4 Tagen) <Roman Artemev> *07a1124b99- [KLIB] Support error code in metadata (vor 4 Tagen) <Roman Artemev> *f4830c88b9- [JS IR] Make error code tests modular (vor 4 Tagen) <Roman Artemev> *0f7032051b- [JS IR] Fix klib generation (proper order of flags) (vor 4 Tagen) <Roman Artemev> *a4945878aa- [KLIB] Pass `containsErrorCode` flag from library/IC cache into deserializer (vor 4 Tagen) <Roman Artemev> *28c6d17ab4- [KLIB] Mark klib that contains error with special flag (vor 4 Tagen) <Roman Artemev> *98e5510871- [KLIB] Support IrError* nodes in serialization (vor 4 Tagen) <Roman Artemev> *934141f8af- [KLIB] Support IrError* nodes in klib proto (vor 4 Tagen) <Roman Artemev> *8ce497c7ef- [IR] Add wrapped descriptor for error declaration (vor 4 Tagen) <Roman Artemev> *eacc94a89d- (tag: build-1.4.30-dev-1533) Do not hide synthetic properties except `isEmpty` from Java (vor 4 Tagen) <Mikhail Zarechenskiy> *4227e2dc40- (tag: build-1.4.30-dev-1519) [Cocoapods] Fix task and directory naming to avoid subspecs collision (vor 4 Tagen) <Yaroslav Chernyshev> *b8817d5884- (tag: build-1.4.30-dev-1517) FIR2IR: clean up dead code regarding overriding utils (vor 4 Tagen) <Jinseong Jeon> *5f64d6ec76- FIR2IR: add support for callable reference to Java field (vor 4 Tagen) <Jinseong Jeon> *65545a10c4- FIR: reproduce KT-42656 (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.