Scala 2.13.11 现已发布。这是一门现代的多范式编程语言,志在以简练、优雅及类型安全的方式来表达常用编程模式。此版本更新亮点如下:
Collections
- 更快的
Vector
concatenation(#10159) - 新
LinkedHashMap
/LinkedHashSet
实现(#10221)
兼容性
- 通过升级到 ASM 9.5 支持 JDK 20 和 21(#10363、#10184)
- 修复读取 JDK 21 类文件时发生崩溃的问题 ( #10397 )
- 在 Java 源代码和类文件中支持 Java 17
sealed
( #10348、#10105) - 在 TASTy reader 中支持 Scala 3.3 ( #10299)
与 Scala 3 保持一致
- 像 Scala 3 那样,在 lambdas 中接受
implicit _
、implicit (x: Int)
(#10327) - 弃用 infix type args,因为它们在 Scala 3 中被删除(#10255)
- 允许对具有依赖类型的方法进行 eta 扩展 ( #10166 )
- Abstract parent copy 不会暂停 case
copy
(#10085) - 不要使用类型模式的 GLB 绑定器,直接使用类型 ( #10247 )
- Under -Xsource:3,警告继承成员不再优先于 Scala 3 中的外部定义(#10220、#10339)
- Under -Xsource:3,调整 2.13.9 更改以忽略 whitebox macro 扩展的覆盖类型(#10188)
- Under -Xsource:3,警告有关对 parenless lambda parens 的更改(#10320)
Other notable changes
- 禁止 super 调用绑定到 vals 的 mixin ( #10268 )
- 让 scalac 的参数文件处理在处理空格和换行符时更像 javac(#10319 )
- 升级 JLine 和 JNA 版本 ( #10318 )
javabootclasspath
取代jrt
(#10336)- 在stderr 上报告 total errors(#10272)
- 修复自 2.13.7 起某些模式匹配编译速度慢的问题(#10258)
- 再次在
IterableWrapper
上提供equals
和hashCode
(修复 2.13.9 回归)(#10205) - 改进
-Vimplicits
;errors 现在会显示完整的隐式搜索树(#9944) -Vprint
默认为-Vprint:typer
;phases 可以用~
作为前缀,表示“before and after”(#10173)
2.13.11 还包括一些 Scala 2.12.18 的更改。(上面列出了一些最重要的问题,例如涉及 JDK 20 和 21 兼容性的问题。)
有关完整的 2.13.11 更改列表,可参阅所有合并的 PR 和所有已关闭的 bug。
已知的问题
发现了一些回归:
- 穷举检查器在匹配 Java 枚举类型时发出虚假警告(2.13.11 回归)(scala/bug#12800)
- 当使用已废弃的默认方法扩展 Java 接口时,重复的
@Deprecated
注释会在通过 Java 反射访问时导致java.lang.annotation.AnnotationFormatError
(2.13.11 回归)( scala/bug#12799 )
计划将在 Scala 2.13.12 中解决这些问题。
详情可查看更新说明:https://github.com/scala/scala/releases/tag/v2.13.11