Releases

Kotlin 1.5.0 – 2021 年的首个大版本

Read this post in other languages:

欢迎新版本计划表的第一个功能版本 —— Kotlin 1.5.0

这个版本提供了稳定的语言特性,如 JVM records,密封接口,内联值类,并包括了新的默认的 JVM IR 编译器。 您在 Kotlin 1.4.30 和 Kotlin 1.5.0 EAP 版本中预览特性的反馈切实帮助我们去稳定这些功能。 我们非常感激您的协助! 谢谢!

已经有多达 25,000 名开发者尝试过 IntelliJ IDEA 上新的 JVM IR 编译器了。

您会逐渐留意到其优势。 新的编译器与 Kotlin/Native 和 Kotlin/JS IR 编译器共享标准统一的管道和业务逻辑,这将使我们能够同时为所有平台实现大多数特性,优化和错误修复。 它还将允许添加在所有平台上自动运行的自定义处理和转换

您对于 Kotlin 1.5.0 还有什么疑问? 在 5 月 25 日的 Kotlin 在线活动,Roman Elizarov, Svetlana Isakova,以及其他 Kotlin 团队的成员,已准备就绪回答您的问题。

Kotlin 1.5 在线活动登记


在这篇博文中,您将会看到以下内容的概述:

自动升级到 Kotlin 1.5.0

如果您使用的是 IntelliJ IDEAAndroid Studio,您可以通过它提供的选项,当 Kotlin 的新版已就绪,将自动升级到最新的版本。

了解更多有关 Kotlin 1.5.0 安装的信息。

稳定的语言特性

Kotlin 1.5.0 包含了在 1.4.30 中提供预览的新语言特性的稳定版本:

  • 对 JVM records 的支持以及保持和 Java 最新特性—— record 类的互操作性。 要将 Kotlin 类编译为 Java 代码中的 record,将其声明为 data 类,并通过 @JvmRecord 注解标记:

    了解使用 JVM records 所需条件的更多信息。

  • 密封接口 sealed 修饰符在接口与在类上的原理相同——密封接口的所有实现在编译时均为已知状态。
  • 密封类的改进 以前,所有子类都必须与密封类放在同一个文件中。 现在它们可以位于相同编译单元和相同程序包的任意文件中。
  • 内联类是只包含值为基础类型的类的子集。 您可以用它们为某个指定类型的值进行封装,而不会因为内存分配而产生额外的开销。 通过 value 修饰符进行声明。

了解更多有关 Kotlin 1.5.0 语言特性的信息

标准库及测试库的改进

无符号整数类型的新稳定API是最令人期待的 Kotlin 1.5.0 库改进,这是根据我们在 Kotlin 1.5.0-RC 博文中调查所得的结果。

标准库提供了许多有用的功能,包括:

  • 用于无符号整数类型的新稳定 API,以及它们的范围,级数和函数。 了解更多有关无符号整型的信息。
  • java.nio.file.Path扩展函数,以 Kotlin 惯用风格调用的现代非阻塞 Java IO
  • String 和 Char API 的改进,包括用于更改字符串和字符大小写的新的与语言环境无关的 API,用于在字符及其整数代码和数值之间进行转换的一组新函数,以及更多兼容多平台的 char 函数。
  • Duration API 变动,包括内部使用 Long 值表示,并提供新的属性以获取 duration 的 Long 值。

测试库带来了一系列重要的改进:

  • 只需要在多平台项目的公共源集里对 kotlin-test 进行单次依赖。
  • 当您指定唯一的 kotlin-test 依赖项时,会自动为 Kotlin/JVM 源集选择测试框架。
  • 大量断言函数的更新。

了解更多有关库改善的信息。

Kotlin/JVM

Kotlin 1.5.0 带来了:

Kotlin/Native

Kotlin 1.5.0 提供了:

  • linuxX64iosArm64 目标的调试模式下支持编译器缓存。 当编译器缓存启用,除第一次调试编译外,大部分调试编译的速度都将更快。 测量结果表明,我们测试项目的编译速度提高了200%
  • 停用内置的内存泄漏检查器,以避免可能导致的应用程序崩溃问题。 了解如何启用内存泄漏检查器(如有必要)。

