Julia 编译器迎来 UnifiedIR 统一架构
UnifiedIR for Julia
Julia 语言迎来重大架构升级,Keno 主导的 UnifiedIR 项目将原本分散的中间表示(IR)数据结构整合为单一核心。这一变革不仅统一了编译器流水线与外部编译器,还引入了基于 AttrGraph 的扁平化存储和混合区域设计。通过 JuliaLowering.UnifiedBackend,系统直接生成结构化的 UnifiedIR 区域形式,彻底摒弃了传统的 goto 线性 IR,并实现了从优化后的 IR 语句到源代码的精准溯源。此外,新的优化器通过 cell promotion 等机制,显著减少了条件交换等场景下的临时单元格操作,让编译器性能与可维护性迈上新台阶。
compact_graph! 赋予了降低过程一直渴望的对语法图的垃圾回收能力。
HN 评论区
21- slwvx
我猜 "IR" 指的是 "中间表示",而 "MLIR" [1]("多级中间表示")是 Chris Lattner/LLVM 推出的一种旨在实现模块化和可扩展性的 IR。对于不太了解的人,我认为 [2] 展示了当前 Julia IR 是如何在 Julia JIT 编译过程中生成和使用的。
- KenoFischer
呃,大家好。这是我的 PR,但你们最好知道,这只是基于我的一些设计文档生成的 AI 原型,距离真正可用还差得远。我确实想做类似的事情,但最终会采取这种形式还是其他形式,目前还悬而未决。
- jarbus
我之前不知道 Julia 还有其他的 IR 选项(虽然我离开 Julia 生态系统后开始更多地学习编译器相关知识)。这个方案打算替代哪些其他 IR?为什么不直接采用 MLIR?