Bendi新闻
>
KSP2 致力于改善 Kotlin 元编程,并添加对 K2 Kotlin 编译器的支持

KSP2 致力于改善 Kotlin 元编程,并添加对 K2 Kotlin 编译器的支持

5月前

作者 | Sergio De Simone
译者 | 张卫滨
策划 | 丁晓昀

KSP 2.0 是 Kotlin 符号处理(Kotlin Symbol Processing)的演进版本,目前处于预览状态,谷歌的软件工程师 Ting-Yuan Huang 和 Jiaxiang Chen 说到,它引入了新的架构,旨在解决 KSP 1.0 中的一些局限性,并增加了对新的 K2 Kotlin 编译器的支持。

KSP1 是作为编译器插件的形式实现的,而 KSP2 是一个独立的库,无需设置编译器即可运行,并能完全控制其生命周期。Huang 和 Chen 说,这使得以编程方式调用 KSP 以及在 KSP 处理器中设置断点变得更容易。下面的代码展示了如何配置 KSP2 并执行它来处理符号的列表:

val kspConfig = KSPJvmConfig.Builder().apply {  // All configurations happen here.}.build()val exitCode = KotlinSymbolProcessing(kspConfig, listOfProcessors, kspLoggerImpl).execute()

KSP2 中另外一个值得注意的差异是,它使用了仍处于 beta 状态的 Kotlin K2 编译器来处理源码。不过,如果你愿意的话,也可以通过在gradle.properties中设置languageVersion属性,从而以 K1 的方式使用 KSP。

除此之外,KSP2 还旨在解决 KSP1 中的一个缺陷,即同一个源文件可能会被编译多次。借助与 K2 的集成,KSP2 尝试调整 K2 编译文件的方式,使其只处理一次,从而能够提升性能。

KSP2 还引入了一些行为的变化,以提高开发人员的工作效率,以及可调试性和错误恢复能力。

在 KSP 1.0.14 或更新的版本中,可以在gradle.properties中使用一个标记来启用新的 KSP 预览版本:

ksp.useKSP2=true

KSP 是一个支持创建插件来扩展 Kotlin 编译器的 API。它以独立于编译器的方式理解 Kotlin 的语言特性,如扩展函数、声明处型变(declaration-site variance)和局部函数。

该 API 根据 Kotlin 语法在符号层对 Kotlin 程序结构进行建模。当基于 KSP 的插件处理源程序时,处理器可以访问类、类成员、函数和相关参数等构造结构,而 if 代码块和 for 循环等则无法访问。

这使得基于 KSP 的插件不像建立在kotlinc之上的插件那样脆弱,后者功能更强大,但是严格依赖于编译器的版本。

查看英文原文:

KSP2 Aims to Improve Kotlin Meta-Programming, Adds Support for the K2 Kotlin Compiler(https://www.infoq.com/news/2024/01/ksp2-kotlin-metaprogramming/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

预览版“纯血鸿蒙”开放申请,中国开发者要为“四端”体验一致头痛了

挑战 Spark 和 Flink?大数据技术栈的突围和战争|盘点

谷歌放弃毛利率 99%业务:不想用我们的可以免费迁出!上云免费、下云无限“贵”的时代即将结束?

并发王座易主?Java 21 虚拟线程强势崛起,Go & Kotlin还稳得住吗 | 盘点

微信扫码关注该文公众号作者

来源:InfoQ

相关新闻

Spring Boot 3.2 和 Spring Framework 6.1添加对 Java 21、虚拟线程和 CRaC 的支持Tech Goes Home获得260,000 美元的资助,用于支持数字包容性编程和新社区奖学金Linux 6.10 将支持 RISC-V 架构下的 Rust 编程语言速度秒杀GPT-4o!Mistral开源首个22B代码模型破记录,支持80+编程语言AMD Zen5越来越近了!Linux GCC编译器已支持德州州长获14位州长对边境的支持Stability AI开年首个大模型:专写代码,支持18种编程语言,上下文100K,苹果笔记本离线就能跑美国就南中国海发生的事件对菲律宾表示支持研究显示:年轻信徒对以色列和末世论的支持率下降四面楚歌!埃及公开宣布:支持南非在国际法院对以色列的诉讼外交部发言人:美方应停止散布中国政府支持对美“网络攻击”的虚假信息拔管后高流量鼻导管吸氧和持续正压通气对危重患儿脱离呼吸支持的影响:随机临床试验比VS Code快得多!用Rust重写,支持OpenAI、Copilot 的Zed编辑器开源了向微软“复仇”!支持OpenAI、Copilot 的Zed编辑器要干掉VS Code:Rust+少插件,速度贼快Node.js 22发布,增强了对ESM模块和Web API的支持打磨三年、支持万亿 MoE,腾讯混元模型团队的真实推理实力到底如何?VS Code劲敌、Atom原作者主导、Rust编写的“最好”编辑器——Zed开始支持Linux北京人形机器人创新中心发布全球首个纯电驱拟人奔跑的全尺寸人形机器人;北京拟最高奖励1亿元支持人工智能产业发展丨AIGC日报支持华为鸿蒙智联!集刮痧、拔罐、热敷按摩、红光疗护于一身的迷你吸痧仪~用完一身舒畅!英特尔 Arrow Lake-S 处理器规格泄露:最高 24 核 32 线程,原生支持雷电 4英伟达投的Sora竞品免费了!网友挤爆服务器,120秒120帧支持垫图9888 元起,微软 Surface Pro 10 商用版发布:搭载酷睿 Ultra 处理器、防眩光屏幕,支持 5G加拿大抗癌协会合作项目需要您的支持及B型脑膜炎疫苗访谈要点(含视频)三星支持的下一代内存技术,获得新突破
logo
联系我们隐私协议©2024 bendi.news
Bendi新闻
Bendi.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Bendi.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。