大家好!众所周知,我有在平时维护一个简单的Kotlin编译器插件项目:Kotlin Suspend Transform Compiler Plugin。想必经常维护编译器插件的小伙伴们也清楚,每次 Kotlin 的主要版本递进,编译器的API都会或多或少的发生变化,也给编译器插件的更新维护带来不小的挑战。那么借此机会,我会在每次发生API变化的更新出现后,藉由此系列记录一下能有哪些编译器API的变化可以被我发现。不算是一种技术分享文,而是一种记录文,所以不保证有什么技术含金量喔~今天要记录的版本变化是:v2.3.20 - 2.4.0。不同于以往,这次在 Gradle sync 阶段 buildSrc 就开始出错了: Task :buildSrc:compileKotlin FAILED e: file:///suspend-transform-kotlin-compile-plugin/buildSrc/src/main/kotlin/GradleSupportHelper.kt:29:70 Using 'KOTLIN_1_9' is an error. Unsupported e: file:///suspend-transform-kotlin-compile-plugin/buildSrc/src/main/kotlin/GradleSupportHelper.kt:30:75 Using 'KOTLIN_1_9' is an error. Unsupported不过当然,这在看到 2.4.0 的更新日志的时候我就已经有预期了。从 Kotlin 2.4.0 开始,-language-version=1.9就不再被支持了,也就是说 K1 编译器从现在开始正式地不再支持了。出错的这部分代码在 buildSrc 中是一个辅助用的扩展函数:fun org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension.configGradleBuildSrcFriendly() { coreLibrariesVersion = "1.9.0" compilerOptions { apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) languageVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) } }因为在之前我注意到 Gradle 内置的 Kotlin 版本通常会略低,当我 K2 编译器发布了好几个版本了,但是在实际应用的 Kotlin 项目中,Gradle 内置的 Kotlin 版本仍然是 1.9.x,这就导致如果我打算通过 buildSrc 这类方式配置编译器插件的话,会导致低版本的 Kotlin 无法使用高版本
从 Kotlin 编译器 API 的变化开始: 2.4.0
大家好!众所周知,我有在平时维护一个简单的Kotlin编译器插件项目:Kotlin Suspend Transform Compiler Plugin。想必经常维护编译器插件的小伙伴们也清楚,每次 Kotlin 的主要版本递进,编译器的API都会或多或少的发生变化,也给编译器插件的更新维护带来不小的挑战。那么借此机会,我会在每次发生API变化的更新出现后,藉由此系列记录一下能有哪些编译器API的变化可以被我发现。不算是一种技术分享文,而是一种记录文,所以不保证有什么技术含金量喔~今天要记录的版本变化是:v2.3.20 - 2.4.0。不同于以往,这次在 Gradle sync 阶段 buildSrc 就开始出错了: Task :buildSrc:compileKotlin FAILED e: file:///suspend-transform-kotlin-compile-plugin/buildSrc/src/main/kotlin/GradleSupportHelper.kt:29:70 Using 'KOTLIN_1_9' is an error. Unsupported e: file:///suspend-transform-kotlin-compile-plugin/buildSrc/src/main/kotlin/GradleSupportHelper.kt:30:75 Using 'KOTLIN_1_9' is an error. Unsupported不过当然,这在看到 2.4.0 的更新日志的时候我就已经有预期了。从 Kotlin 2.4.0 开始,-language-version=1.9就不再被支持了,也就是说 K1 编译器从现在开始正式地不再支持了。出错的这部分代码在 buildSrc 中是一个辅助用的扩展函数:fun org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension.configGradleBuildSrcFriendly() { coreLibrariesVersion = "1.9.0" compilerOptions { apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) languageVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_1_9) } }因为在之前我注意到 Gradle 内置的 Kotlin 版本通常会略低,当我 K2 编译器发布了好几个版本了,但是在实际应用的 Kotlin 项目中,Gradle 内置的 Kotlin 版本仍然是 1.9.x,这就导致如果我打算通过 buildSrc 这类方式配置编译器插件的话,会导致低版本的 Kotlin 无法使用高版本