Kotlin/JS

Kotlin/JS 的 新 Kotlin/JS IR 编译器迈向 Beta 。 许多著名的框架和库 KVisionfritz2doodle 等等已向 IR 编译器敞开怀抱。

如果您是库的作者,则可以通过向后兼容性库迁移来添加您的库。

另一个额外的改进是通过 webpack 5 而非 webpack 4 来构建 JS bundle 包。

如何安装 Kotlin 1.5.0

如果您使用的是 IntelliJ IDEAAndroid Studio,它会建议在版本发布后自动更新 Kotlin 到 1.5.0。 您也可以按照说明手动更新。

您仍然可以下载这些 IDE 的最新版本以保证对 Kotlin 的全面支持:

  • 用于为不同平台开发 Kotlin 应用程序的 IntelliJ IDEA
  • 用于开发 Android 和跨平台的移动应用程序的 Android Studio

确保您已将 kotlinx 库更新到兼容版本,并在现有项目的构建脚本中指定 Kotlin 版本为 1.5.0

如果需要命令行编译器,请在 GitHub 版本页面下载。

如果遇到任何问题

Kotlin 1.5 在线活动

参加 5 月 25 日的 Kotlin 1.5 在线活动,Kotlin 团队将回答您对最新版本的所有问题。 您可以询问任何想知道的事情,或者您没有任何问题,只对回答感兴趣,那也不错。 活动将持续1.5小时。

通过 #kotlin15ask 在 Twitter 上发布您的问题,或在表格中添加你的问题。

Kotlin 1.5 在线活动登记

我们还将于 5 月 27 日至 28 日在 Reddit 上进行 “Ask Me Anything”(AMA) 讨论,以处理所有未解决的问题,同时也会回答新问题。

兼容性

与所有主要版本一样,某些先前宣布的变更的弃用周期将在 Kotlin 1.5.0 版本结束。 所有这些情况都经过了语言委员会的仔细审查,并在 Kotlin 1.5 兼容性指南中列出。 您也可以在 YouTrack 上浏览这些变更。

更多的观看及阅读材料

观看Kotlin YouTube:

阅读 Kotlin 博客:

通过 Kotlin 文档了解更多信息:

外部贡献者

我们要感谢👏👏👏 所有外部贡献者,此版本中包含了他们的 Pull Request:

Jinseong Jeon, Mads Ager, Ivan Gavrilovic, pyos, Steven Schäfer, Iaroslav Postovalov, scaventz, Kristoffer Andersen, Bingran, Stefan Wolf, Victor Turansky, fjjohnchen, justin.wei, Nelson Osacky, Mikhail Galanin, Michael Hoisie, Kris Hall, Kevin Bierhoff, Jiaxiang Chen, Hung Nguyen, Cedric Champeau.

YouTrack 的最佳问题报告者

我们要感谢👏👏👏 社区的所有成员,他们通过向 YouTrack 报告问题帮助我们改进了此版本! 我们列出了前 20 名报告者,在此向他们致以衷心感谢:

Morgan Bartholomew (118 个问题); Marc Knaup (78 个问题); Ryan Nett (61 个问题); Louis CAD (48 个问题); Daniil Stepanov (44 个问题); AndroidDeveloperLB (39 个问题); Victor Turansky (38 个问题); Jinseong Jeon (35 个问题); Zac Sweers (25 个问题); Łukasz Wasylkowski (22 个问题); Tianyi Guan (21 个问题); Christoph Sturm (20 个问题); Axel Fontaine (19 个问题); Alexander Nozik (18 个问题); Robert Stoll (18 个问题); Björn Kautler (18 个问题); Róbert Papp (14 个问题); Andreas Malik (14 个问题); Lorenzo Neumann (14 个问题); Iaroslav Postovalov (14 个问题).


安装 Kotlin 1.5.0 注册参加 Kotlin 1.5 在线活动

特别感谢由来自 Kotlin 社区的 Pye52 为本篇博文提供中文译文。
image description

Discover more