Vladimir Ivanov c4ce945262 Use ForeignException wrapper to handle native exception [KT-35056] (#4307)
* Use ForeignException wrapper to handle native exception [KT-35056]

* Add test

* Use Any? instead of NativePtr for automagic memory management

* Use clauseNSException specific clause, similar to `catch (NSException* e)

* cleanup + test fix

* Terminate on anything else but NSException

* Use ForeignException message for NSException details

* Code generated for AppleFamily only + move stuff to kotlinx.cinterop package

* Cleanup

* Fix platform-dependent code generation

* Fix test allocException

* wip: ForeignExceptionMode option: cinterop part

* ForeignExceptionMode support in compiler

* rework test for foreignExceptionMode option

* More tests on foreignExceptionMode option

* PR feedback: resolveFakeOverride and more

* Test reworked and extended

Co-authored-by: Vladimir Ivanov <vladimir.d.ivanov@jetbrains.com>
2020-09-14 13:50:32 +03:00
2020-05-20 19:52:35 +07:00
2020-07-03 16:40:29 +02:00
2020-08-17 16:00:55 +02:00
2020-06-08 17:26:21 +03:00
2020-08-17 16:00:55 +02:00
2017-03-30 09:51:58 +03:00
2019-10-25 16:05:35 +03:00
2019-12-02 09:55:51 +03:00
2020-09-09 18:53:55 +03:00
2020-07-13 12:52:56 +02:00
2020-07-13 12:52:56 +02:00
2018-09-13 11:48:42 +03:00
2020-07-20 15:42:43 +07:00
2020-09-08 11:11:43 +03:00
2020-06-08 17:26:21 +03:00

official project version

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 11.5 is required to compile Kotlin/Native from sources)
  • on Fedora 26+ yum install ncurses-compat-libs may be needed
  • on recent Ubuntu apt install libncurses5 is 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.

S
Description
The Kotlin Programming Language.
Readme 2.1 GiB
Languages
Kotlin 79.9%
Java 10.4%
Swift 4.3%
C 2.8%
C++ 2.1%
Other 0.3%