Kotlin 1.5.30现在可用!
由于Kotlin 1.5.30是Kotlin 1.6.0之前的最后一个增量版本,它包含了我们计划在Kotlin 1.6.0中发布的许多实验性语言和标准库特性。给他们一个尝试,并与我们分享你的反馈,你可以真正影响最终的结果!这些实验特性包括密封性当
语句、选择加入需求的更改、注释类的实例化、持续时间
和正则表达式
stdlib api等。
有了Kotlin 1.5.30,你也可以享受苹果硅的原生支持,Kotlin/JS IR后端升级到Beta版,自定义使用的能力cinterop
支持Kotlin Gradle插件提供的Java工具链,等等。
这篇博客文章提供了这个版本的更新概述:
- 语言的改进,包括密封
当
声明,支持暂停
函数作为超类型,并更改选择加入需求。 - 多平台的改进,包括使用自定义的能力
cinterop
共享本地代码中的库,并支持XCFrameworks作为输出格式。 - 芬兰湾的科特林/ JVM的改进,包括注释类的实例化和对可为空注释支持的改进配置。
- 芬兰湾的科特林/本机的改进,包括对Apple silicon的本地支持和CocoaPods Gradle插件的改进Kotlin DSL。
- 芬兰湾的科特林/ JS红外改进,包括将JS IR后端升级到Beta版,以及为新后端提供更好的调试体验。
- Gradle改进,包括对Java工具链的支持,以及显式设置Kotlin守护进程的JVM参数的更简单方法。
- 标准库的改进为
持续时间
和正则表达式
api。
自动更新到Kotlin 1.5.30
如果你使用IntelliJ IDEA或Android工作室,您可以选择在新的Kotlin发行版可用时自动更新到它。
了解更多关于安装芬兰湾的科特林1.5.30.
注意:最新版本的IntelliJ IDEA - 2021.2不支持Kotlin 1.5.30。如果您已经升级,您可以使用JetBrains轻松安装IntelliJ IDEA 2021.1工具箱的应用并在该版本中使用Kotlin 1.5.30,或者你可以等待Kotlin 1.5.31的bug修复版本。
语言
的芬兰湾的科特林路线图包括增加对密封的支持当
语句,发布可选的注释,改进类型推断,稳定构建器推断。
Kotlin 1.5.30在这条路上走了一步,它提供了这些特性的预览,计划在1.6.0中发布。
密封当
语句
密封当
这是一个期待已久的功能吗在YouTrack上有280票.如果你在1.5.30中启用该特性, Kotlin编译器将警告,如果您的当
声明不是详尽无遗的。这将使您的代码更安全,而无需引入自己的函数。
尝试一下这个功能,并提供你的反馈这YouTrack票.
支持暂停
函数作为工具
Kotlin 1.5.30提供了一个使用功能的预览暂停
函数类型作为超级接口,尽管它有一些限制.这是Kotlin协程设计中缺失的部分之一。
启用这个特性,试一试,并提供你的反馈这YouTrack票.
选择加入要求的更改
作为迈向可选注释的发布,芬兰湾的科特林1.5.30:
- 礼物新规则用于在不同的目标上使用和声明选择性加入的需求注释。
- 即使是实验性API的隐式用法也需要选择加入。例如,如果函数的返回类型被标记为实验性API元素,那么函数的使用要求您选择加入,即使声明没有被标记为要求显式地选择加入。
尝试这些改变,并分享你的反馈这YouTrack票.
了解更多关于选择需求.
改进递归泛型类型上的类型推断
与递归泛型类型的类型推断启用时,如果类型是递归泛型,Kotlin 1.5.30编译器只能根据相应类型形参的上界推断类型实参。这使得使用递归泛型类型创建各种模式成为可能,这些模式通常在Java中用于创建构建器api。
消除构建器推理限制
与消除构建器推理限制启用后,Kotlin 1.5.30删除了一个构建器推断限制。不仅可以指定构建器推断可以推断的类型信息,还可以使用得到
函数。例如,你可以打电话get ()
在的lambda参数中buildList ()
没有显式指定类型参数。
芬兰湾的科特林多平台
Kotlin 1.5.30包含了以下Kotlin多平台的改进:
- 使用自定义功能
cinterop
共享本地代码中的库,它扩展了共享Kotlin/Native附带的平台相关库的能力。 - 支持XCFrameworks作为所有Kotlin多平台项目的输出格式。XCFrameworks帮助在一个bundle中收集所有目标平台和架构的逻辑,并且在将应用发布到AppStore之前不需要删除不必要的架构。
- Android工件新的默认发布设置.这个设置将与任何构建类型兼容(比如
调试
或释放
默认情况下)。1.5.30之前,元数据生成的maven-publish
在发布Android多平台库时,Gradle插件为每个发布的Android变体都包含了build type属性。这使得它只与库使用者使用的相同构建类型兼容。
芬兰湾的科特林/ JVM
使用Kotlin 1.5.30, Kotlin/JVM得到以下更新:
- 改进的可空性注释支持配置.您可以根据来自特定类型的可空性注释的信息指定编译器是否报告可空性不匹配。学习如何启用这个改善和看到支持的可空性注释的完整列表,它已经被RxJava3注释扩展了。
- 注释类的实例化.如果你启用这个特性,可以调用的构造函数注释的类在任意代码中获取结果实例。该特性涵盖了与Java约定相同的用例,后者支持注释接口的实现。中了解有关注释类实例化的更多信息这让.
芬兰湾的科特林/本机
Kotlin 1.5.30为Kotlin/Native提供了以下改进:
- 本地支持苹果硅.现在,你可以在苹果硅硬件上为基于英特尔的mac电脑支持的所有目标构建应用程序,而无需使用罗塞塔翻译环境.新目标引入1.5.30 -
macosArm64
,iosSimulatorArm64
,watchosSimulatorArm64
,tvosSimulatorArm64
-在苹果芯片上运行Kotlin代码。 - 改进了CocoaPods Gradle插件的Kotlin DSL.Kotlin 1.5.30通过为框架提供一种新的DSL格式来改进CocoaPods配置,这种格式与苹果目标的框架定义相同。您可以定义它是静态类型还是动态类型,支持显式导出依赖项和Bitcode嵌入,并配置其他选项。
- 试用Swift 5.5异步/等待的互操作性。了解更多关于Swift 5.5互操作性的当前状态,并留下您的反馈这YouTrack问题.
- dll链接的弃用没有MinGW (Windows)的导入库。此弃用是切换到LLD链接器,它有更好的性能和其他改进。请随意分享您对转换到LLD链接器的想法和关注这YouTrack问题.
- 改进Swift/Objective-C对象和伴生对象的映射.现在你可以用一种对本地iOS开发者更直观的方式来访问对象和伴生对象——使用
.shared
和.companion
属性。
芬兰湾的科特林/ JS
Kotlin 1.5.30为Kotlin/JS提供了以下改进:
- JS IR编译器后端达到测试版.要简化到新后端的迁移,可以使用迁移向导和新Kotlin/JS检查包IDE插件,它指导您直接在IntelliJ IDEA中进行必要的更改。
- 一个使用Kotlin/JS IR后台的应用程序更好的调试经验,多亏了JavaScript源映射生成。现在,您可以在任何JavaScript调试器中使用适当的源引用来支持断点、步进和可读的堆栈跟踪。了解更多关于调试芬兰湾的科特林/ JS应用程序.
Gradle
Kotlin 1.5.30引入了以下特性改进Kotlin Gradle插件的用户体验:
- 支持Java工具链.Gradle 6.7引入支持Java工具链,这使得选择用于项目编译的JDK变得很容易。只要在构建脚本中声明你需要的版本,Gradle就会完成剩下的工作,在你的主机上找到它,如果还没有,甚至可以下载并安装它。Kotlin Gradle插件支持Java工具链用于Kotlin/JVM编译任务。对于Gradle 6.1-6.6版本,使用
UsesKotlinJavaToolchain
接口. - 显式指定Kotlin守护进程JVM参数的更简单方法.如果没有为Kotlin守护进程指定任何参数,那么它将从Gradle守护进程继承参数。现在,您还可以为特定的任务指定参数,也可以为Kotlin扩展指定参数
build.gradle.kts
或gradle.properties
.
build.gradle.kts
gradle.properties
标准库
Kotlin 1.5.30对标准库进行了改进持续时间
和正则表达式
api:
持续时间API改进
表示在我们的图书馆的路线图我们会的在Kotlin 1.6.0中稳定Duration API,这意味着这是最后的机会,给它一个尝试,并与我们分享您的反馈,任何你想改变。我们将非常感谢你的反馈这让。
Kotlin 1.5.30提供了API改进的预览。的输出Duration.toString ()
现在可读性更好了。例如,Duration.minutes (920) .toString ()
生产15 h 20米
而不是以前的920米
.
负数持续时间现在以减号作为前缀(-
),如果它由多个组件组成,则用括号括起来:-12米
和- (1 h 30米)
.
这个版本还提供了一个预览用于从String解析Duration的新函数:
parse ()
从格式为Duration的字符串解析Duration对象toString ()
或者从表示ISO 8601持续时间(如toIsoString ()
输出)。parseIsoString ()
从表示ISO 8601持续时间的字符串解析持续时间对象。* OrNull ()
两个函数的对应项。
Regex API改进
Kotlin 1.5.30为正则表达式提供了新的实验函数:
matchesAt ()
检查正则表达式在String的指定位置是否匹配。matchAt ()
如果找到,返回匹配。
splitToSequence ()
是懒惰的对等物吗split ()
.它根据给定正则表达式的匹配来分割字符串,但是返回结果序列
.也添加了一个类似的函数CharSequence进行
.
如何安装Kotlin 1.5.30
如果你已经使用IntelliJ IDEA或Android工作室,您的IDE将建议自动将Kotlin更新到1.5.30。您也可以通过以下方式手动更新这些指令.
您可以下载这些ide的最新版本,以获得对Kotlin的广泛支持:
- IntelliJ IDEA-为各种平台开发Kotlin应用程序。
- Android工作室-用于开发Android和跨平台的移动应用程序。
确保你也更新了kotlinx库到兼容版本以及在现有项目的构建脚本中指定的Kotlin 1.5.30版本。
如果您需要命令行编译器,请从Github发布页面.
如果你遇到任何问题
保持与最新的Kotlin功能的信息!请填写本文右侧的表格,订阅Kotlin更新。
多读多看
外部贡献者
我们想要感谢所有我们的外部贡献者,他们的拉请求包括在这个版本:
Jinseong全,巴西,天宇耿,马克Punzalan,尼蒸机,伊凡Gavrilovic,史蒂文·谢弗,弗拉基米尔·伊万诺夫,挂着阮,马修Gharrity,(陈,伊凡Kochurkin,Iaroslav Postovalov,Toshiaki Kameyama,Udi科恩,新王,bracadabra