主要观点:Kotlin 2.0.0 发布,新 Kotlin K2 编译器稳定,带来诸多改进和新特性,包括在多个平台(如 JVM、Native、Wasm、JS)的优化和功能增强,同时 IDE 支持、编译器插件支持等方面也有更新,还介绍了如何启用 K2 编译器等内容。
关键信息和重要细节:
编译器及相关特性:
- K2 编译器:默认使用,稳定,为所有目标平台带来性能提升等好处,有相关迁移指南和性能测试博客,存在与 Gradle 版本相关的限制及智能 cast 改进(如在局部变量、逻辑或操作、内联函数、属性函数类型、异常处理、增量递减运算符等方面)。
- Lambda 生成:2.0.0 中使用 invokedynamic 生成 lambda 函数成为默认方法,可减少二进制大小,但有序列化、反射 API 等限制。
- kotlinx-metadata-jvm 库:变为稳定,纳入 Kotlin 发布周期,提供读取和修改 Kotlin/JVM 编译器生成的二进制文件元数据的 API。
多平台改进:
- Kotlin Multiplatform:在编译期间实现公共和平台源的分离,不同 visibility 水平的 expected 和 actual 声明支持更灵活,解决了一些与 IntelliJ IDEA 和编译器的冲突行为。
各平台具体改进:
- Kotlin/JVM:可生成包含 Java 22 字节码的类,引入新的 lambda 生成方式和稳定的 kotlinx-metadata-jvm 库。
- Kotlin/Native:可通过 signposts 监控 GC 性能,解决与 Objective-C 方法的冲突,更改编译器参数日志级别,明确添加标准库和平台依赖,处理 Gradle 配置缓存中的任务错误。
- Kotlin/Wasm:提高性能和互操作性,默认使用 Binaryen 进行生产编译,支持命名导出、无符号原始类型、生成 TypeScript 声明文件、捕获 JavaScript 异常、新的异常处理提案等,拆分 withWasm()函数。
- Kotlin/JS:添加新的编译目标 es2015,支持 suspend 函数作为 ES2015 生成器,可向 main 函数传递参数,实现 per-file 编译,改善集合互操作性,支持 createInstance()、type-safe plain JavaScript 对象、npm 包管理器,更改编译任务,停止提供 legacy Kotlin/JS JAR 工件。
- Gradle 改进:与 Gradle 6.8.3 至 8.5 兼容,有新的 Gradle DSL 用于配置编译器选项,新的 Compose 编译器 Gradle 插件,新的区分 JVM 和 Android 发布库的属性,改进 Kotlin/Native 中 CInteropProcess 的 Gradle 依赖处理,Gradle 的 visibility 变化,新的 Kotlin 数据目录,按需下载 Kotlin/Native 编译器,弃用旧的编译器选项定义方式,提高最小支持的 AGP 版本,新的 Gradle 属性用于尝试最新语言版本,新的 JSON 输出格式的构建报告,kapt 配置继承注解处理器等。
- 标准库:稳定一些函数和接口,如 enum 类 values 通用函数的替换、AutoCloseable 接口、AbstractMutableList 的 modCount 和 removeRange 属性及函数、String 的 toCharArray(destination)函数。
- 安装:IntelliJ IDEA 2023.3 和 Android Studio Iguana (2023.2.1) Canary 15 起,Kotlin 插件作为捆绑插件包含在 IDE 中,可在构建脚本中更改 Kotlin 版本至 2.0.0 进行更新。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。