diff --git a/CHANGELOG.md b/CHANGELOG.md index 241325e4044..bde39c4df4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,16 @@ +## v0.5 (Dec 2017) + * Reverse interop allowing to call Kotlin/Native code compiled as framework from Objective-C/Swift programs + * Reverse interop allowing to call Kotlin/Native code compiled as shared object from C/C++ programs + * Support generation of shared objects and DLLs by the compiler + * Migration to LLVM 5.0 + * Support WebAssembly target on Linux and Windows hosts + * Make string conversions more robust + * Support kotlin.math package + * Refine workers and string conversion APIs + ## v0.4 (Nov 2017) ## - * Objective-C frameworks interop for iOS and OSX targets - * Platform API libraries for Linux, iOS, OSX and Windows + * Objective-C frameworks interop for iOS and macOS targets + * Platform API libraries for Linux, iOS, macOS and Windows * Kotlin 1.2 supported * `val` and function parameters can be inspected in debugger * Experimental support for WebAssembly (wasm32 target) diff --git a/DISTRO_README.md b/DISTRO_README.md index 54e416e7677..f923d0833ea 100644 --- a/DISTRO_README.md +++ b/DISTRO_README.md @@ -11,17 +11,23 @@ without need to ship an additional execution runtime. To get started with _Kotlin/Native_ take a look at the attached samples. * `androidNativeActivity` - Android Native Activity rendering 3D graphics using OpenGLES + * `calculator` - iOS Swift application, using Kotlin/Native code compiled into the framework * `csvparser` - simple CSV file parser and analyzer + * `gitchurn` - program interoperating with `libgit2` for GIT repository analysis + * `gtk` - GTK2 interoperability example + * `html5Canvas` - WebAssembly example * `libcurl` - using of FTP/HTTP/HTTPS client library `libcurl` * `nonBlockingEchoServer` - multi-client TCP/IP echo server using co-routines - * `gitchurn` - program interoperating with `libgit2` for GIT repository analysis - * `objc` - AppKit Objective-C interoperability example for OSX + * `objc` - AppKit Objective-C interoperability example for macOS * `opengl` - OpenGL/GLUT teapot example + * `python_extension` - Python extension written in Kotlin/Native * `socket` - TCP/IP echo server * `tensorflow` - simple client for TensorFlow Machine Intelligence library * `tetris` - Tetris game implementation (using SDL2 for rendering) * `uikit` - UIKit Objective-C interoperability example for iOS - * `win32` - trivial Win32 application + * `videoplayer` - SDL and FFMPEG-based video and audio player + * `win32` - trivial Win32 GUI application + * `workers` - example of using workers API See `README.md` in each sample directory for more information and build instructions. diff --git a/FAQ.md b/FAQ.md index 0788b03468f..dbc0150b117 100644 --- a/FAQ.md +++ b/FAQ.md @@ -4,9 +4,18 @@ A: Define top level function `fun main(args: Array)`, please ensure it's in a package. Also compiler switch `-entry` could be use to make any function taking `Array` and returning `Unit` be an entry point. + +Q: What is Kotlin/Native memory management model? + +A: Kotlin/Native provides automated memory management scheme, similar to what Java or Swift provides. +Current implementation includes automated reference counter with cycle collector to collect cyclical +garbage. + + Q: How do I create shared library? -A: It is not possible at the moment. Currently Kotlin/Native could be used to produce either -_Kotlin/Native_ own library format, which can be statically linked with application -or an executable for target. For example, for Android targets compiler produces shared libraries -by default (as required for _Native Activity_). \ No newline at end of file +A: Use `-produce dynamic` compiler switch, or `konanArtifacts { dynamic {} }` in Gradle. +It will produce platform-specific shared object (.so on Linux, .dylib on macOS and .dll on Windows targets) and +C language header, allowing to use all public APIs available in your Kotlin/Native program from C code. +See `samples/python_extension` as an example of using such shared object to provide a bridge between Python and +Kotlin/Native. diff --git a/GRADLE_PLUGIN.md b/GRADLE_PLUGIN.md index 09f79fd66bb..ebfba12fc0a 100644 --- a/GRADLE_PLUGIN.md +++ b/GRADLE_PLUGIN.md @@ -16,7 +16,7 @@ You may use the Gradle plugin to build _Kotlin/Native_ projects. To use it you n } dependencies { - classpath "org.jetbrains.kotlin:kotlin-native-gradle-plugin:0.3.4" + classpath "org.jetbrains.kotlin:kotlin-native-gradle-plugin:*" } } @@ -30,7 +30,7 @@ project property: If you already downloaded the compiler manually you may specify the path to its root directory using `konan.home` project property (e.g. in `gradle.properties`). Note: the plugin ignores the `konan.version` property in this case. - konan.home=/home/user/kotlin-native-0.3 + konan.home=/home/user/kotlin-native-0.5 In this case the compiler will not be downloaded by the plugin. diff --git a/INTEROP.md b/INTEROP.md index f235f963125..6a15742e113 100644 --- a/INTEROP.md +++ b/INTEROP.md @@ -102,7 +102,7 @@ path elements, e.g. `time.h` or `curl/curl.h`. So if the library is usually included with `#include `, then it would probably be correct to filter headers with ``` -headerFilter = SomeLbrary/** +headerFilter = SomeLibrary/** ``` If `headerFilter` is not specified, then all headers are included. diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index ccaf9e3e22d..8cfe6f9d50d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -20,16 +20,17 @@ basic runtime shipped along with the translator, we only support a subset of all target platforms. Currently _Kotlin/Native_ is being shipped and tested with support for the following platforms: - * Mac OS X 10.11 and later (x86-64), host and target (`-target macbook`, default on OSX hosts) + * Mac OS X 10.11 and later (x86-64), host and target (`-target macbook`, default on macOS hosts) * Ubuntu Linux x86-64 (14.04, 16.04 and later), other Linux flavours may work as well, host and target (`-target linux`, default on Linux hosts) * Microsoft Windows x86-64 (tested on Windows 7 and Windows 10), host and target (`-target mingw`, default on Windows hosts) - * Apple iOS (arm64), cross-compiled target (`-target iphone`), hosted on OS X + * Apple iOS (arm64), cross-compiled target (`-target iphone`), hosted on macOS * Linux arm32 hardfp, Raspberry Pi, cross-compiled target (`-target raspberrypi`), hosted on Linux * Linux mips big endian, cross-compiled target (`-target mips`), hosted on Linux * Linux mips little endian, cross-compiled target (`-target mipsel`), hosted on Linux - * Android arm32 and arm64 (`-target android_arm32` and `-target android_arm64`), target, hosted on Linux or OS X + * Android arm32 and arm64 (`-target android_arm32` and `-target android_arm64`) target, hosted on Linux or macOS + * WebAssembly (`-target wasm32`) target, hosted on Linux, Windows or macOS Adding support for other target platforms shouldn't be too hard, if LLVM support is available. diff --git a/RELEASE_PROCESS.md b/RELEASE_PROCESS.md index 598ef79e97b..09d2a4c8759 100644 --- a/RELEASE_PROCESS.md +++ b/RELEASE_PROCESS.md @@ -14,7 +14,7 @@ ### Build for all supported platforms ### -Repeat those steps for Mac OS X, Linux x86-64 and Windows x64 machines/VMs: +Repeat those steps for macOS, Linux x86-64 and Windows x64 machines/VMs: git pull git checkout -b v0.X-fixes origin/v0.X-fixes @@ -42,9 +42,9 @@ in few minutes after upload. ### Blog post ### - Notify #kotlin-native channel on public slack. + Notify #kotlin-native channel on public Slack. Write a meaningfully sized blog post describing new release at https://blog.jetbrains.com. Login at https://blog.jetbrains.com/kotlin/wp-login.php. Synchronize with @abreslav and @yole. Publish and enjoy! - \ No newline at end of file + diff --git a/gradle.properties b/gradle.properties index 61cb5ce7b03..323dc36226f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,7 +27,7 @@ kotlinCompilerVersion=1.2.20-dev-773 kotlinScriptRuntimeVersion=1.2.20-dev-773 kotlinStdLibVersion=1.2.20-dev-773 kotlinReflectVersion=1.2.20-dev-773 -konanVersion=0.4 +konanVersion=0.5 org.gradle.jvmargs='-Dfile.encoding=UTF-8' ##