kotlin で native code を生成 kotlin native を楽しみたい
android で kotlin が話題なので、kotlin native を試してみました。 kotlin native を利用すると、kotlin のコードをネイティブコードにコンパイルできます。
https://github.com/JetBrains/kotlin-native
git clone git@github.com:JetBrains/kotlin-native.git
しておいて
./gradlew dependencies:update
./gradlew dist
す。Hello.kt を作成する。
fun main(args : Array<String>) {
println("Hello, world")
}
以下のように、コンパイルする。
./dist/bin/kotlinc Hello.kt -o hello
[tokuhirom@dev2 kotlin-native]$ time ./program.kexe
Hello, world
real 0m0.002s
user 0m0.001s
sys 0m0.000s
CGI で実行できそうなぐらい速い。便利!!!
C library へのアクセス
C library には *.def ファイルを作ってアクセスすれば良い。 https://github.com/JetBrains/kotlin-native/blob/master/samples/tetris/sdl.def
header ファイルをスキャンしてるのかな?
ためしに stdio.def というファイルを作成する。
headers = stdio.h
excludeDependentModules.osx = true
実際にこのファイルからビルドしてみる。
[tokuhirom@dev2 kotlin-native]$ ./dist/bin/cinterop -def stdio.def -o stdio.kt.bc
JetFile: stdio.kt
このライブラリを利用した Hello2.kt は以下のようになる。
import stdio.puts
fun main(args : Array<String>) {
puts("Hello, world")
}
さて、stdio.kt を利用したスクリプトをビルドしてみる。
[tokuhirom@dev2 kotlin-native]$ ./dist/bin/konanc Hello2.kt -library stdio.kt.bc -o Hello2.kexe
JetFile: Hello2.kt
[tokuhirom@dev2 kotlin-native]$ ./Hello2.kexe
Hello, world
動いた!!
結論
kotlin native わりと動く。
Published: 2017-05-18(Thu) 07:20