Kotlin 1.2.70 釋出

bennyhuo發表於2018-09-13

我們非常高興地給大家帶來了 Kotlin 1.2.70 的更新,這個版本主要修復了一些 Kotlin 1.2 的 bug 並優化了開發工具,主要包括:

  • Kotlin/JS 的增量編譯效能得到了顯著的提升
  • 使用 @OptionalExpectation對 kotlin-stdlib-common 中的一些註解進行了標註
  • Kotlin 編譯器包含了使用 Excelsior JET 編譯的二進位制版本
  • IntelliJ IDEA 外掛新增了新的用於重構、程式碼審查、程式碼提示等特性
  • 修復了很多編譯器以及 IDE 中廣為人知的問題,並進行了效能優化

這次更新相容 IntelliJ IDEA 2017.3 – 2018.3 以及 Android Studio 3.1, 3.2 RC 和 3.3 Canary。

我們非常感謝這個版本中的外部的貢獻者: Toshiaki KameyamaLucas SmairaRaluca SauciucDenis VnukovJonathan LermitageJake WhartongenTakasyBloderArtem ZinnatullinKenji TomitaNico Mandery, Juan Chen

完整的更新內容請參考 更新日誌。下面是本次更新的一些重點內容。

Kotlin/JS 增量編譯

Kotlin/JS 的增量編譯得到了顯著的提升,通過分析工程的結構,增量編譯的構建速度將會達到 7 倍以上。另外,Kotlin/JS Gradle 編譯也已經支援了跨模組增量編譯。

需要指出的是,增量編譯還在試驗階段,預設不會開啟。如果你想要嚐鮮,需要通過以下方式開啟它:

  • 對於 Gradle 工程,在 gradle.properties 或者local.properties 中新增  kotlin.incremental.js=true
  • 對於 IntelliJ IDEA 的工程, 到 Settings -> Build, Execution, Deployment -> Compiler -> Kotlin Compiler -> Kotlin to JavaScript 中選中 Enable incremental compilation (experimental)

無論遇到什麼有關 Kotlin/JS 增量編譯的問題,請你及時反饋告訴我們。

Multiplatform 更新

kotlin-stdlib-common 中引入了許多平臺相關的註解,並用 1.2.60 引入的 @OptionalExpectation 註解來標註它們。編譯器將會在編譯過程中忽略跨平臺程式碼宣告中的這些註解,儘管他們可能沒有具體對應的實現。

例如,我們在跨平臺程式碼中使用 Java 虛擬機器專用的@JvmName註解,並將這些程式碼編譯成 JavaScript 程式碼時不會遇到任何相關的問題。

前面提到的註解包括: @JsName@JvmOverloads@JvmStatic@JvmName@JvmMultifileClass@JvmField,

@JvmSuppressWildcards@JvmWildcard,@Volatile@Transient@Strictfp,

@Synchronized

IntelliJ IDEA 支援優化

『快速修復(Quick Fix)』可以將集合框架的函式呼叫轉換為序列(Sequence)。

我們現在可以通過『快速修復』將集合框架的變化操作轉換為等價的懶序列變換,這樣可以減少不必要的開銷,對於一些比較複雜的場景將會有顯著的效能提升。

IntelliJ IDEA 外掛的其他優化點:

  • 將 if 判斷替換為 ?.let 以及其他類似的操作的提示
  • 減少冗餘的 with 呼叫的程式碼檢查
  • 將屬性轉換為 getter 轉換為初始化操作的提示
  • 將 assertTrue(a == b) 替換為 assertEquals(a, b) 的程式碼檢查和快速修復
  • “Redundant return label” 檢查
  • 預設引數值移除的快速修復
  • forEach parameter unused” 檢查
  • 很多問題修復和效能提升

二進位制版本的 Kotlin 編譯器

Github releases 裡面除了 Java 虛擬機器版本的 Kotlin 編譯器之外還提供了主流作業系統(Linux、macOS、Windows)下的二進位制版編譯器。它採用  Excelsior JET 編譯,具有啟動速度快的優點,更適用於小檔案的編譯和指令碼的執行。

Excelsior JET 版本的執行時支援一些 JVM 上的以及一些特定的選項,通過 -J 傳給 kotlinc 即可。所有支援的引數請參加 Excelsior JET 說明文件

如何更新

你可以通過設定中的 Tools -> Kotlin -> Configure Kotlin Plugin Updates 中的 『Check for updates now』 按鈕更新 IntelliJ IDEA 和 Android Studio 的 Kotlin 外掛,Eclipse 的外掛可以在 Eclipse Marketplace 中更新(請在 Help -> Eclipse Marketplace 中搜尋 Kotlin 外掛)。

當然,不要忘了更新你的工程中 Maven 和 Gradle 指令碼中的 Kotlin 編譯器和標準庫的版本。

如果你遇到任何問題,歡迎來我們的論壇 [英文 中文]中提問,也可以加入 Slack 頻道的討論 (在這裡獲得邀請),或者在 issue tracker 當中提交問題。

Let’s Kotlin!

原文:Kotlin 1.2.70 is Out!

相關文章