我了解到Scala受到限制,所有Scala字节码都需要从相同的编译器版本生成。例如我没有为2.9构建的库可以使用由2.9.1
构建的应用程序http://lift.la/blog/scalas-version-fragility-make-the-enterprise
我尝试在网上搜索有关此问题的更多讨论,但无法找到更多更新。这个问题,如在Scala 2.11.6中,是否在任何范围内得到修复?
答案 0 :(得分:5)
在Scala中,版本字符串中的“中间”数字是主要版本,因此在2.10.x和2.11.x中,主要版本为 10 ,分别 11 。
主要版本是二进制兼容。因此,如果您有一个针对Scala 2.11.0编译的库,您可以安全地在使用2.11.6而无需重新编译的项目中使用它,反之亦然。如果您的库是为Scala 2.10.5编译的,则必须重新编译它以在Scala 2.11.x项目中使用。
如果您的代码未调用已弃用的API,则它应与源兼容以及后续主要版本。
大多数图书馆同时发布至少两个主要版本,因此有很大的弹性。举个例子,Scalaz,它为Scala 2.9.3,Scala 2.10.x和Scala 2.11.x交叉构建了最新的工件。