随着版本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]