Kotlin/Nativev0.3,將Kotlin編譯成機器碼

琴瑟發表於2017-06-23

隨著版本v0.3的釋出,Windows作為編譯主機和執行目標以及Google Android裝置作為本機活動的執行目標都被支援。所以Windows API`Hello World`將變得很簡單:

import win32.*
fun main(args: Array<String>) {
  MessageBoxW(null, "Привет!","標題", MB_YESNOCANCEL or MB_ICONQUESTION)
}

除錯

新版本支援源級除錯(僅限單步)。例如:

$ bin/konanc string0.kt  -g -o string0
$ lldb ./string0.kexe
(lldb) target create "string0.kexe"
Current executable set to `string0.kexe` (x86_64).
(lldb) b string0.kt:1
Breakpoint 1: where = string0.kexe`kfun:main(kotlin.Array<kotlin.String>) + 4 at string0.kt:1, address = 0x0000000100001344
(lldb) r
Process 12288 launched: `/Users/jetbrains/kotlin/kotlin-native-release/kotlin-native/string0.kexe` (x86_64)
Process 12288 stopped
* thread #1, queue = `com.apple.main-thread`, stop reason = breakpoint 1.1
    frame #0: 0x0000000100001344 string0.kexe`kfun:main(kotlin.Array<kotlin.String>) at string0.kt:1
-> 1       fun main(args: Array<String>) {
   2           val str = "hello"
   3           println(str.equals("HElLo", true))
   4           val strI18n = "Привет"
   5           println(strI18n.equals("прИВет", true))
   6           println(strI18n.toUpperCase())
   7           println(strI18n.toLowerCase())
(lldb) s
Process 12288 stopped
* thread #1, queue = `com.apple.main-thread`, stop reason = step in
    frame #0: 0x0000000100001354 string0.kexe`kfun:main(kotlin.Array<kotlin.String>) at string0.kt:3
   1       fun main(args: Array<String>) {
   2           val str = "hello"
-> 3           println(str.equals("HElLo", true))
   4           val strI18n = "Привет"
   5           println(strI18n.equals("прИВет", true))
   6           println(strI18n.toUpperCase())
   7           println(strI18n.toLowerCase())

我們引入了一個新的庫格式,稱為.klib,它將作為Kotlin / Native庫的預設分發格式。本地庫和框架可以輕鬆地與.klib進行互操作,並通過指定-library庫命令列標誌或庫Gradle外掛選項與Kotlin / Native編譯器一起使用。

Kotlin/Native 能把 Kotlin 編譯成機器碼,由 JetBrains 公司開發。注意,該專案仍處於實驗性階段,請選擇合適的場景進行使用。

Kotlin/Native 利用 LLVM 將 Kotlin 編譯成機器碼,現在已支援 4 個平臺:

  • Linux (暫時只是 Ubuntu)
  • Mac OS
  • iOS
  • Raspberry Pi

文章轉載自 開源中國社群 [http://www.oschina.net]


相關文章