Kotlin 1.2.50 is out!

我们很高兴地正式发布Kotlin 1.2.50,一个针对Kotlin 1.2的bug修复和功能性更新的版本。

该正式版的主要更新内容:

  • Eclipse IDE的Kotlin插件得到了更新
  • 在标准库的公共及JS部分添加了新函数
  • 我们为kotlin.test带来了最新的JUnit 5
  • 改善了对实验性脚本的支持
  • 在IntelliJ IDEA中引入了可运行Kotlin scratch文件
  • 现在kapt及使用Gradle构建Android项目时的速度变得更快了
  • 通过二进制兼容模式以支持实验性的\@JvmDefault
  • 引入了渐进编译模式
  • 修复编译器及IDE插件大量已知的问题,同时其性能也有所提升

这个更新兼容自2017.2到2018.2 EAP版本的所有IntelliJ IDEA,以及Android Studio 3.0,3.1和3.2 Canary。

我们同样感谢在该版本中提交了PR的外部代码贡献者: Toshiaki Kameyama, Mikaël Peltier, Raluca Sauciuc, meztihn, Ivan Gavrilovic, Denis Vnukov, Derek, Florian Steitz, Jim S, Evgeny Zakharov, Aaron Nwabuoku, Alexey Belkov, Claus Holst, Elifarley C, Felix Guo, Gabryel Monteiro, Gilkeson, Juan Chen, Mon_chi, Valeriy Zhirnov, Steven Spungin, Swapnil Sankla, TakuyaKodama, 还有 Kenji Tomita

可以在更新日志中查看完整的更新列表,接着来探讨重点的部分。

Eclipse IDE插件的更新

我们十分自豪地宣布Eclipse IDE插件的最新版本0.8.5。除了支持Kotlin 1.2.50外,该更新版带来了数个新特性及性能改进,例如:

  • 支持如kotlin-allopen和kotlin-spring的编译插件
  • 支持设置所生成JVM字节码的版本
  • 修复了Java to Kotlin转换器及调试器中的bug

可以在Preferences | Kotlin | Compiler中找到应用于工作区范围的Kotlin编译器配置, 允许你更改编译器插件及其他编译器选项。同样可以只部署项目级别的配置。

该Eclipse更新插件已经在Eclipse Marketplace上架。 查阅‘Getting Started’教程以获取更多细节。

库的更新

在该更新中,标准库的公共及Kotlin/JS部分添加了一组Byte,Short,Int和Long类型的扩展函数toString(radix: Int),这都是Florian Steitz的功劳。在实验中的多平台项目和JavaScript项目中,他们已可投入使用。

而Valeriy Zhirnov贡献了另一个变更,增加了两个方便将CharArray转换为String构造函数:String(chars: CharArray) and String(chars: CharArray, offset: Int, length: Int)。

此外,kotlin.test库现在支持使用JUnit 5框架和单独的模块kotlin-test-junit5进行测试,该模块在JUnit 5之上提供Asserter的实现,并将测试注释从kotlin-test-annotations-common映射到 JUnit 5测试注释。

此外,kotlin.test库现在支持在单独的模块kotlin-test-junit5中使用JUnit 5框架进行测试,其提供基于JUnit5的Asserter实现,并将kotlin-test-annotations-common的测试注释映射到JUnit 5测试注释中。

对实验性脚本支持的改进

该版本中引入了新的实验性脚本支持,自定义脚本编写更方便,在标准编译器和IDEA插件上运行更容易,创建嵌入式脚本也更简单。可以在KEEP中查询到关于脚本的应用场景及当前的开发进度。值得关注的点有:

  • 现在可以创建一个定义脚本的jar包,如果将该jar包添加到编译路径中,编译器和IDEA插件将自动支持这种类型的脚本
  • 现在可以将已确定类型的外部变量传递给脚本编译,就好像它们是脚本定义的全局变量一样
  • 脚本支持的结构变得更为简单了,而且通过提供的工具库,将比以前更简单地实现和嵌入自主的脚本宿主

