Kotlin 1.2.70 发布

我们非常高兴地给大家带来了 Kotlin 1.2.70 的更新,这个版本主要修复了一些 Kotlin 1.2 的 bug 并优化了开发工具,主要包括:

  • Kotlin/JS 的增量编译性能得到了显著的提升
  • 使用 @OptionalExpectation对 kotlin-stdlib-common 中的一些注解进行了标注
  • Kotlin 编译器包含了使用 Excelsior JET 编译的二进制版本
  • IntelliJ IDEA 插件添加了新的用于重构、代码审查、代码提示等特性
  • 修复了很多编译器以及 IDE 中广为人知的问题,并进行了性能优化

这次更新兼容 IntelliJ IDEA 2017.3 – 2018.3 以及 Android Studio 3.1, 3.2 RC 和 3.3 Canary。

我们非常感谢这个版本中的外部的贡献者: Toshiaki KameyamaLucas SmairaRaluca SauciucDenis VnukovJonathan LermitageJake WhartongenTakasyBloderArtem ZinnatullinKenji TomitaNico Mandery, Juan Chen

完整的更新内容请参考 更新日志。下面是本次更新的一些重点内容。

Kotlin/JS 增量编译

Kotlin/JS 的增量编译得到了显著的提升,通过分析工程的结构,增量编译的构建速度将会达到 7 倍以上。另外,Kotlin/JS Gradle 编译也已经支持了跨模块增量编译。

需要指出的是,增量编译还在试验阶段,默认不会开启。如果你想要尝鲜,需要通过以下方式打开它:

  • 对于 Gradle 工程,在 gradle.properties 或者local.properties 中添加  kotlin.incremental.js=true
  • 对于 IntelliJ IDEA 的工程, 到 Settings -> Build, Execution, Deployment -> Compiler -> Kotlin Compiler -> Kotlin to JavaScript 中选中 Enable incremental compilation (experimental)

无论遇到什么有关 Kotlin/JS 增量编译的问题,请你及时反馈告诉我们。

Multiplatform 更新

kotlin-stdlib-common 中引入了许多平台相关的注解,并用 1.2.60 引入的 @OptionalExpectation 注解来标注它们。编译器将会在编译过程中忽略跨平台代码声明中的这些注解,尽管他们可能没有具体对应的实现。

例如,我们在跨平台代码中使用 Java 虚拟机专用的@JvmName注解,并将这些代码编译成 JavaScript 代码时不会遇到任何相关的问题。

前面提到的注解包括: @JsName@JvmOverloads@JvmStatic@JvmName@JvmMultifileClass@JvmField,

@JvmSuppressWildcards@JvmWildcard,@Volatile@Transient@Strictfp,

@Synchronized

IntelliJ IDEA 支持优化

『快速修复(Quick Fix)』可以将集合框架的函数调用转换为序列(Sequence)。

我们现在可以通过『快速修复』将集合框架的变化操作转换为等价的懒序列变换,这样可以减少不必要的开销,对于一些比较复杂的场景将会有显著的性能提升。

IntelliJ IDEA 插件的其他优化点:

  • 将 if 判断替换为 ?.let 以及其他类似的操作的提示
  • 减少冗余的 with 调用的代码检查
  • 将属性转换为 getter 转换为初始化操作的提示
  • 将 assertTrue(a == b) 替换为 assertEquals(a, b) 的代码检查和快速修复
  • “Redundant return label” 检查
  • 默认参数值移除的快速修复
  • forEach parameter unused” 检查
  • 很多问题修复和性能提升

二进制版本的 Kotlin 编译器

Github releases 里面除了 Java 虚拟机版本的 Kotlin 编译器之外还提供了主流操作系统(Linux、macOS、Windows)下的二进制版编译器。它采用  Excelsior JET 编译,具有启动速度快的优点,更适用于小文件的编译和脚本的运行。

Excelsior JET 版本的运行时支持一些 JVM 上的以及一些特定的选项,通过 -J 传给 kotlinc 即可。所有支持的参数请参加 Excelsior JET 说明文档

如何更新

你可以通过设置中的 Tools -> Kotlin -> Configure Kotlin Plugin Updates 中的 『Check for updates now』 按钮更新 IntelliJ IDEA 和 Android Studio 的 Kotlin 插件,Eclipse 的插件可以在 Eclipse Marketplace 中更新(请在 Help -> Eclipse Marketplace 中搜索 Kotlin 插件)。

当然,不要忘了更新你的工程中 Maven 和 Gradle 脚本中的 Kotlin 编译器和标准库的版本。

如果你遇到任何问题,欢迎来我们的论坛 [英文 中文]中提问,也可以加入 Slack 频道的讨论 (在这里获得邀请),或者在 issue tracker 当中提交问题。

Let’s Kotlin!

原文:Kotlin 1.2.70 is Out!

此条目发表在官方博客分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注