Scala是一門現代的多范式編程語言,志在以簡練、優雅及類型安全的方式來表達常用編程模式。Scala 官方公布了 Scala 2 接下來的發展計劃,開發團隊表示工作將轉向 Scala 3,而不是開發 Scala 2.14。
重點雖然轉移到 Scala 3,但將繼續維護 Scala 2.13,以確保社區有足夠的時間謹慎地過渡到 Scala 3。
長期以來,開發團隊認為必須有 2.14 版本才能確保順利過渡到 3,但是經過大量的研究和討論,現在確信完全不需要 2.14。這樣可以帶來兩方面的好處:
Scala 3 將可以更快地投入生產環境。在完善編譯器和升級相關工具方面,有許多工作要做,同時將幫助生態系統升級。
無需為 2.14 重建 Scala 庫和工具生態系統,從而節省了維護人員的時間以準備 Scala 3。
主要目標是提供從 Scala 2 到 3 的平滑且增量的遷移路徑,要實現此目的,Scala 2.13 和 3.0 將使用相同的標準庫,并且它們的編譯器后端將以相同的方式輸出字節碼。
共享標準庫
共享標準庫消除了 Scala 2.13 和 3 之間的主要潛在差異,并有助于遷移。
但是,這也意味著對標準庫的二進制不兼容更改將不得不等到 Scala 3.x 系列中的稍后版本,屆時將擁有補救二進制不兼容的工具。更具體地說,由于 Scala 2.13 在其系列之內保持向前和向后二進制兼容,因此無法添加或刪除任何類或方法。
如果在從 2 到 3 的遷移期間,迫切需要在這些限制之外發展標準庫,開發團隊可能最終仍會選擇發布 Scala 2.14 版本。
共享的 ABI
除了標準庫,通過共享 ABI,Scala 3.0 和 2.13 工件可以共同存于類路徑上并且可以無縫地互操作,這樣可以逐步遷移并簡化測試。
目前 Scala 3 已經向后兼容,它可以使用由 Scala 2.13 構建的庫。為了實現向前兼容,Scala 3 編譯器將提供一種機制來確保公共接口位于公共語言子集中,以便可以在Scala 2.13 中使用它。這意味著作為庫作者的開發者可以直接使用某些 Scala 3 內容,而無需從 Scala 2.13 升級。
除了技術互操作性之外,開發團隊還將關注于測試和改進工具,以確保順利遷移。例如,原定于 2.14 版本中進行的遷移警告將在 2.13 中實施。
除此之外,Scala 官方還羅列了一些相關問題,包括爭取在 2020 年年底之前發布第一個候選版本、如何采用類型化抽象語法樹 TASTy 處理二進制兼容性問題、宏無法從 2.x 直接遷移到 3.0、以及性能、測試工具與 IDE 支持等,詳情查看官方說明:
https://www.scala-lang.org/2019/12/18/road-to-scala-3.html