IntelliJ IDEA插件的改进

可运行的Kotlin scratch files和Kotlin脚本

这个Kotlin的IDEA插件更新引入了对可运行脚本scratch files的支持。也可以使用项目中的声明:

图片

同时,IDE对Kotlin Script(* .kts)文件的支持也得到了改善。 你现在可以在项目视图中创建新脚本,并在它们所在模块的类路径中直接运行。

原生字符串的输入和缩进

得益于更新后的IDE插件,现在可以更轻松地输入原生字符串,并会自动插入成对的”””,提供文字缩进的intention(感谢我们的贡献者Toshiaki Kameyama)。这在你粘贴多行字符串时非常有用:

图片

其他IntelliJ IDEA插件的改进

  • 一些新的inspections和intentions,以辅助kotlinx.coroutines检查未被使用的Deferred和async结果,并将async(ctx){}.await()转换为withContext(ctx){}
  • 尾行注释和块注释互相转换的intention
  • 修复了大量bug,提高了稳定性,改进了性能

更快的Gradle构建

从Kotlin 1.2.50开始,Kotlin将跟踪多模块Android项目模块的增量变动。这显著加快有多个相互依赖模块的大型Android项目的增量构建。

编译器的变动

Kotlin 1.2.50修复了编译器中的许多已知问题,改进了性能和提高了稳定性,并添加了以下的新功能:

渐进编译模式

Kotlin编译器中大部分的bug和不一致的问题都尽快被处理,但部分修复可能是无法向后兼容的。Kotlin compatibility policy规定只在大版本(例如1.1和1.2)中引入这些的修复,并允许一个长时间的迁移过程。 尽管如此,我们相信许多用户能更快从这些错误修复获益,使代码更安全简洁。

在该版本中,我们引入了一个实验性的渐进编译模式,用于积极定期更新Kotlin编译器和工具到最新版本的维护者的代码库。 在该模式下,针对不稳定代码的deprecations和bug-fixes将会立即生效。 因此当启用该模式后,部分代码可能会在Kotlin版本更新后崩溃。

渐进编译模式下启用的修复不会影响代码库中的太大部分,即便它们不是静默工作,需要维护人员手动修改错误的代码段。我们将尽可能在IDE插件中提供自动迁移工具。该方式修复的所有代码脱离该模式仍然能正常运行。关于在渐进编译模式下,执行修复程序所遇到的问题的示例,请参考KT-9580KT-16681KT-17981

可以通过向Kotlin编译器添加-Xprogressive标记以启用该模块的渐进模式。

@JvmDefault binary compatibility模式

已经实验性地支持使用@JvmDefault为JVM接口生成默认方法,以便兼容Kotlin接口以binary-compatible模式编译生成的默认方法。添加编译器标记-Xjvm-default = compatibility以开启这个模式。

同样需要注意的是,现在已不再支持1.2.40中引入的编译标记-Xenable-jvm-defaul。请用-Xjvm-default=enable代替。

参数文件

Kotlin 1.2.50允许通过命令行传递-Xargfile = args.txt文件中的编译器参数,这便于在参数中使用较长的文件路径调用命令行编译器。

如何升级

若要更新IntelliJ IDEA或Android Studio上的插件,选择 Tools | Kotlin | Configure Kotlin Plugin Updates,点击’Check for updates now’按钮。Eclipse IDE的插件可以通过 Eclipse Marketplace (选择Help | Eclipse Marketplace并搜索Kotlin插件)安装或更新。

同时,别忘了在Maven或Gradle构建代码中更新你的编译器和标准库的版本。

一如以往,当你在新版本中遇到任何问题,欢迎在论坛、slack(在这里获取邀请)寻求帮助,或者向我们的问题跟踪报告。

请尽情享受Kotlin!

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

发表评论

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