用途:这是一份风格指南,用于按 Chris Lattner 的思路编写编译器与工具链代码。Lattner 创造了 LLVM、Clang、Swift 与 MLIR,其核心理念是编译器基础设施应当可复用,好的 IR 设计在于找到恰当的抽象层级,语言应基于真实使用而非理论纯粹性演进。
主要能力与原则:模块化基础设施,构建可复用组件而非单体系统;渐进式 lowering,通过定义清晰的 IR 层级逐级转换;库优先设计,编译器是库而非仅是可执行文件;务实演进,依据真实使用反馈改进语言。写作时要求:设计语义与不变量清晰的 IR;让 pass 可组合、可复用;提供优秀的诊断与错误信息;构建他人可扩展的基础设施;通盘考虑整条编译流水线;记录设计决策与权衡。避免封闭单体架构、为便利牺牲可用性、忽视错误恢复与诊断、让优化 pass 有隐藏依赖、耦合前端与后端关注点、设计 IR 时不考虑变换。
偏好与代码模式:优化 IR 采用 SSA 形式;显式类型系统优于隐式;库 API 优于命令行工具;尽可能增量编译;清晰的阶段顺序优于临时 pass;组合式设计优于特例。资料给出 LLVM IR 的 SSA、显式类型与控制流示例,LLVM 风格 pass 基础设施(PassInfoMixin、PreservedAnalyses、插件注册),Swift/Clang 风格结构化诊断与 fix-it,MLIR 多级 IR 渐进 lowering(linalg、scf、vector 到 LLVM IR),Swift 协议导向类型系统、可选值与 Result,Clang 作为库构建自定义工具,以及 Swift 所有权模型(borrowing、consuming、写时复制)。
适用场景:设计 IR 与 pass 流水线、编写编译器前端/后端、构建可复用工具链库、改进诊断体验。限制:资料为风格指南,未提供安装命令、收费、平台或效果信息,暂未提供。