K2 編譯器將在 Kotlin 2.0 中進入穩定狀態
我們一直在為 Kotlin 編譯器(代號 K2)開發新的前端。前端是編譯器的一部分,負責解析程式碼和執行語義分析、資料流分析、呼叫解析和型別推斷。這是開發者與編譯器互動最多的部分。編譯器也通過它在 IDE 中持續執行、報告所有錯誤和警告訊息,幫助完成自動補全、語義感知檢查、意圖和重構等任務。新前端已經可供預覽 – 我們將繼續進行完善和穩定工作,計劃在未來 Kotlin 版本中將其設為預設編譯器前端。我們已經決定將這個未來版本命名為 Kotlin 2.0。下文將詳細描述 Kotlin 2.0 版本的路線圖、我們的動力以及對它的期望。
Kotlin 2.0 釋出路線圖是什麼?
我們計劃再發佈一個按照傳統方式進行版本控制的版本,Kotlin 1.9,其中還將包括來自 K2 編譯器前端的持續開發的更新,因為它已經接近穩定。未來不會有 Kotlin 1.10。 Kotlin 1.9 後的下一個主要版本將是 Kotlin 2.0。
為什麼選擇 Kotlin 2.0?
前端是編譯器的主要部分。K2 編譯器前端不僅僅是對舊編譯器前端的重構,而是基於新架構從頭開始的完全重寫。我們一直在各種部落格、視訊和會議演講中釋出有關差異的技術細節。如需瞭解詳情,可以從K2 編譯器之路開始。簡而言之,新架構在設計上更快、更可擴充套件,解決了舊編譯器前端的技術債務,修正了各個位置的錯誤和極端情況,併為語言的未來擴充套件鋪平了道路。
對於程式語言,主要版本通常在引入主要功能或破壞性更改時遞增。不過,對於軟體程式,即使功能集基本保持不變,只要有內容被大幅重寫,表明大規模重做,就可以增大主要版本。雖然 Kotlin 是一種語言,但我們還是決定遵循這一軟體做法。首先,Kotlin 編譯器是一個大型軟體。Kotlin 語言的版本由其編譯器的版本定義。我們確實提供了 Kotlin 規範作為語言的參考,但不是它的定義。
它會破壞我的程式碼嗎?
Kotlin 隨著每個語言版本的更新而變化。有新的語言功能新增進來,舊的錯誤會得到修正。我們始終在儘量減少破壞性更改的數量和影響,並遵循 Kotlin 語言的演變流程。Kotlin 2.0 在這方面不會有任何不同。
我們有意識地避免在 Kotlin 2.0 中引入任何新功能。 Kotlin 編譯器前端的重寫是一個相當大的變化,本身就引入了許多改進。其一,新的資料流分析演算法比先前更精確並能帶來更好的智慧轉換 – 檢視這些問題以及具體示例。這會將無法在 Kotlin 1.9 舊前端編譯的紅色程式碼變成可在 Kotlin 2.0 中編譯的綠色程式碼。從技術上講,這是新 Kotlin 語言功能的特別之處。不過,它只是新編譯器架構的副作用。
此外,大量長期存在的錯誤已得到修正,並且,其中一些修正可能難免會破壞意外依賴於錯誤編譯器行為的程式碼。我們正在仔細研究新舊 K2 前端之間所有行為變化的影響,如果更改可能會影響相當數量的 Kotlin 使用者,我們就算不喜歡,也仍然會盡可能複製舊行為。
我們會盡全力將程式碼從 Kotlin 1.9 遷移到 Kotlin 2.0 的影響降到最低。 我們將及時釋出 Kotlin 2.0 穩定過程的最新資訊,並讓您有充足時間提前在專案中試用 Kotlin 2.0,以便您可以報告我們在測試中可能遺漏的任何迴歸。我們目前的工作重點是今年晚些時候 K2 編譯器前端的測試版質量版本,您可以在這個路線圖問題中檢視進度。
IDE 對 Kotlin 2.0 的支援如何?
Kotlin IDE 外掛捆綁在 IntelliJ IDEA 和 Android Studio 更新中。它包括用於對程式碼進行語義分析的 Kotlin 編譯器前端的副本,但這不是用於實際編譯程式碼的 Kotlin 編譯器版本 – 編譯器的實際版本由構建檔案中的設定決定。因此,通過 Kotlin 語言版本 2.0 編譯程式碼時,您將使用新的編譯器前端並獲得新編譯器架構的所有效能優勢。但是,IDE 仍可能使用舊前端檢查程式碼。
為了在 IDE 中為您提供新編譯器前端的效能優勢,我們正在編寫一個全新版本的 Kotlin IDE 外掛,它以 K2 編譯器前端為基礎構建。 我們目前正在推進這個新 IDE 外掛的公開預覽。您可以關注這個問題瞭解動態。
Kotlin 2.0 之後有什麼計劃?
Kotlin 2.0 編譯器前端的新架構可以乾淨地實現許多精彩的新功能。其中一些功能,例如 KT-10468 上下文接收器,已經可以在舊編譯器前端中供使用者預覽,但預設不會在 Kotlin 2.0 中啟用。它們將停留在預覽階段。新功能將在未來的 Kotlin 2.x 版本中穩定,我們管道中的其他新功能也將同時實現。一如既往,我們將通過Kotlin 路線圖分享計劃的定期動態。
Kotlin 3.0 什麼時候推出?我們還不知道。我們正在試探性地討論未來語言的重大變化,特別是我們上一次Kotlin功能調查中最受歡迎的請求。部分變化可能意義相當重大,足以帶來新的主要 Kotlin 版本。
您可以如何提供幫助?
試用新的編譯器前端,把您的想法告訴我們!從 Kotlin 1.8.20 開始,您可以通過常規 Kotlin 語言版本標誌啟用 Kotlin 2.0 語言版本的預覽。
瞭解詳情
本博文英文原作者:Roman Elizarov
⏬ 戳「閱讀原文」瞭解更多
本文分享自微信公眾號 - JetBrains(JetBrainsChina)。
如有侵權,請聯絡 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。
- K2 編譯器將在 Kotlin 2.0 中進入穩定狀態
- Fleet |「後臺探祕」第3期:狀態管理
- 使用 dotMemory 優化 dotMemory | 技術解析
- 隆重推出 Qodana:您最愛的 CI 的程式碼質量平臺
- 參與 JetBrains IDE 的新版 UI 預覽
- JetBrains 孵化器合作計劃上線!6 個月免費 5 折優惠!
- 使用 JetBrains Gateway 和 Gitpod 進行遠端開發
- JetBrains 與 Gitpod 合作,以加強遠端開發服務
- 抽獎調查!參與 2022 開發者生態系統調查,贏 MacBook、Nvidia 顯示卡等好禮!
- JetBrains IDE 和 .NET 工具 2022.1 版本現已釋出
- 2022 最佳程式碼審查工具——調查結果
- JetBrains公佈 WebStorm 2022.1 路線圖
- 直播預告 | 2022 第一個 PHP 專場,帶你展望 PHP 的新年新氣象!
- JetBrains IDE 和 .NET 工具 2021.3 現已釋出!
- 下一代 IDE 來了?有請 「Fleet」登場!
- JetBrains 等多家公司宣佈成立 PHP 基金會
- JetBrains 2020 年度亮點:IDEA 中國使用者最多、持續加大開源貢獻力度
- JetBrains 2020 Java調查報告:中國開發者使用比例最高,Java 8最受歡迎