Scala 3 正式发布

来源: OSCHINA
编辑:
2021-05-18 07:15:00

Scala 3 稳定版来了!发布公告写道:“经过 8 年的努力开发,在此期间共产生了 28000 多次 commit、7400 多个 PR,以及关闭了 4100 多个 issue。从2012年12月6日 Scala 3 的首个 commit 算起,共计超过 100 人为项目做出了贡献。现在,Scala 3 通过结合类型理论的最新研究以及 Scala 2 的行业经验,Scala 的第三次迭代版本变得更易于使用、学习和扩展。”

按照规划,3.x 期间的更新频率是每隔 6 周发布一次常规维护更新。

升级方面,对于 Scala 2.x 用户,开发团队提供了从 Scala 2 到 3 的平滑且增量的迁移路径,Scala 2.13 和 3.0 将使用相同的标准库。共享标准库消除了 Scala 2.13 和 3 之间的主要潜在差异,并有助于迁移。但这也意味着对标准库的二进制不兼容更改将不得不等到 Scala 3.x 系列中的稍后版本,届时将拥有补救二进制不兼容的工具。更具体地说,由于 Scala 2.13 在其系列之内保持向前和向后二进制兼容,因此无法添加或删除任何类或方法。

除了标准库,通过共享 ABI,Scala 3.0 和 2.13 工件可以共同存于类路径上并且可以无缝地互操作,这样可以逐步迁移并简化测试。

目前 Scala 3 已经向后兼容,它可以使用由 Scala 2.13 构建的库。为了实现向前兼容,Scala 3 编译器将提供一种机制来确保公共接口位于公共语言子集中,以便可以在 Scala 2.13 中使用它。这意味着作为库作者的开发者可以直接使用某些 Scala 3 内容,而无需从 Scala 2.13 升级。

除了技术互操作性之外,开发团队还将关注于测试和改进工具,以确保顺利迁移。例如,原定于 2.14 版本中进行的迁移警告将在 2.13 中实施。

下边简单介绍一下 Scala 3 值得关注的新特性。

新类型

  • 交集类型
  • 并集类型
  • 类型 Lambda
  • 匹配类型
  • 依赖函数类型
  • 多态函数类型

上下文抽象

  • Using 子句
  • 扩展方法
  • 实现 Type Class
  • Type Class 推导
  • Multiversal Equality
  • 上下文函数
  • 隐式转换

其他新特性

  • Trait 参数
  • 透明 Trait
  • 统一应用函数
  • Export 子句
  • 不透明类型别名
  • 开放类
  • 参数解元组
  • Kind 多态
  • Matchable Trait
  • @threadUnsafe 注解
  • @targetName 注解
  • 新控制语法
  • 可选括号
  • 显式 null
  • 安全初始化
  • TypeTest
  • ……

详细更新内容点此查看

展开阅读全文
点击加入讨论🔥(23) 发布并加入讨论🔥
23 评论
9 收藏
分享
返回顶部
顶部