IT之家 5 月 22 日消息,JetBrains 官方宣布 Kotlin 2.0.0 正式發(fā)布,其代碼已上傳到 GitHub 庫。
Kotlin 2.0 亮點(diǎn)
K2 編譯器現(xiàn)已進(jìn)入穩(wěn)定狀態(tài):
默認(rèn)用于所有平臺(JVM、Native、Wasm 和 JS),且性能顯著提升。性能方面,JetBrains 團(tuán)隊編譯了 1000 萬行代碼以確保其質(zhì)量穩(wěn)定,涉及 18,000 多名開發(fā)人員和 80,000 多個項目。
IDE 支持:
新版 Kotlin 插件已集成在 IntelliJ IDEA 和 Android Studio 中。
新 Compose 編譯器已集成 Gradle 插件:
從 Kotlin 2.0.0 開始,org.gradle.jvm.environment
Gradle 屬性默認(rèn)會與 Kotlin 版本一同公布,從而更好地區(qū)分 Kotlin 多平臺庫的 JVM 和 Android 版本。
Kotlinx-metadata-jvm 庫:
kotlinx-metadata-jvm 庫現(xiàn)已進(jìn)入穩(wěn)定狀態(tài)?
Lambda 函數(shù):
Kotlin 2.0.0 引入了一種使用生成 lambda 函數(shù)的新默認(rèn)方法“invokedynamic”,可生成更小的二進(jìn)制文件。
使用 Apple 平臺上的標(biāo)記(signposts)監(jiān)控 Kotlin / Native 中的 GC 性能:
以前,開發(fā)者只能通過查看日志來監(jiān)控 Kotlin / Native 的垃圾回收器 (GC) 的性能。然而,這些日志并未集成到 Xcode Instruments 中(后者是一款用于調(diào)試 iOS 應(yīng)用性能問題的工具包)。從 Kotlin 2.0.0 開始,GC 會通過 Instruments 中提供的特殊標(biāo)記來報告暫停,從而允許在應(yīng)用程序內(nèi)進(jìn)行自定義日志記錄。
使用 Objective-C 方法解決 Kotlin / Native 中的沖突:
Objective-C 方法可以用不同的名稱,但必須具有相同的數(shù)量和類型參數(shù)。例如,locationManager:didEnterRegion: 和 locationManager:didExitRegion:。在 Kotlin 中,它們都具有相同的簽名,因此嘗試使用時也會觸發(fā)沖突重載報錯。
放在以前,開發(fā)者必須手動解決沖突才能避免此編譯錯誤,而為了改善 Kotlin 與 Objective-C 的互操作性,Kotlin 2.0.0 引入了新的 @ObjCSignatureOverride 注釋。該注釋會指示 Kotlin 編譯器忽略沖突的重載,以防從 Objective-C 類繼承多個具有相同參數(shù)類型但參數(shù)名稱不同的函數(shù)。
支持 Kotlin / Wasm 中的命名導(dǎo)出:
支持命名導(dǎo)出和無符號原始類型的 @JsExport 函數(shù),從而提高了可讀性,并幫助開發(fā)者更好地管理模塊之間的依賴關(guān)系,還能使 Kotlin 和 JavaScript 模塊之間的代碼共享更容易。
此外, Kotlin 2.0.0 還支持生成 Kotlin / Wasm 中 TypeScript 聲明文件(IT之家注:實(shí)驗性功能,可能會隨時被刪),能夠根據(jù) @JsExport Kotlin 代碼中的聲明生成 TypeScript 定義,從而讓 IDE 和 JavaScript 工具使用這些定義來提供代碼自動補(bǔ)完功能。
默認(rèn)使用 Binaryen 優(yōu)化生產(chǎn)版本:
Kotlin / Wasm 工具鏈現(xiàn)在會在生產(chǎn)編譯過程中對所有項目默認(rèn)應(yīng)用 Binaryen 工具,而無需進(jìn)行手動設(shè)置。官方估計,這將進(jìn)一步改善項目的運(yùn)行時性能并減小二進(jìn)制文件大小。當(dāng)然,此更改僅影響生產(chǎn)編譯。開發(fā)編譯過程保持不變。
用于多平臺項目中編譯器選項的新 Gradle DSL 實(shí)驗性功能(可能隨時被刪):
Kotlin 2.0.0 引入了全新的 Gradle DSL,可用于在多平臺項目中更輕松地配置編譯選項。此前在 Kotlin 中使用 Gradle 配置編譯選項只能針對較低的層面,例如單個任務(wù)、編譯過程或源代碼集。有了這個新的 Gradle DSL,您就可以直接設(shè)置全局配置編譯選項。
替換枚舉類值泛型函數(shù)?的穩(wěn)定方式
在 Kotlin 2.0.0 中,訪問枚舉類值的方式變得更加穩(wěn)定。Kotlin 2.0.0 引入了新的專門用于枚舉的穩(wěn)定函數(shù) enumEntries<T>(),可返回給定枚舉類型 T 的所有枚舉條目列表。
Kotlin 之前還引入了一個枚舉類的屬性 entries,目前已經(jīng)進(jìn)入穩(wěn)定狀態(tài)并將與上述函數(shù)一起替代“不再推薦使用”的 values ()。
穩(wěn)定的 AutoCloseable 接口
自 Kotlin 2.0.0 開始,開發(fā)者常用的 AutoCloseable 接口宣布進(jìn)入穩(wěn)定狀態(tài),它可以允許開發(fā)者輕松關(guān)閉資源,并包含兩種有用的函數(shù):
use () 擴(kuò)展函數(shù),用于在選定的資源上執(zhí)行給定的塊函數(shù),并保證能夠在無論是否拋出異常的狀態(tài)下都能正確關(guān)閉相關(guān)資源。
AutoCloseable () 構(gòu)造函數(shù),用于創(chuàng)建 AutoCloseable 接口的實(shí)例。
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。