Kotlin 2版本即將釋出

banq發表於2024-05-14


K2編譯器本身已經準備就緒:
JetBrains 現在正處於消除最終錯誤或推遲到 2.0.20/2.1.0 的階段。從 RC1 開始,您可以釋出新的二進位制檔案,供仍以 Kotlin 1.9 為目標的專案使用(Kotlin 支援 N+1 前向相容性)。您今天應該能夠在您的專案中使用 K2 2.0.0-RC2。

Gradle
Gradle 是一個充滿力量的構建系統,您最有可能在其中遇到與 K2 的整合問題,尤其是在重要或多平臺專案中。在撰寫本文時,KGP(kotlin gradle 外掛)2.0 在我測試的專案中沒有留下任何問題。 Compose Multiplatform 和 KMP 外掛仍然有一些粗糙的邊緣,即使用啟用了 compose 資源生成的桌面應用程式。

  • KT-67915 / https://github.com/JetBrains/compose-multiplatform/issues/4739
  • KT-67636

K2 IDE 外掛模式
看來 K2 IDE 外掛不會隨 K2 本身一起釋出。它目前仍處於 alpha 階段,並且在最新的 Android Studio 穩定版本中不可用。

編譯器外掛
雖然還不是一個穩定的 API,但許多專案都使用某種形式的編譯器外掛。流行的例子包括 Compose、kotlinx-serialization、zipline 等。我還發布了幾個 - redacted-compiler-pluginMoshiX。對於幾乎所有這些,您都需要找到一個與 2.0 相容的版本來測試 K2,因為編譯器 API 在版本之間經常發生變化,並且需要在其之上構建新的外掛版本。任何第一方外掛(即託管在 Kotlin monorepo 中)都不需要這個,因為它們是用 Kotlin 本身進行版本控制的。

Compose
Compose 的編譯器正在遷移到 K2 的 Kotlin monorepo,使其能夠與 Kotlin 同時釋出。 JetBrains 和 Google 已經編寫了很好的設定指南。

KAPT
KAPT 是 Kotlin 的 Java 註解處理工具。 Dagger、AutoValue 等流行處理器仍然依賴它在 Kotlin 專案中工作。

KAPT 4 仍處於預覽階段,在 K2 釋出時可能不會預設啟用,但無論如何您仍然應該嘗試一下。

KSP2
KSP是 Kotlin 優先的註釋處理工具,旨在在大多數用例中取代 KAPT。與 KAPT 一樣,KSP 是建立在 之上的AnalysisHandlerExtension,因此需要重新實現以支援 K2。這稱為 KSP2。它計劃與為 KSP 1 編寫的處理器實現 API 相容。

Kotlin 後設資料
kotlinx-metadata-jvm是一個用於高效讀取和寫入 Kotlin@Metadata註釋的 API。許多 Java 註釋處理和靜態分析工具使用它來理解有關它們正在處理/分析的位元組碼的 Kotlin 語言功能。

Android Lint
Android Lint 的分析核心有一個新的 K2 UAST 實現,但它仍處於實驗階段,在 K2 釋出後的一段時間內可能不會預設啟用。但是,如果它適合您,您應該嘗試並使用它。 Android 團隊對提交的問題反應非常迅速,經常在一個版本中修復問題。與 KSP2 一樣,它也是構建在 K2 中新的分析 API 之上。

效能
K2 有望顯著提高編譯器和 IDE 外掛的效能


 

相關文章