*9a55f418fa- (tag: build-1.3.70-dev-1526) IR: extract StaticInitializersLowering out of InitializersLowering (15 hours ago) <Alexander Udalov> *098561dd5f- IR: cleanup InitializersLowering.kt (15 hours ago) <Alexander Udalov> *9772de0088- JVM IR: generate kotlin.Metadata.packageName value for JvmPackageName files (16 hours ago) <Alexander Udalov> *808000e458- (tag: build-1.3.70-dev-1525) Implement warning when non-abstract classes containing abstract members invisible from that classes (16 hours ago) <Ilya Chernikov> *eae3688c61- (tag: build-1.3.70-dev-1524) [FIR] Fix collecting approved data flow info from rhs of boolean operator (16 hours ago) <Dmitriy Novozhilov> *8d6cfdf0b1- [FIR] Fix passing data flow info from while loop condition (16 hours ago) <Dmitriy Novozhilov> *7ef13caa33- [FIR] Add test for ambiguity in nested class constructor call (16 hours ago) <Dmitriy Novozhilov> *e9551e2022- [FIR] Don't generate setter by delegate for vals (16 hours ago) <Dmitriy Novozhilov> *2f2aa4ae83- [FIR] Create error type instead of implicit type for incorrect functional types (16 hours ago) <Dmitriy Novozhilov> *cf61a6c30f- [FIR] Add support of multiple condition branches to exhaustiveness checker (16 hours ago) <Dmitriy Novozhilov> *86570a2f91- [KLIB] Promote ABI version (16 hours ago) <Roman Artemev> *63110ab636- [IR] Remove deprecated `correspondingProperty` from IrField (16 hours ago) <Roman Artemev> *646df8d40a- [IR BE] Get rid of descriptor usage in KCallable name property lowering (16 hours ago) <Roman Artemev> *ec1c2eb42d- [IR] Remove deprecated `correspondingProperty` from IrSimpleFunction (16 hours ago) <Roman Artemev> *a343a57207- [IR] Refactor ir infrastructure - Remove range-based uniq id indexes using to link built ins - Limit KotlinType usages, replace them with corresponding IrType (16 hours ago) <Roman Artemev> *90d07eee53- [IR] Move wrapped descriptors from `backend.common` to `ir.descriptors` (16 hours ago) <Roman Artemev> *ed79ab68ab- [IR] Remove DeclarationDescriptor from IrExpression* tree API (16 hours ago) <Roman Artemev> *d4fc7fcd96- [IR] Get rid of substituted descriptor from IrMemberAccessExpression interface (16 hours ago) <Roman Artemev> *b391c066d6- [IR] Pass class Type Parameters into IrConstructorCall factory explicitly to avoid unexpected crash on uninitialized parent in psi2ir phase (16 hours ago) <Roman Artemev> *ba373c67d7- [IR] Remove FunctionDescriptor from IrCall-like node's constructor interface (16 hours ago) <Roman Artemev> *bf367003f9- [IR] Make IrMemberAccessExpression be IrDeclarationReference (16 hours ago) <Roman Artemev> *eee594101a- [IR] Remove superQualifier property from IrCall (16 hours ago) <Roman Artemev> *ea5b529d19- (tag: build-1.3.70-dev-1522) Check default parameters of expect suspend functions on original (17 hours ago) <Ilmir Usmanov> *633d1c9ea3- (tag: build-1.3.70-dev-1518) Merge pull request #2773 from t-kameyama/KT-28607 (18 hours ago) <igoriakovlev> |\ | *d04f88ff66- (origin/rr/Alefas/KT-28607) Extract/Introduce variable: fix to work correctly if caret is before right parenthesis or comment (31 hours ago) <Toshiaki Kameyama> * |42c4591df8- (tag: build-1.3.70-dev-1510) [JS IR] Add -Xgenerate-dts CLI argument (18 hours ago) <Svyatoslav Kuzmich> * |e81fbe0a05- (tag: build-1.3.70-dev-1501) Folding: fold function with expression body (KT-6316) (21 hours ago) <Toshiaki Kameyama> * |58fb1dede3- Multiline string enter handler: do not insert 'trimIndent()' in const (KT-34785) (21 hours ago) <Toshiaki Kameyama> * |ce0fb662c0- (tag: build-1.3.70-dev-1497) JVM_IR: fold inline lambdas when computing OUTERCLASS (22 hours ago) <pyos> * |f906524d76- (tag: build-1.3.70-dev-1495) Mark a SAM conversion test as JVM-only (22 hours ago) <pyos> * |c66b6b6a3a- (tag: build-1.3.70-dev-1485, tag: build-1.3.70-dev-1481) FIR visibility check: support companion private members correctly (25 hours ago) <Mikhail Glukhikh> * |e96aeb77a6- FIR visibility check: support private class members (25 hours ago) <Mikhail Glukhikh> * |a5ad05083a- Add some stubs for FIR visibility checking (25 hours ago) <Mikhail Glukhikh> * |7e07b88eab- (tag: build-1.3.70-dev-1480) Code cleanup: FirCallResolver (26 hours ago) <Mikhail Glukhikh> * |ac13a8c8b2- Cone conflict resolver: extract JVM equivalent call filtering to a separate class (26 hours ago) <Mikhail Glukhikh> * |96c5003a13- Cone conflict resolver: filter equivalent top-level callables (26 hours ago) <Mikhail Glukhikh> * |dc10d25661- (tag: build-1.3.70-dev-1479) Ensure ForLoopsLowering only handles the CharSequence.iterator() extension function from the standard library (kotlin.text.iterator()). (27 hours ago) <Mark Punzalan> |/ *1bd861c5eb- (tag: build-1.3.70-dev-1471) Save use_ni key state to log (2 days ago) <Simon Ogorodnik> *57a674e9e6- (tag: build-1.3.70-dev-1468) Make fast class files reading mode default in compiler tests (2 days ago) <Alexander Udalov> *dde2d08cfc- (tag: build-1.3.70-dev-1460) FIR resolve: add extra test for generic with bounds in Java (2 days ago) <Mikhail Glukhikh> *f66b2ca772- FIR resolve: add forgotten constraint subsystem from generic qualified access (2 days ago) <Mikhail Glukhikh> *26281bfe89- FIR Java: use different names for anonymous parameters (p0, p1, p2, ...) (2 days ago) <Mikhail Glukhikh> *c657d46437- FIR Java: add nullable (instead of not-null) type parameter bounds (2 days ago) <Mikhail Glukhikh> *db11c14fee- FIR Java: don't add type parameter bounds multiple times (2 days ago) <Mikhail Glukhikh> *a18da68171- (tag: build-1.3.70-dev-1457) Remove redundant `toList` call in `LazyJavaPackageScope` (2 days ago) <Roman Golyshev> *82fb5c4d19- (tag: build-1.3.70-dev-1456) JVM_IR: move lambda captures to end of signature when inlining (2 days ago) <pyos> *433e0e4740- (tag: build-1.3.70-dev-1455) JVM_IR: remember facade fqnames of imported classes (2 days ago) <pyos> *42cb53a380- (tag: build-1.3.70-dev-1454) Always apply new script configuration in tests (2 days ago) <Natalia Selezneva> *423f1909fa- Disable script configuration update in AbstractInspectionTest (2 days ago) <Natalia Selezneva> *698d675efe- Scripting: fix saving to file attributes (2 days ago) <Sergey Rostov> *05e8acffa7- Scripting: restore reports for applied configuration in case of previous error (2 days ago) <Sergey Rostov> *96b4ceb067- scripting: skip loading when reverting to applied configuration (2 days ago) <Sergey Rostov> *2499c42ac4- scripting: PsiModificationStamp add virtual file modification stamp (2 days ago) <Sergey Rostov> *789ad23e8d- Minor: isScriptDependenciesUpdaterDisabled -> isScriptChangesNotifierDisabled (2 days ago) <Sergey Rostov> *61b17de625- Minor: change ScriptConfigurationCache.kt declarations order for better readability, more docs (2 days ago) <Sergey Rostov> *fbb2b260dd- Split script configuration state into applied and loaded to make markUpToDate more clear (2 days ago) <Sergey Rostov> *fde1d3fdf7- Wrap exceptions from external script configuration loader with error handling (2 days ago) <Natalia Selezneva> *56eb86b7c6- Remove KotlinGradleBuildScriptsResolver for IDEA < 191 (2 days ago) <Natalia Selezneva> *2a22cc23e9- KotlinGradleBuildScriptsResolver: update to new API from IDEA Gradle plugin (2 days ago) <Natalia Selezneva> *8bb6cf81c5- Extract logic common for different platforms to simplify bunch process (2 days ago) <Natalia Selezneva> *e2928550ca- Fix retrieving virtual file (2 days ago) <Sergey Rostov> *9105e38041- Mark not applied configuration as up-to-date, simplify concurrency handling (2 days ago) <Sergey Rostov> *0422abdb7b- LoadedScriptConfiguration and CachedConfigurationSnapshot are merged to ScriptConfigurationSnapshot (2 days ago) <Sergey Rostov> *a89ce4c590- BackgroundExecutor: cancel all tasks on user cancel, remove useless updateProgress call (2 days ago) <Sergey Rostov> *19d35d7f27- Implement Gradle specific behavior for script configuration update logic (2 days ago) <Sergey Rostov> *548e8e27dc- Minor: rename parameter (2 days ago) <Natalia Selezneva> *f0053ee34c- Minor: use properties instead of string constants (2 days ago) <Natalia Selezneva> *9d2cc484aa- ide, scripting: rework script configuration caching, introduce persistent fs cache (2 days ago) <Sergey Rostov> *915c9c367c- Minor: rename script related classes (2 days ago) <Natalia Selezneva> *33475f30bc- Minor: move files (2 days ago) <Natalia Selezneva> *9f3c2d0292- build.gradle.kts: import script dependencies on Gradle Project sync (2 days ago) <Sergey Rostov> *de54e549af- (tag: build-1.3.70-dev-1451) Refactor CHECK_BYTECODE_LISTING directive for JVM IR tests (2 days ago) <Alexander Udalov> *ce09be3f59- Add TargetBackend.isIR, simplify JVM IR test configuration (2 days ago) <Alexander Udalov> *ab65a6bc6c- (tag: build-1.3.70-dev-1447) Build fix, tests regenerated (2 days ago) <Vladimir Ilmov> *608885d118- (tag: build-1.3.70-dev-1445, origin/sbogolepov/metadata_only_libraries_support) [Linker] Extend KotlinIrLinker infrastructure to support libraries that doesn't contain IR. Also bump ABI version because of addition of `ir_provider` property (2 days ago) <Sergey Bogolepov> *5629627cca- (tag: build-1.3.70-dev-1444) Mobile MPP: Initialize Mobile MPP plugin (2 days ago) <Kirill Shmakov> *f3770314c5- (tag: build-1.3.70-dev-1443) Pill: Fix reflect dependency in compiler/fir.resolve module (2 days ago) <Yan Zhulanow> *ef8b3cb72a- Prefer Kotlin Junit test run configurations when possible (KT-33787) (2 days ago) <Yan Zhulanow> *987307cf92- Prefer Kotlin Gradle test run configurations when possible (KT-33787) (2 days ago) <Yan Zhulanow> *214810ca01- (tag: build-1.3.70-dev-1439) Suspend test removed. Will be added later as part of appropriate ticket. (3 days ago) <Vladimir Ilmov>
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.