Scala开发团队对外宣布,他们不发布Scala 2.14要直上Scala 3.0的决定,而原先要在2.14显示的搬迁警示,现在则会提前到2.13版本实施。开发团队会把开发重点摆在Scala 3,但是仍然会继续维护Scala 2.13,以帮助社群有足够的时间过渡到Scala 3。
开发团队解释,过去他们一主动得需要发布2.14版本才能顺利过渡到3.0,但是经过研究之后,他们现在认为不需要2.14,而且这样还能让Scala 3更快地进入生产阶段,也不需要为Scala 2.14重新构建函数库和工具,因此可释放更多的人力开发Scala 3。要让Scala 2能平顺地搬迁到3,2.13和3.0必须使用相同的标准函数库,而且编译器后端需要能发送相同的字节码。
共享标准函数库可以消除Scala 2.13和3之间的主要差异,能够帮助程序代码搬迁,不过,这代表标准函数库二进制不兼容性变更将会要到Scala 3.x版本,才会有修复的工具出现,官方解释,这是因为Scala 2.13系列版本为向前与向后二进制兼容,因此不能增加或是移除任何类别与方法。官方提到,在Scala 2到3搬迁过程,当他们发现需要在这些限制之外发展标准函数库,则还是会发布Scala 2.14。
另外,通过共享ABI(Application Binary Interface),Scala 3.0和2.13的构件可以共存于类别路径上,并且无缝地通用,而这样将能让开发者进行逐步搬迁,并且简化测试。官方表示,Scala 3现在已经向后兼容,除了有定义宏的函数库之外,在Scala 3可以直接使用Scala 2.13构建的函数库。
而为了要提供向前兼容性,Scala 3编译器将确保通用语言子集将包含公共接口,让Scala 2.13可以使用,这代表函数库作者可以将函数库升级到Scala 3,而且不用要求用户也跟着升级。
由于将项目从Python 2升级到Python 3是不少开发者心中的痛,官方特别强调,从Scala 2升级到Scala 3不会发生跟Python相同的情况,官方表示,由于Scala的静态类型系统,和他们所进行的兼容性工作,可以保证让开发者更快地从Scala 2过渡到Scala 3。
除了增加2.13和3.0两版本的互通性之外,官方还将投资时间开发测试与改善工具,帮助开发者能够顺利的搬迁应用程序,并且可能会将部分Scala 3的功能移植到2.13上。
领取专属 10元无门槛券
私享最新 技术干货