
Kotlin开发团队发布2.2.20版本,本次更新聚焦在Web开发体验,Kotlin/Wasm正式迈入Beta测试阶段,并在异常处理与浏览器调试上带来明显改进。对于需要在JavaScript与WebAssembly之间跨平台协作的开发者而言,这些改动有助于提升程序行为的可预测性与调试效率,降低维护负担。
过去JavaScript抛出的错误在传入Kotlin/Wasm时,往往因信息缺失而难以分析,反向传递时也可能被包装成不透明的WebAssembly异常,而这个问题在新版获得改善,JavaScript错误能在Kotlin端更完整呈现,而Kotlin异常则能在JavaScript端以一般错误捕捉,不再丢失细节。这项改善依赖于WebAssembly.JSTag,目前已由Chrome 115、Firefox 129与Safari 18.4等以上版本浏览器支持,确保在新版本环境中能直接受益,而旧版浏览器则维持既有兼容性。
浏览器调试流程也获得简化,之前要在浏览器中追踪Kotlin/Wasm代码,开发者必须在Gradle的Webpack开发服务器配置中额外提供源代码路径,步骤繁琐。不过,从Kotlin 2.2.20开始,执行*DevRun这类任务时,Gradle插件会自动将源代码发送到浏览器,让开发者能直接设置断点、查看变量并逐步执行程序,官方同时提醒,此功能仅适合本地开发环境使用,以避免源代码在非预期情况下被公开。
新版本还调整了Kotlin/Wasm的NPM依赖项目管理方式,Kotlin工具链依赖与项目自有依赖分开配置,项目内的锁定文件仅记录实际使用的包,而这也使得项目版本控制更干净,减少因工具链更新导致的无关变动,对于团队协作与CI流程而言,能更清楚分辨工具更新与项目变更,避免不必要的文件冲突。
在代码架构上,使用默认层级模板(Default Hierarchy Template)时,Kotlin 2.2.20新增了默认的webMain与webTest代码共享区,专门让JavaScript与WebAssembly目标可以共用同一份代码。
以往要同时支持这两个平台,开发者必须在两边各写一次相似的代码,或自行建立额外配置,维护成本高,但现在只要把共用逻辑放进webMain或webTest,就能同时被JavaScript与WebAssembly使用。对于需要同时支持不同浏览器,或开发跨平台Web应用的人来说,这不仅能减少重复编写,项目结构也会更一致易于维护。