Kotlin 1.9.0 正式发布
Kotlin 1.9.0 版本已正式发布,JVM 的 K2 编译器现已处于测试阶段。此版本包含新的语言功能以及 Kotlin Multiplatform 和 Kotlin/Native 的改进。
(资料图片仅供参考)
以下是此版本的重要内容:
新的 Kotlin K2 编译器更新
Kotlin 团队继续稳定 K2 编译器,1.9.0 版本引入了进一步的改进。 JVM 的 K2 编译器现在处于 Beta 阶段。
现在已提供对 Kotlin/Native 和多平台项目的基本支持。
枚举类值函数的稳定替换
在 1.8.20 中,枚举类的entries
属性作为实验功能引入。entries
属性是values()
函数的现代且高性能的替代品。
在 1.9.0 中,entries
属性已经稳定。虽然仍支持 values() 函数,但官方建议改用 entries 属性。
enum class Color(val colorName: String, val rgb: String) { RED("Red", "#FF0000"), ORANGE("Orange", "#FF7F00"), YELLOW("Yellow", "#FFFF00")}fun findByRgb(rgb: String): Color? = Color.entries.find { it.rgb == rgb }
用于开放式范围的稳定 ..< 运算符
用于开放式范围的新..<
运算符在 Kotlin 1.7.20 中引入,并在 1.8.0 中变得稳定。在 1.9.0 中,用于处理开放式范围的标准库 API 也已稳定。
新的..<
运算符使声明开放式范围时更容易理解。如果使用until
函数,很容易被错误地理解成包含上限。
以下是使用until
函数的示例:
fun main() { for (number in 2 until 10) { if (number % 2 == 0) { print("$number ") } } // 2 4 6 8}
这是使用新的..<
运算符的示例:
fun main() { for (number in 2..<10) { if (number % 2 == 0) { print("$number ") } } // 2 4 6 8}
新的通用函数:通过名称获取正则表达式捕获组
在 1.9.0 中有一个通用函数groups
,可以使用它通过正则表达式匹配的名称检索组的内容。在想要访问属于特定捕获组的正则表达式匹配结果时,这非常有用。
以下是包含三个捕获组的正则表达式的示例:city
、state
和areaCode
。可以使用这些组名称来访问匹配的值:
fun main() { val regex = """\b(?[A-Za-z\s]+),\s(?[A-Z]{2}):\s(?[0-9]{3})\b""".toRegex() val input = "Coordinates: Austin, TX: 123" val match = regex.find(input)!! println(match.groups["city"]?.value) // Austin println(match.groups["state"]?.value) // TX println(match.groups["areaCode"]?.value) // 123}
用于创建父目录的新路径实用程序
1.9.0 中,有一个新的扩展函数createParentDirectories()
,可以使用它来创建包含所有必需父目录的新文件。
createParentDirectories()
在复制文件时特别有用。例如,您可以将其与copyToRecursively()
函数结合使用:
sourcePath.copyToRecursively( destinationPath.createParentDirectories(), followLinks = false)
Kotlin 多平台中的 Gradle 配置缓存预览
Kotlin 1.9.0 支持多平台库中的 Gradle 配置缓存,库作者已经可以从改进的构建性能中受益。Gradle 配置缓存通过在后续构建中重用配置阶段的结果来加快构建过程。自 Gradle 8.1 以来,该功能已变得稳定。
注意:Kotlin Multiplatform 插件仍然不支持带有 Xcode 集成任务的 Gradle 配置缓存或 Kotlin CocoaPods Gradle 插件。
Kotlin 多平台中对 Android 目标的更改
将来,Google 的 Android 团队将提供自己的 Gradle 插件,以在 Kotlin 多平台中支持 Android。为了给 Google 让出名称, 1.9.0 中重命名了当前 Kotlin DSL 中的android
块,将构建脚本中出现的所有android
块更改为androidTarget
。
这是一项临时更改,仅针对从 Google 中释放即将推出的 DSL 的android
名称,后续Google 的插件将成为在多平台项目中使用 Android 的首选方式。
Kotlin/Native 中自定义内存分配器(预览版)
Kotlin 1.9.0 引入了自定义内存分配器的预览版,该分配系统提高了 Kotlin/Native 内存管理器的运行时性能。它将系统内存划分为多个页面,允许按连续顺序进行独立清理。每次分配都会成为页面内的一个内存块,并且页面会跟踪块大小。
新的分配器允许同时拥有多个独立的分配空间,允许 Kotlin 团队尝试不同的页面布局,以进一步提高性能。
Kotlin/Native 中的库链接
从 Kotlin 1.9.0 开始,Kotlin/Native 编译器以与 Kotlin/JVM 相同的方式处理 Kotlin 库中的链接问题。
如果第三方 Kotlin 库之间出现链接问题,构建在编译期间不会失败。相反,只会在运行时遇到这些错误,就像在 JVM 上一样。
Kotlin/Native 编译器每次检测到库链接问题时都会报告警告。您可以在编译日志中找到此类警告,例如:
No function found for symbol "org.samples/MyRemovedClass.doSomething|3657632771909858561[0]"Can not get instance of singleton "MyEnumClass.REMOVED_ENTRY": No enum entry found for symbol "org.samples/MyEnumClass.REMOVED_ENTRY|null[0]"Function "getMyRemovedClass" can not be called: Function uses unlinked class symbol "org.samples/MyRemovedClass|null[0]"
Kotlin/Wasm 中与文件大小相关的优化
Kotlin 1.9.0 为 WebAssembly (Wasm) 项目引入了显着的文件大小改进。比个“Hello World”项目,Kotlin 1.9.0 中 Wasm 的代码占用量现在比 Kotlin 1.8.20 中小 10 倍以上。
当针对具有 Kotlin 代码的 Wasm 平台时,这些大小优化可以提高资源利用率并提高性能。
有关更改的完整列表,请参阅 Kotlin 1.9.0 中的新增功能或 GitHub 上的发行说明。
关键词:
相关阅读
-
Kotlin 1.9.0 正式发布
Kotlin1 9 0版本已正式发布,JVM的K2编译器现已处于测试阶段。此版本包 -
【巴南交巡警持续严查违法停车】
近期,针对群众反映巴南区巴县大道、融福路、瑞竹路、重庆市第七人民医 -
江西提高义务教育学校生均公用经费基准
大江网 大江新闻客户端讯(江西日报全媒体记者殷琪惠实习生刘贝贝)7月3 -
央行发布《中央银行存款账户管理办法》
人民网北京7月7日电(记者罗知之)据中国人民银行官网消息,为规范中央 -
一箭双雕!新方法同时揭秘宇宙第一代星...
科技日报记者陆成宽宇宙中第一代星系是怎样形成的?它们如何照亮黑暗时 -
罗马诺:萨利巴此前受到数家俱乐部接触...
直播吧7月7日讯罗马诺消息,萨利巴受到了几家俱乐部接触,但他一心只想 -
天禾股份(002999)7月7日主力资金净买...
截至2023年7月7日收盘天禾股份002999报收于756元上涨202换手率618成交 -
探展WAIC | “商汤日日新”大模型体系...
商汤科技董事长兼CEO徐立表示:“大模型的突破掀起了人工智能的新一轮 -
万科完成发行20亿元中期票据
新京报讯(记者寇德娜)7月7日,根据万科企业股份有限公司(简称“... -
无论一个人平时多友善,只要在朋友圈发...
在我们中国境内来说,人与人之间在线上交流,最主要是通过微信这个软件 -
云深处科技Lite3与X20四足机器人亮相世...
上证报中国证券网讯7月6日至8日,以“智联世界生成未来”为主题的第... -
南宁电车“大绿牌”即将到期!市民为办...
2023年8月31日后,南宁市不符合“新国标”要求的“大绿牌”电动自行... -
省督导组深入张家界开展村卫生室门诊统...
湖南日报·新湖南客户端7月7日讯(通讯员邓掌)为加快推进村卫生室... -
抢占流量,破局出圈!箭牌瓷砖抖音特训营...
6月5-7日,箭牌瓷砖借此618活动的契机,集结14家优秀终端经销商代表在 -
盐城响水:追寻红色记忆 汲取奋进力量
在“七七事变”86周年纪念日到来之际,7月6日,江苏省盐城市响水县... -
县委常委会(扩大)会议暨全县领导干部...
7月7日,县委常委会(扩大)会议暨全县领导干部警示教育大会召开。高文 -
白酒板块午盘小幅下滑 贵州茅台股价下滑0.73%
北京商报讯(记者翟枫瑞)7月6日,白酒板块午盘小幅下滑,以2464 38元 -
防暑降温指南|高温天气如何祛湿气?
01:43时值高温多雨的夏季,人们容易出现没有食欲、四肢沉重等现象。长 -
7月7日周五《新闻联播》要闻19条
【7月7日周五《新闻联播》要闻19条】财联社7月7日电,今天《新闻联播》 -
中国汽车产销连续两年正增长,海外市场...
北京日报客户端|记者杨天悦7月6日,《中国汽车工业发展报告(2023)》