来自Scala 3团队的问候!我们很高兴地宣布,Scala 3的稳定版本的第一个候选版本– Scala 3.0.0-RC1。
此版本在大版本发布之前带来了一些最后的抛光,清理和更改。进行了一些语言更改以改善用户体验,并完善了元编程框架。我们还致力于稳定版本发布之前必须解决的问题。
从M3版本发布到今天,总共有超过400个PR被合并!在下面阅读更多!
现在,可以将扩展上的类型参数与方法本身上的类型参数组合在一起。例如。:
相比之下,只有在将方法引用为非扩展方法时,才可以传递与扩展后的类型参数匹配的类型参数:
通配符导入_替换为*。其动机是大多数其他语言都使用*。例如:
重命名运算符=>被软关键字as代替。也可以在外括号中使用。例如:
有关详细信息和讨论,请参阅PR#11244。在文档中阅读有关此更改的更多信息。
PR#11240更改了模式和函数参数中vararg拼接的语法。新语法使用后缀*代替:_ *,类似于声明vararg参数的方式。
它定义了一个没有初始值或JVM分配给对象字段的默认初始值的具体变量x。它只能用于类或对象中,不能初始化局部变量。
我们想出了一种更好的方式来表达这种惯用法:scala.compiletime对象中的特殊未初始化值。要获取未初始化的字段,您现在编写:
通过这种方式,比简单地写下划线更能表达冗长和易于理解。
从RC1开始,我们不再为案例类的伴随对象生成函数父对象。例如,这意味着在给定的案例类Foo(x:Int)下,您将无法在需要函数的位置使用Foo:
1 | f(Foo)| ^^^ |插入了方法`apply`。不建议使用自动插入功能,请显式编写“ Foo.apply”。
如警告所示,现在您应该编写Foo.apply而不是Foo。有关讨论,请参见问题#6190和PR#7207。
我们已经决定使用众所周知的scaladoc作为Scala 3(以前称为scala3doc)的文档工具的名称。.过时的dotty-doc(或scala3-doc)已在RC1中删除。我们还从scaladoc中删除了所有Kotlin依赖项(Dokka等)。有关详细信息,请参见PR#11349。要了解有关scaladoc的更多信息,请参阅文档
PR#11355将3.0之后的Scala版本的-source说明符从3.1更改为将来。 IE。现在是-source future和-source future-migration,而不是-source 3.1和-source 3.1-migration。语言导入也进行类似的更改。进行更改的原因是我们希望保持开放的可能性,以发布尚未包含在-source future下启用的所有更改的3.1版本。
修复#8634:支持-release选项#10746 –与Scala 2相同。此设置允许您指定Java平台的版本(8、9等),并使用特定于该Java平台的类编译代码,并发出该版本的字节码。
在元编程方面,已经做了很多工作。通常,我们正在清理和抛光API,以使其稳定释放。以下是发生的重要元编程更改:
如果您有任何疑问或任何反馈,请随时在Gitter频道上向我们发送消息。如果遇到错误,请在GitHub上打开一个问题。
183马丁·奥德斯基(138) 6 odersky 4贾斯珀·莫伊斯4艾德里安·皮克雷斯3塞巴斯蒂安·多埃拉内3MichałPałka3艾伯特·陈2亚历山大·阿坎巴特2索姆·斯奈特2肯吉·吉田2卢克·亨宁格2阿育斯2拉斐尔·乔利2阿纳托利·科梅图克2奥利维尔·布兰维克2雅维2 chang阿2 1昂昂1月8日那格罗1布莱恩1戴尔·维南德1弗洛里安·卡赛雷1弗洛里安·施马斯1伊尔托雷1杰森·扎格1朱利安·理查德·弗伊1卡特里克斯1杀手1迈克尔·皮尔奎斯特1米凯尔·布隆斯特兰德1迈克·塞缪尔1菲利普斯1菲利普斯Baalman 1 Rick M 1 Stephane MICHELOUD 1 Timur Abishev 1 Tomas 1 ansvonwa 1 ayush 1 costa100 1 iroha168 1 noti0na1 1 riiswa 1 tanishiking
如果您想动手并为Scala 3做贡献,那么现在是参与其中的好时机! 请访问我们的入门页面,寻找新的贡献者,并了解一些良好的前期问题。 它们是入侵编译器的完美切入点。