dotty/scala3 与 scala-native 和 scala-js 等技术的无缝集成度如何?

HPK*_*PKG 2 scala dotty scala-3

有什么限制是我们应该注意的吗?它是否需要我们使用一些类似 scalafix 的工具?或者它会开箱即用吗?

Mat*_*zok 6

一般从 2.13 迁移到 3.0:

  • Dotty 使用 2.13 集合,因此无需在此处更改内容 - 事实上 2.13 将与 3.0 如此接近以至于维护者决定跳过 2.14 版本,该版本本应作为垫脚石
  • 宏需要重写——这是最大的问题,但库维护者有时间去做,有些甚至现在正在重写(参见quill
  • 很少有弃用,例如forSome存在类型的语法消失(请参阅:文档中已删除的功能)
  • 库可能需要扩展自己以支持新内容(联合/交集/不透明类型),但直到您开始在代码中使用新内容之前,一切都像以前一样
  • 除了旧的 Scala 代码应该无需任何更改即可工作

Scalafix 甚至现在也用于生产,例如 Scala Steward 能够在将库更新到新版本时应用迁移。

Scala.js已经被支持作为JVM 旁边的Dotty 后端

最近 Scala Center 接管了 Scala-native,所以我们应该期待 Scala-native 的开发会加速(它有点停滞),它最终应该会成为另一个受支持的后端。我不知道他们是否能够在 Dotty 发布之前交付,但我对此表示怀疑。目前,Scala-native 必须首先获得对 2.12 和/或 2.13 的支持。如果您想了解或询问 Gitter,请跟踪此问题

长话短说:您需要等待用于移植到 Dotty 的库,然后更新您的宏(如果您编写了宏),此外对于 JVM 和 JS 后端来说,迁移应该非常简单。Scala 本机可能需要更多时间。

  • 在 3.0 中,旧的隐式以同样的方式工作。您可以继续使用较新的关键字,因为它们最终希望删除隐式关键字,但在 3.0 中,它只是一个可选的关键字替换。你不需要木兰或一半的无形,因为衍生将被内置......但这是我现在能想到的设计中唯一的突破性变化。 (2认同)