K2 編譯器將在 Kotlin 2.0 中進入穩定狀態

語言: CN / TW / HK


我們一直在為 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 語言版本的預覽。


啟用 Kotlin K2 編譯器



瞭解詳情



本博文英文原作者:Roman Elizarov

推薦觀看

直播回放:2022 Kotlin 中文開發者大會

2022 年底,我們舉辦了 2022 Kotlin 中文開發者大會。為期兩天的線上直播中,來自社群的10 多名技術專家和活躍開發者圍繞 Coroutine、Compose Multiplatform、Kotlin Multiplatform Mobile、Kotlin Symbol Processor、Ktor 等熱門話題帶來了精彩紛呈的分享。如果你錯過了現場直播,也歡迎至「JetBrains中國」B 站官方頻道收看大會回放,重溫活動的精華。


向上滑動閱覽 2022 Kotlin 中文開發者大會演講主題


  • 十分鐘帶您瞭解 Kotlin 的 2022

  • 《從 Jetpack Compose 到 Compose Multiplatform》

  • 《使用 DSL + KSP 打造跨平臺的 Kotlin SQLite 框架》

  • 《Kotlin Symbol Processor 應用與技巧》

  • 《通過 Ktor 框架同步完成 Server 及 Client Side 開發》

  • 《享受用 Kotlin 刷 LeetCode 的樂趣》

  • 《Kotlin 很簡單,一起來學習吧!》

  • 《在你的城市尋找 Kotlin 夥伴》

  • 《與時俱進:使用 Kotlin 嚐鮮 Spring 6》

  • 《從零開始欣賞 Coroutine 的精湛設計》

  • 《使用 Vaadin 搭配 Kotlin 快速開發 Web 應用》

  • 《使用 Kotlin 編寫 IntelliJ Plugin》

  • 《那些運營 Kotlin 社群的大小事》


進入播放列表

⏬ 戳「閱讀原文」瞭解更多

本文分享自微信公眾號 - JetBrains(JetBrainsChina)。
如有侵權,請聯絡 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。