Kotlin 2.3.20发布:增强C语言和JavaScript互操作性
发布时间:2026-04-07 21:57 浏览量:1
Kotlin 2.3.20已成为JetBrains构建的编程语言的最新版本,新增了C或Objective-C库的互操作模式以及基于属性名称的解构声明功能。开发者现在还可以在JavaScript和TypeScript中使用Kotlin接口。
这项Java竞争语言的更新于3月16日发布。开发者可以在Kotlin官网找到入门指南。通过2.3.0版本中的Kotlin Native技术,开发者可以将Kotlin代码编译为原生二进制文件,并尝试针对Objective-C和C库的实验性互操作模式。这项功能面向在Kotlin多平台库或应用程序中使用C或Objective-C库的开发者。
一般来说,Kotlin Native支持将C和Objective-C库导入到Kotlin中。然而,对于KMP库而言,该功能目前受到KMP与旧编译器版本兼容性问题的影响。因此,如果使用某个Kotlin版本编译的KMP库被发布,导入C或Objective-C库可能会导致该Kotlin库无法在使用早期Kotlin版本的项目中使用。为了解决这个问题和其他相关问题,Kotlin团队一直在修订互操作机制。从Kotlin 2.3.20开始,开发者可以通过编译器选项尝试新模式。
Kotlin 2.3.20还引入了基于名称的解构声明,通过匹配变量与属性名称来工作,而不是依赖基于位置的componentN函数。JetBrains表示,此前解构声明使用的是基于位置的解构。
该更新解除了在JavaScript和TypeScript端实现Kotlin接口的限制。JetBrains说,以前只能将Kotlin接口导出为TypeScript接口,而从TypeScript实现这些接口是被禁止的。此外,从Kotlin 2.3.20开始,Kotlin/JS支持基于Rust的SWC编译平台。这有助于将较新版本的JavaScript和TypeScript代码转译为较旧且更兼容的JavaScript代码。
Kotlin 2.3.20是继2025年12月发布的Kotlin 2.3.0和2月发布的Kotlin 2.3.10之后的最新版本。Kotlin 2.3.20的其他更新包括:
在Java互操作性方面,编译器现在可以识别Vert.x @Nullable注解进行空值检查。该版本还增加了对Java @Unmodifiable和@UnmodifiableView注解的支持,将注解集合在Kotlin中视为只读。
在Maven构建工具项目中设置Kotlin变得更加容易。现在,Kotlin支持源根目录和Kotlin标准库的自动配置。
Kotlin 2.3.20与Gradle构建工具7.6.3至9.3.0版本完全兼容。开发者也可以使用最新Gradle发布版本,但这样做可能会导致弃用警告,某些新的Gradle功能可能无法正常工作。
用于生成和使用Java Lombok声明的Lombok编译器插件已升级至Alpha状态。计划让这项功能达到生产就绪状态,但目前仍在开发中。
引入了Map.Entry.copy扩展函数,用于创建Map.Entry的不可变副本。该函数允许通过首先复制条目来重用从Map.entries获得的条目,然后修改映射。
Q&A
Q1:Kotlin 2.3.20新增了什么重要的互操作功能?
A:Kotlin 2.3.20新增了C或Objective-C库的实验性互操作模式,主要面向在Kotlin多平台库或应用程序中使用C或Objective-C库的开发者。同时解除了在JavaScript和TypeScript端实现Kotlin接口的限制,开发者现在可以从TypeScript实现Kotlin接口。
Q2:什么是基于名称的解构声明功能?
A:基于名称的解构声明是通过匹配变量与属性名称来工作,而不是依赖基于位置的componentN函数。这改变了此前解构声明使用基于位置的解构方式,使得变量匹配更加直观和灵活。
Q3:Kotlin 2.3.20对构建工具的兼容性如何?
A:Kotlin 2.3.20与Gradle构建工具7.6.3至9.3.0版本完全兼容,也可以使用最新的Gradle发布版本。在Maven方面,现在支持源根目录和Kotlin标准库的自动配置,使得在Maven项目中设置Kotlin变得更加容易。