Kotlin 2.4.21 发布:Wasm、JS、反射与脚本等多端缺陷修复

JetBrains 于 2026 年 10 月 8 日(UTC)在 GitHub 发布 Kotlin 2.4.21。这是 2.4 系列的 bugfix 版本,覆盖 Wasm 后端、JVM 反射、Kotlin/JS、序列化插件、Gradle Native 与脚本运行时等路径,不引入新语言特性。发行页同时提供编译器 zip、Gradle 插件 jar、多平台 Native 预构建包及对应 sha256。[1]

Wasm 与序列化是本版较醒目的一块。向类型为 (T) -> R 的 lambda 传入并非 T 的实参时,运行时原先可能直接 trap,现改为抛出 ClassCastException(KT-89267),行为更接近 JVM 侧的类型检查预期。序列化插件上,带有类上界的 @Serializable 泛型类在 Kotlin/Wasm 目标会发出无效 Wasm 模块(KT-89275),本版一并修掉,避免相关数据类在 Wasm 产物上直接不可用。[1]

JVM 反射修了两处:一是 argumentsMakeSenseOnlyForMutableContainer 在「非静态内部类 + 泛型外部类」组合下抛 NoSuchElementException(KT-89280);二是调整 KCallable 的内部表示,减少对 K1 反射栈的依赖(KT-80710)。Kotlin/JS 侧,生产构建里成员名不再被正确 minify(KT-89449),以及「带 companion 的普通类去继承 external 类」失败(KT-89363)都已处理,对前端产物体积与和外部 JS 类型互操作更直接。[1]

工具链方面,Gradle Native 修了 SwiftPM 导入时日志被刷屏(KT-89285),以及偶发的 linkDebugTestLinuxX64「truncated or malformed archive」指向 libstdlib-cache.a(KT-86251)。脚本与 JSR-223:二次执行带传递依赖的导入脚本可能 NoClassDefFoundError(KT-89247);泛型 Java 绑定会破坏后续所有 eval()(KT-89220);VirtualFileScriptSource.text 未关闭文件流、在 Windows 上挡住文件删除的问题(KT-88453)也列入 changelog,并顺带审计了可关闭资源用法(KT-88458)。[1]

已在 2.4.x 线上、且踩到 Wasm 类型转换、JS 生产压缩、脚本二次执行、反射内部类或 Native 链接缓存的项目,可按常规补丁流程升到 2.4.21,并回归对应目标平台。完整 ticket 列表以 GitHub 发行页为准。[1]

来源

[1] Kotlin 2.4.21,JetBrains/kotlin,2026年10月8日。

#Kotlin #Kotlin2421 #Wasm #KotlinJS #bugfix

排序方式 :

成为第一条评论!

Nobody's responded to this post yet. Add your thoughts and get the conversation going.