Kotlin Toolchain 0.12 发布:多平台库发布、Wasm 应用与更多特性
JetBrains 发布了 Kotlin Toolchain 0.12.0 版本。这是 Kotlin 官方构建工具链的又一次重要更新,带来了多个期待已久的特性,包括多平台库发布、Wasm 应用支持、构建性能优化等。
Kotlin Toolchain 是什么
Kotlin Toolchain 是 JetBrains 推出的 Kotlin 官方构建工具链,旨在简化 Kotlin 项目的构建和管理。它整合了编译器、构建系统、包管理等功能,提供统一的构建体验。
Kotlin Toolchain 的核心目标:
- 简化构建配置:用简洁的 DSL 替代复杂的 Gradle 配置
- 统一多平台构建:一套配置支持 JVM、JS、Native、Wasm 等多个平台
- 提升构建速度:通过增量编译、构建缓存、并行构建等技术提升构建速度
- 集成包管理:内置依赖管理和包发布功能
- 开发者体验:提供更好的错误信息、IDE 集成和调试体验
Kotlin Toolchain 目前仍在快速发展中,每个版本都带来重要的新特性和改进。
0.12 版本的核心特性
1. 多平台库发布
这是 0.12 版本最受期待的特性之一。在此之前,发布多平台 Kotlin 库需要复杂的配置和多个发布任务。0.12 版本简化了这个流程:
- 统一发布配置:一个发布配置自动处理所有平台的产物
- 自动元数据管理:自动生成和发布多平台元数据(metadata)
- 支持 Gradle Module Metadata:生成符合 Gradle 标准的模块元数据,确保依赖解析正确
- 简化签名配置:统一的签名配置,自动为所有平台产物签名
- 支持 Maven Central 和其他仓库:一键发布到 Maven Central 或其他 Maven 仓库
这个特性大大降低了多平台库作者的发布负担,让更多开发者能够轻松发布和维护多平台 Kotlin 库。
2. Wasm 应用支持
Kotlin/Wasm 是 Kotlin 编译到 WebAssembly 的目标平台。0.12 版本增强了对 Wasm 应用的支持:
- Wasm 应用模板:内置 Wasm 应用项目模板,快速创建新项目
- Wasm 调试支持:支持在浏览器中调试 Kotlin/Wasm 代码
- Wasm 测试支持:支持在 Node.js 或浏览器中运行 Wasm 测试
- Wasm 大小优化:改进了 Wasm 产物的大小优化,减小最终二进制体积
- Wasm 与 JS 互操作:改进了 Kotlin/Wasm 与 JavaScript 的互操作支持
Kotlin/Wasm 使得 Kotlin 代码可以在浏览器中以接近原生的速度运行,特别适合性能敏感的 Web 应用。
3. 构建性能优化
0.12 版本在构建性能方面有多项改进:
- 更快的增量编译:改进了增量编译算法,减少了需要重新编译的文件数
- 改进的构建缓存:构建缓存的命中率提升,特别是在多模块项目中
- 并行依赖解析:依赖解析现在可以并行执行,减少了依赖解析时间
- 更快的配置阶段:项目配置阶段的速度提升,特别是大型多模块项目
- 优化的编译器守护进程:编译器守护进程的内存管理和复用更加高效
根据 JetBrains 的基准测试,0.12 版本相比 0.11 版本,中型项目的平均构建时间减少了约 15%-20%。
4. 改进的依赖管理
0.12 版本改进了依赖管理功能:
- 版本目录(Version Catalog)支持:支持使用版本目录统一管理依赖版本
- 依赖约束(Dependency Constraints):支持依赖约束,控制传递依赖的版本
- 依赖分析工具:内置依赖分析工具,查看依赖树、检测冲突和重复
- 依赖更新检查:自动检查依赖更新,提示可用的新版本
- BOM 支持:支持 Maven BOM(Bill of Materials),统一管理一组依赖的版本
5. 测试改进
0.12 版本在测试方面有多项改进:
- 并行测试执行:支持并行执行测试,减少测试时间
- 测试过滤:支持按标签、名称、包等过滤测试
- 测试报告改进:更详细的测试报告,包括测试耗时、失败原因等
- 参数化测试:改进了参数化测试的支持
- 测试覆盖率:集成测试覆盖率工具,支持 JaCoCo 和其他覆盖率工具
6. 更好的错误信息
0.12 版本显著改进了错误信息的质量:
- 更清晰的编译错误:编译错误信息更加清晰,附带具体的修复建议
- 更好的上下文:错误信息包含更多上下文信息,帮助定位问题
- 配置错误检测:更好地检测和报告配置文件中的错误
- 依赖错误解释:依赖解析失败时,给出更清晰的原因解释和解决方案
- 彩色终端输出:支持彩色终端输出,错误和警告更加醒目
多平台支持的进展
Kotlin 的核心优势之一是多平台支持。0.12 版本在多平台支持方面继续推进:
支持的平台
- JVM:Kotlin 的传统目标平台,支持 Java 互操作
- JavaScript:编译到 JavaScript,支持 Node.js 和浏览器
- Native:编译到原生二进制,支持 iOS、Android NDK、Linux、macOS、Windows 等
- Wasm:编译到 WebAssembly,支持浏览器和 Wasmtime 等运行时
多平台项目结构
0.12 版本简化了多平台项目的结构:
- 公共源代码集(commonMain):包含跨平台共享的代码
- 平台源代码集(jvmMain、jsMain、nativeMain 等):包含平台特定的代码
- expect/actual 机制:在公共代码中声明 expect,在平台代码中提供 actual 实现
- Cinterop 支持:Kotlin/Native 支持与 C 库互操作
与 Gradle 的关系
Kotlin Toolchain 并不是要完全替代 Gradle,而是提供一个更简洁的选择:
- Kotlin Toolchain:面向 Kotlin 项目优化,配置简洁,学习曲线平缓
- Gradle:功能强大,灵活性高,适合复杂的多语言项目和企业级构建
Kotlin Toolchain 底层可以使用 Gradle 作为构建引擎,也可以使用独立的构建引擎。用户可以根据项目需求选择合适的工具。
升级建议
对于已经在使用 Kotlin Toolchain 的用户,建议升级到 0.12 版本:
- 升级前备份项目配置
- 查看发布说明中的破坏性变更
- 在测试分支验证构建和测试
- 逐步迁移到新的 API 和配置格式
对于还在使用 Gradle + Kotlin DSL 的用户,可以考虑在新项目中尝试 Kotlin Toolchain,体验更简洁的构建配置。
总结
Kotlin Toolchain 0.12.0 是一个重要的版本更新,带来了多平台库发布、Wasm 应用支持、构建性能优化、改进的依赖管理、测试改进和更好的错误信息等多项特性。
这些改进体现了 Kotlin 生态的持续健康发展:
- 多平台支持不断完善,让 Kotlin 成为真正的全栈语言
- 构建工具不断优化,提升开发者体验和构建效率
- Wasm 等新兴平台的支持,让 Kotlin 能够适应新的技术趋势
- 开发者体验持续改进,降低学习和使用门槛
对于 Kotlin 开发者来说,关注 Kotlin Toolchain 的发展是值得的。它可能代表了 Kotlin 构建工具的未来方向。
原文链接:https://blog.jetbrains.com/kotlin/2026/09/kotlin-toolchain-0-12-multiplatform-library-publishing-wasm-apps-and-more/