Tuning the wording of README (#398)

This commit is contained in:
Dmitry Jemerov
2017-03-29 12:16:58 +02:00
committed by Nikolay Igotti
parent a3becd24ec
commit 0b7aff3d11
+28 -27
View File
@@ -3,20 +3,20 @@
## Introduction ## ## Introduction ##
Kotlin Native backend, codenamed _Kotlin N_, is a LLVM backend for the Kotlin Kotlin Native backend, codenamed _Kotlin N_, is a LLVM backend for the Kotlin
compiler, runtime implementation and native code generation facility compiler. It consists of a native code generation facility using the LLVM toolchain
using LLVM toolchain. and a native runtime implementation.
_Kotlin N_ is primarily designed to allow compilation for platforms where _Kotlin N_ is primarily designed to allow compilation for platforms where
virtual machines are not desirable or possible (such as iOS, embedded targets), virtual machines are not desirable or possible (such as iOS, embedded targets),
or where developer is willing to produce reasonably-sized self-contained program or where the developer needs to produce a reasonably-sized self-contained program
without need to ship an additional execution runtime. that doesn't require an additional execution runtime.
## Supported platforms ## ## Supported platforms ##
_Kotlin N_ compiler produces mostly portable (modulo pointer size and target _Kotlin N_ compiler produces mostly portable (modulo pointer size and target
triplet) LLVM bitcode, and as such is easily portable, as long as there's LLVM triplet) LLVM bitcode, and as such can easily support any platform, as long as there's a LLVM
codegenerator for the platform. codegenerator for the platform.
However, as actual producing of the native code requires platform linker and some However, as actual producing of the native code requires a platform linker and some
basic runtime shipped with the translator, we only support a subset of all possible basic runtime shipped with the translator, we only support a subset of all possible
target platforms. Currently _Kotlin N_ is being shipped and tested with support for target platforms. Currently _Kotlin N_ is being shipped and tested with support for
the following platforms: the following platforms:
@@ -27,58 +27,59 @@ the following platforms:
* Raspberry Pi, cross-compiled on Linux host (`-target raspberrypi`) * Raspberry Pi, cross-compiled on Linux host (`-target raspberrypi`)
Adding support for other target platforms shalln't be too hard, if LLVM support Adding support for other target platforms shouldn't be too hard, if LLVM support
is available. is available.
## Compatibility and features ## ## Compatibility and features ##
Language and library version supported by this EAP release mostly match Kotlin 1.1. The language and library version supported by this EAP release mostly match Kotlin 1.1.
However, there are certain limitations, see section [Known Limitations](#limitations). However, there are certain limitations, see section [Known Limitations](#limitations).
Currently _Kotlin N_ uses reference counting based memory management scheme with cycles Currently _Kotlin N_ uses reference counting based memory management scheme with cycles
garbage collection algorithm. Multiple threads could be used, but no shared objects garbage collection algorithm. Multiple threads could be used, but no objects shared
between threads are allowed. between threads are allowed.
_Kotlin N_ provides efficient interoperability with libraries written in C, including _Kotlin N_ provides efficient interoperability with libraries written in C, and supports
automated bindings generation. See samples coming with distributable. automatic generation of Kotlin bindings from a C header file.
See samples coming with the distribution.
## Getting Started ## ## Getting Started ##
Download Kotlin N redistributable and unpack it. You can run command line compiler with Download Kotlin N distribution and unpack it. You can run command line compiler with
bin/kotlinc <some_file>.kt <dir_with_kt_files> -o <executable>.kexe bin/kotlinc <some_file>.kt <dir_with_kt_files> -o <executable>.kexe
During the first run it will download all the external dependencies, such as LLVM. During the first run it will download all the external dependencies, such as LLVM.
One may use `'-h'` flag to `kotlinc` to see available flags. To see the list of available flags, run `kotlinc -h`.
For documentation on C interoperability stubs see INTEROP.md. For documentation on C interoperability stubs see INTEROP.md.
## <a name="limitations"></a>Known limitations ## ## <a name="limitations"></a>Known limitations ##
### Performance ### ### Performance ###
*** DO NOT USE THIS PREVIEW RELEASE FOR ANY PERFORMANCE ANALYSIS *** *** DO NOT USE THIS PREVIEW RELEASE FOR ANY PERFORMANCE ANALYSIS ***
This is purely technology preview of Kotlin N technology, and is not yet tuned This is purely a technology preview of Kotlin N technology, and is not yet tuned
for benchmarking and competitive analysis of any kind. for benchmarking and competitive analysis of any kind.
### Standard Library ### ### Standard Library ###
Standard library in Kotlin N is known to be incomplete and doesn't include The standard library in Kotlin N is known to be incomplete and doesn't include
certain methods available in standard library of Kotlin. certain methods available in standard library of Kotlin.
### Coroutines ### ### Coroutines ###
Coroutines are not yet supported with this release. Coroutines are not yet supported with this release.
### Reflection ### ### Reflection ###
Full reflection and class object references are not implemented. Full reflection and class object references are not implemented.
Notice that property delegation (including lazy properties) *does* work. Notice that property delegation (including lazy properties) *does* work.
### Microsoft Windows support ### ### Microsoft Windows support ###
Due to significant difference in exception handling model on MS Windows and Due to significant difference in exception handling model on MS Windows and
other LLVM targets, current _Kotlin N_ may not produce executables working on other LLVM targets, current _Kotlin N_ may not produce executables working on
MS Windows. This situation could be improved in upcoming releases. MS Windows. This situation could be improved in upcoming releases.