v0.5 preparations. (#1135)

This commit is contained in:
Nikolay Igotti
2017-12-15 13:25:25 +03:00
committed by GitHub
parent e2040f9b5d
commit 5ad0643154
8 changed files with 45 additions and 19 deletions
+12 -2
View File
@@ -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) ## ## v0.4 (Nov 2017) ##
* Objective-C frameworks interop for iOS and OSX targets * Objective-C frameworks interop for iOS and macOS targets
* Platform API libraries for Linux, iOS, OSX and Windows * Platform API libraries for Linux, iOS, macOS and Windows
* Kotlin 1.2 supported * Kotlin 1.2 supported
* `val` and function parameters can be inspected in debugger * `val` and function parameters can be inspected in debugger
* Experimental support for WebAssembly (wasm32 target) * Experimental support for WebAssembly (wasm32 target)
+9 -3
View File
@@ -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. To get started with _Kotlin/Native_ take a look at the attached samples.
* `androidNativeActivity` - Android Native Activity rendering 3D graphics using OpenGLES * `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 * `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` * `libcurl` - using of FTP/HTTP/HTTPS client library `libcurl`
* `nonBlockingEchoServer` - multi-client TCP/IP echo server using co-routines * `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 macOS
* `objc` - AppKit Objective-C interoperability example for OSX
* `opengl` - OpenGL/GLUT teapot example * `opengl` - OpenGL/GLUT teapot example
* `python_extension` - Python extension written in Kotlin/Native
* `socket` - TCP/IP echo server * `socket` - TCP/IP echo server
* `tensorflow` - simple client for TensorFlow Machine Intelligence library * `tensorflow` - simple client for TensorFlow Machine Intelligence library
* `tetris` - Tetris game implementation (using SDL2 for rendering) * `tetris` - Tetris game implementation (using SDL2 for rendering)
* `uikit` - UIKit Objective-C interoperability example for iOS * `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. See `README.md` in each sample directory for more information and build instructions.
+13 -4
View File
@@ -4,9 +4,18 @@ A: Define top level function `fun main(args: Array<String>)`, please ensure it's
in a package. Also compiler switch `-entry` could be use to make any function taking in a package. Also compiler switch `-entry` could be use to make any function taking
`Array<String>` and returning `Unit` be an entry point. `Array<String>` 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? Q: How do I create shared library?
A: It is not possible at the moment. Currently Kotlin/Native could be used to produce either A: Use `-produce dynamic` compiler switch, or `konanArtifacts { dynamic {} }` in Gradle.
_Kotlin/Native_ own library format, which can be statically linked with application It will produce platform-specific shared object (.so on Linux, .dylib on macOS and .dll on Windows targets) and
or an executable for target. For example, for Android targets compiler produces shared libraries C language header, allowing to use all public APIs available in your Kotlin/Native program from C code.
by default (as required for _Native Activity_). See `samples/python_extension` as an example of using such shared object to provide a bridge between Python and
Kotlin/Native.
+2 -2
View File
@@ -16,7 +16,7 @@ You may use the Gradle plugin to build _Kotlin/Native_ projects. To use it you n
} }
dependencies { 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` 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. 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. In this case the compiler will not be downloaded by the plugin.
+1 -1
View File
@@ -102,7 +102,7 @@ path elements, e.g. `time.h` or `curl/curl.h`. So if the library is usually
included with `#include <SomeLbrary/Header.h>`, then it would probably be included with `#include <SomeLbrary/Header.h>`, then it would probably be
correct to filter headers with correct to filter headers with
``` ```
headerFilter = SomeLbrary/** headerFilter = SomeLibrary/**
``` ```
If `headerFilter` is not specified, then all headers are included. If `headerFilter` is not specified, then all headers are included.
+4 -3
View File
@@ -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 target platforms. Currently _Kotlin/Native_ is being shipped and tested with support for
the following platforms: 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 * 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) (`-target linux`, default on Linux hosts)
* Microsoft Windows x86-64 (tested on Windows 7 and Windows 10), host and target (`-target mingw`, * Microsoft Windows x86-64 (tested on Windows 7 and Windows 10), host and target (`-target mingw`,
default on Windows hosts) 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 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 big endian, cross-compiled target (`-target mips`), hosted on Linux
* Linux mips little endian, cross-compiled target (`-target mipsel`), 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. Adding support for other target platforms shouldn't be too hard, if LLVM support is available.
+3 -3
View File
@@ -14,7 +14,7 @@
### Build for all supported platforms ### ### 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 pull
git checkout -b v0.X-fixes origin/v0.X-fixes git checkout -b v0.X-fixes origin/v0.X-fixes
@@ -42,9 +42,9 @@ in few minutes after upload.
### Blog post ### ### 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. 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. Login at https://blog.jetbrains.com/kotlin/wp-login.php. Synchronize with @abreslav and @yole.
Publish and enjoy! Publish and enjoy!
+1 -1
View File
@@ -27,7 +27,7 @@ kotlinCompilerVersion=1.2.20-dev-773
kotlinScriptRuntimeVersion=1.2.20-dev-773 kotlinScriptRuntimeVersion=1.2.20-dev-773
kotlinStdLibVersion=1.2.20-dev-773 kotlinStdLibVersion=1.2.20-dev-773
kotlinReflectVersion=1.2.20-dev-773 kotlinReflectVersion=1.2.20-dev-773
konanVersion=0.4 konanVersion=0.5
org.gradle.jvmargs='-Dfile.encoding=UTF-8' org.gradle.jvmargs='-Dfile.encoding=UTF-8'
## ##