2

我们应该注意哪些限制?它会要求我们使用一些类似 scalafix 的工具吗?还是开箱即用?

4

1 回答 1

6

一般从 2.13 迁移到 3.0:

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

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

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

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

长话短说:你需要等待你使用的库被移植到 Dotty,然后更新你的宏,如果你写了任何宏,除了 JVM 和 JS 后端的迁移应该非常简单。Scala native 可能需要更多时间。

于 2020-04-05T02:46:44.350 回答