写点什么

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

  • 2024-01-30
    北京
  • 本文字数:860 字

    阅读完需:约 3 分钟

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

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 之上的插件那样脆弱,后者功能更强大,但是严格依赖于编译器的版本。


原文链接:

https://www.infoq.com/news/2024/01/ksp2-kotlin-metaprogramming/

2024-01-30 08:003804

评论

发布
暂无评论
发现更多内容

腾讯云 Elasticsearch 新篇章 - 存算分离+读写分离+查询/IO并行化, 助力日志/搜索领域降本增效

腾讯云大数据

ES

5分钟搞定vue3函数式弹窗

不在线第一只蜗牛

Java Vue 函数式

孤注一掷——基于文心Ernie-3.0大模型的影评情感分析

百度开发者中心

人工智能 深度学习 文心大模型

HL Mando宣布与亚马逊网络服务合作

财见

【标准解读】物联网安全的系统回顾

华为云开发者联盟

后端 物联网 华为云 华为云开发者联盟

适用于 macOS 的参考资料管理软件:Bookends

Rose

Bookends Mac破解版

EVE-NG初次启动及WEB客户端访问

小魏写代码

前端开发学习与发展建议,错过很可惜

伤感汤姆布利柏

每日一题:LeetCode-24. 两两交换链表中的节点

Geek_4z9ami

Go 面试 算法 链表 LeetCode

如何上传苹果ipa安装包?

ARM版CentOS Linux系统镜像文件(苹果M1专用)

Rose

多模态大模型时代下的文档图像智能分析与处理

百度开发者中心

人工智能 图像识别 大模型

通义千问Qwen-72B-Chat基于PAI的低代码微调部署实践

阿里云大数据AI技术

大白话70个你必须知道的AI重要概念(一)

FinClip

创建service后,kubernetes会发生什么

华为云开发者联盟

Kubernetes 云原生 后端 华为云 华为云开发者联盟

推荐几个好用的程序员效率神器

EquatorCoco

后端 开发工具 后端程序员

软件测试/测试开发/全日制/测试管理丨ORM中间件 SQLAlchemy

测试人

软件测试

年度回顾 | 2023年,云起无垠的开拓与创新

云起无垠

软件测试/测试开发/全日制/测试管理丨后端接口文档管理Swagger

测试人

软件测试

35万奖金!开放原子开源大赛openInula前端框架生态与AI创新挑战赛启动报名!

openInula

开源 AI 前端 前端框架 生态

数据交付变革:研发到产运自助化的转型之路

百度Geek说

大数据 数据分析 BI 分析工具 企业号 1 月 PK 榜 数据仓模

左耳听风 - 做正确的事,等着被“开除”「读书打卡 day 04」

Java 工程师蔡姬

读书笔记 程序员 读书 职业发展 左耳朵耗子

揭秘关键指标稳定币供应比率(SSR):它如何影响你的投资?

Footprint Analytics

区块链 加密货币 稳定币

自动化集成有哪些典型应用场景?

RestCloud

零代码 APPlink 自动化集成

30万奖金!开放原子开源大赛“云原生数据缓存性能挑战赛” 等你来挑战!

新消费日报

如何购买国内大带宽云服务器

景博

软件测试/测试开发/全日制/测试管理丨ORM 价值与体系

测试人

缓存之美——如何选择合适的本地缓存?

京东科技开发者

KSP2 致力于改善 Kotlin 元编程,并添加对 K2 Kotlin 编译器的支持_编程语言_Sergio De Simone_InfoQ精选文章