Kotlin Compilation Process Overview
目录
本文基于 Kotlin 1.9.22 版本,对 JVM 编译流程进行分析,程序入口点为 K2JVMCompiler,源码位于 kotlin-compiler-embeddable,建议阅读本文前对 FE10(K1),FIR(K2) 有基本的了解
Kotlin 整体编译流程我个人将其分为以下几步:
- Create configuration,用于将 CLI 或其他渠道传给 kotlinc 的参数转化成 configuration
- Create environment,用于创建 KotlinLexer、Intellij Core Environment、VFS、Project、PsiFacade 以及将 SourceSet、Dependencies 等信息传递给编译器
- Compiler Frontend,用于分析和生成 KtFile + BindingContext 或 FIR(K2),同时也可以将这些事件分发到各个扩展点
- Compiler Backend,用于生成 Backend IR 和 generate code,比如在 JVM 平台会生成 bytecode
具体见下图,看不清的话可以去飞书文档画板:Kotlin Compilation Process Overview > 画板
一些可能用到的相关参考资料: