Kotlin/Native v0.2 发布,将 Kotlin 编译成机器码

2017年05月13日

Kotlin/Native v0.2 发布了,这是 Kotlin/Native 技术预览版的功能和修复程序更新。本次更新增加了对协同程序和跨模块内联函数的支持,以及错误修复和改进。

该版本包括以下内容:

  • 如何为并发非阻塞 IO 使用协程(coroutines)的例子

  • 使用 GTK 的 GUI 应用程序

  • 由 Julius Kunze 提供的 TensorFlow 机器学习框架客户端

例如,像这样的代码:

var connectionId = 0
acceptClientsAndRun(listenFd) {
  memScoped {
    val bufferLength = 100L
    val buffer = allocArray<ByteVar>(bufferLength)
    val connectionIdString = "#${++connectionId}: ".cstr
    val connectionIdBytes = connectionIdString.getPointer(this)
    try {
      while (true) {
        val length = read(buffer, bufferLength)
        if (length == 0L) break
        write(connectionIdBytes, connectionIdString.size.toLong())
        write(buffer, length)
      }
    } catch (e: IOException) {
      println("I/O error occurred: ${e.message}")
    }
  }
}

可用于通过协程处理多个并发套接字 IO,并单独并发地为每个客户端提供服务

创建一个带有事件侦听器的 GTK 按钮,只需执行以下操作:

val button = gtk_button_new_with_label("Click me!")!!
g_signal_connect(button, "clicked",
   staticCFunction { _: CPointer<GtkWidget>?, _: gpointer? -> println("Hi from Kotlin") }
)

因此,v0.2 版本允许使用 Kotlin 创建功能齐全的体积小巧的原生应用程序,而且编译和运行时性能均有明显改善,可再分发的规模也已有所下降。

此版本中的完整更改列表可以在变更日志中找到。

适用于 Linux MacOS 的二进制文件。

发布主页

Kotlin/Native 能把 Kotlin 编译成机器码,由 JetBrains 公司开发。注意,该项目仍处于实验性阶段,请选择合适的场景进行使用。

Kotlin/Native 利用 LLVM 将 Kotlin 编译成机器码,现在已支持 4 个平台:

  • Linux (暂时只是 Ubuntu)

  • Mac OS

  • iOS

  • Raspberry Pi

展开阅读全文
15 收藏
分享
加载中
精彩评论
继 Spring 4 内置支持 Groovy后(并非通过 ScriptEngine), Spring 5 官方好像也加强了 Kotlin 支持。
2017-05-13 12:41
4
举报

引用来自“DarkAngel”的评论

所以这些基于JVM的语言是准备抢Java饭碗
Java本身更新的速度有点落伍了,得用别的语言逼迫一下
2017-05-13 14:05
3
举报
急需元组 手动内存管理 反射增强,打败飘忽不定的swift
2017-05-15 10:05
2
举报
等你 1.0 我会惠顾的
2017-05-13 09:00
2
举报
最新评论 (15)

引用来自“swiftplus”的评论

急需元组 手动内存管理 反射增强,打败飘忽不定的swift
还缺了命名空间限定的扩展机制。
2017-05-15 16:32
1
回复
举报

引用来自“swiftplus”的评论

急需元组 手动内存管理 反射增强,打败飘忽不定的swift
手动内存管理 反射增强 是的,其实很多对象是生命周期是可预计,java反射也太麻烦了,现在越来越觉得java用起来太不方便了,异常处理太烦了
2017-05-15 14:14
1
回复
举报

引用来自“天台道人”的评论

如果kotlin程序中调用了java的库,那么还可以编译成机器码吗?
目前不能,将来不知道。可能未来会用AOT把那部分JVM字节码编译成机器码。
2017-05-15 12:53
0
回复
举报
spring4自己不知道kotlin的存在,但是也支持kotlin,因为kotlin兼容Java。spring5能感知kotlin的存在,并提供了比Java更多的特性。
2017-05-15 12:51
1
回复
举报
项目里用了kotlin 感觉良好
2017-05-15 12:22
1
回复
举报
急需元组 手动内存管理 反射增强,打败飘忽不定的swift
2017-05-15 10:05
2
回复
举报
如果kotlin程序中调用了java的库,那么还可以编译成机器码吗?
2017-05-15 09:34
1
回复
举报

引用来自“DarkAngel”的评论

所以这些基于JVM的语言是准备抢Java饭碗
Java本身更新的速度有点落伍了,得用别的语言逼迫一下
2017-05-13 14:05
3
回复
举报
继 Spring 4 内置支持 Groovy后(并非通过 ScriptEngine), Spring 5 官方好像也加强了 Kotlin 支持。
2017-05-13 12:41
4
回复
举报
所以这些基于JVM的语言是准备抢Java饭碗
2017-05-13 12:31
1
回复
举报
更多评论
15 评论
15 收藏
分享
返回顶部
顶部