我想使用的Scala库(PiStache)是为Scala v2.9编写的,并且在7年内没有更新。
问:有人能指向Scala v2.9的转换或迁移指南到最新的v2.12.x吗?
我在网上搜索了任何转换或迁移指南,但没有找到任何转换或迁移指南。我看到的唯一选择是通过连续的发行说明,希望它们列出不兼容性。
我找到了各种讨论主题,这些主题描述了为什么次要版本之间存在不兼容性,但没有简洁的更改列表需要进行。当然,我可以采用试错法,只需在2.12.x下编译库,然后回复错误信息,但我希望避免这个(可能)耗时的过程。
答案 0 :(得分:3)
我找到的最佳迁移指南(2部分),重点是2.9 - > 2.10迁移:
tl; dr:大多数迁移工作都与库有关,如果库作者有更新的(兼容的)版本,那么你就是好的。但是,您可能会偶然发现Scala库中的各种小变化:
在迁移到2.10之前,Scala类库本身有许多您应该注意的更改。真正的重大变化是Scala演员被弃用而不赞成Akka。您仍然可以通过从Scala 2.10发行版导入scala-actors工件来使用它们,但建议完全迁移到新的actor系统,因为这也可能被2.10.1淘汰。 Typesafe的温柔民众提供了一个非常全面的移民指南,以协助您的努力。
我们遇到的不太普遍的API更改包括:
不推荐使用
List.elements
以支持List.iterator;TraversableOnce.toIndexedSeq
不再采用类型参数。这实际上在我们的代码库中非常普遍,导致了大量的编译错误,并且通过删除类型参数(这与开头无关)很容易解决;- Scala actor
Actor.receive
方法现已公开(之前受到保护)。必须通过删除受保护的修饰符来纠正我们现有的所有演员;- 偶尔会有微妙的API更改,需要进行少量代码修复,例如: Enumeration and Mapping。
关于2.10 - > 2.11(来自Release Notes,重点补充):
在2.10.x上编译而没有弃用警告的代码应在2.11.x上编译(我们不保证这适用于实验性API,例如反射)
关于2.11 - > 2.12(来自Release Notes,重点补充):
虽然Scala 2.11和2.12 主要源兼容,以便于交叉构建,但它们不是二进制兼容的。这使我们能够不断改进Scala编译器和标准库。
注意:对于使用Apache Spark的任何人,请注意最新版本2.3.0与最新版本的Scala 2.12.x不兼容,因此您必须使用Scala 2.11.x,直到此更改(很快,从我见过的讨论。)