Kotlin 1.4.30现在可用。这是最后的1.4增量版本,因此我们计划在1.5.0中使许多新的实验功能保持稳定。如果您可以尝试并与我们分享您的反馈意见,我们将不胜感激。我们希望您喜欢测试所有这些新更新,并让我们知道您的想法。
此版本中有哪些更改:
语言功能和编译器
我们已决定在单独的博客文章中介绍其中的两个重要更新,以便我们可以提供有关这些功能的更多详细信息。
编译器
新的JVM后端达到Beta,现在可以生成稳定的二进制文件。这意味着您可以在项目中安全地使用它。
有关此更新,启用新的JVM IR后端的方法以及如何帮助稳定它的更多详细信息,请参见此处。
新语言功能预览
我们计划在Kotlin 1.5.0中发布的新语言功能包括内联值类,JVM记录和密封接口。您可以在这篇文章中阅读有关它们的更多详细信息,这是一个简短的概述:
内联类。内联类以前是一种单独的语言功能,但现在它们已成为具有一个参数的值类的特定JVM优化。值类代表了一个更笼统的概念,将来将支持不同的优化。它们当前支持内联类,并且在项目Valhalla可用时将支持Valhalla基本类。
Java记录。JVM生态系统中另一个即将到来的改进是Java记录。它们类似于Kotlindata
类,主要用作简单的数据持有人。与Java的互操作性一直以来一直是Kotlin的优先事项。Kotlin代码“理解”了新的Java记录,并将它们视为具有Kotlin属性的类。
密封接口。接口可以声明为密封的,也可以声明为类。密封修饰符以相同的方式在接口上起作用:在编译时已知密封接口的所有实现。一旦编译了具有密封接口的模块,就不会出现新的实现。
因此,现在请您尝试这些语言功能,并与我们分享您的反馈。我们想知道您对它们有什么期望,想要应用这些功能的用例,以及对它们的任何想法或想法。
您可以在此博客文章中找到有关新语言功能的详细说明以及有关如何试用它们的说明。
构建工具
Kotlin Gradle插件中的配置缓存支持
从Kotlin 1.4.30开始,Kotlin Gradle插件与Gradle配置缓存完全兼容。这样可以加快构建过程。例如,使用Android的Kotlin的Square具有1800个模块的构建(Android,Java,Kotlin)。其团队报告以下数字:
- 最初的构建耗时16分30秒。
- 第二个要短得多。花了5分45秒。
更具体地说,对于Square,配置缓存可为每次构建节省1分10秒的配置和任务图创建时间。
当您运行命令时,Gradle将执行配置阶段并计算任务图。Gradle缓存结果并将其重新用于后续构建,从而节省了时间。
要开始使用此功能,请使用Gradle命令或设置基于IntelliJ的IDE。并且,如果有任何不正常的工作,请通过YouTrack报告。
请注意,此功能仍在多平台Alpha中。
Kotlin /本机
编译时间缩短
我们在1.4.30中缩短了编译时间。重建KMM网络和数据存储示例框架所需的时间从9.5秒(在1.4.10中)减少到4.5秒(在1.4.30中)。
我们计划继续优化编译器,您可以在YouTrack中解决此问题。
64位watchOS模拟器支持
在2018年10月的1.3.60 Kotlin版本中,我们引入了对为Apple Watch模拟器构建Kotlin应用程序的支持。去年11月,Apple Watch仿真器体系结构从i386更改为x86_64,这给使用此功能的开发人员带来了问题。新的Kotlin / NativewatchosX64
目标可用于在64位体系结构上运行watchOS模拟器,并且可从7.0版开始在WatchOS上运行。
Xcode 12.2 SDK支持
Kotlin / Native现在支持Xcode 12.2。此Kotlin更新可使用已添加到Xcode 12.2发行版中的macOS框架。例如,MLCompute框架现在可供开发macOS应用程序的用户使用。
Kotlin / JS
顶级属性的原型惰性初始化。
我们已经将顶级属性的延迟初始化作为Experiment可用。您可以在“新增功能”中阅读更多有关此内容的信息。
标准库
上/下文本的与语言环境无关的API
此版本引入了实验性的与语言环境无关的API,用于更改字符串和字符的大小写。当前toLowerCase()
,toUpperCase()
,capitalize()
,decapitalize()
API函数是语言环境敏感,这是不很明显的和不方便的情况。在不同的平台语言环境设置的情况下,它会影响代码行为–例如,在土耳其语语言环境中,当字符串“ kotlin”被转换时,toUpperCase
其结果为“KOTLİN”,而不是“ KOTLIN”。现在,它使用根语言环境,因此它将按预期工作。
您可以在KEEP中找到文本处理功能更改的完整列表。请记住,该API是试验性的,请在YouTrack中与我们分享您的反馈。
明确的Char转换API
当前从Char到数字的转换函数会返回以不同数字类型表示的UTF-16代码,通常将其与返回字符串数字值的类似String-to-Int转换混淆。
为避免这种混淆,我们决定将Char转换分为以下两组清晰命名的函数:用于获取Char
和构造整数代码的函数Char
,以及用于转换Char
为其所表示数字的数值的函数。
此功能也是实验性的,但我们计划使其在1.5.0版中保持稳定。在KEEP中查看更多详细信息。
在“新增功能”和“新的JVM后端和语言功能”博客文章中找到有关1.4.30的所有更新的更多信息。
如何更新
IntelliJ IDEA建议将Kotlin插件自动更新为1.4.30,或者您可以按照以下说明手动更新。Android Studio Arctic Fox的Kotlin插件将在稍后发布。
如果要处理使用Kotlin早期版本创建的现有项目,请在项目配置中使用1.4.30 Kotlin版本。有关更多信息,请参阅Gradle和Maven文档。
您可以从Github发布页面下载命令行编译器。
发行详细信息和兼容库列表在此处提供。
如果您在新版本中遇到任何问题,可以在Slack上找到帮助(在此处获得邀请)并在我们的YouTrack中报告问题。
在将项目更新到最新版本的Kotlin之前,可以在play.kotl.in上在线尝试新的语言和标准库功能。
外部贡献者
我们要感谢我们的所有外部贡献者,其发布请求已包含在此版本中:
晋城全度
俊明龟山
pyos
的Mads埃杰
史蒂芬舍费尔
马克Punzalan
伊万加夫里洛维奇
克里斯托弗·安德森
炳然
陈娟
zhelenskiy
克里斯
红阮
维克多Turansky
AJ
路易CAD
凯文·比埃尔霍夫
空心人
弗朗切斯科瓦斯科
乌兹同乡
多米尼克·伍德克
德里克·布丹
夏兰特雷纳
rbares
彼得罗夫
榆亚浦野
KotlinIsland
嘉祥陈
杰克沃顿商学院的
萨姆·旺(Wang)Sam Wang
MikeKulasinski-visa
Matthew Gharrity
Mikhail Likholetov
转自 https://blog.jetbrains.com/kotlin/2021/02/kotlin-1-4-30-released/