Appearance
Phase 4 LLVM 后端与原生产物地基
目标
Phase 4 的任务是把 Qlang 从“只有语义层”推进到“能落真实产物”的后端主干,同时把 CLI、driver、backend、toolchain 的边界做稳。
核心交付:
ql build- textual LLVM IR
- object / executable / static library / dynamic library emission
- toolchain boundary
- codegen regression harness
合并后的切片结论
1. Backend foundation
第一组切片先冻结了后端分层:
ql-driverql-codegen-llvmql build- 默认输出
target/ql/<profile>/<stem>.ll
关键设计:
ql-analysis不负责产物ql-codegen-llvm不读文件、不做 CLIql-driver负责 build request -> analysis -> codegen -> artifactql-cli只做用户入口和错误码
2. Native artifact pipeline
这组切片把后端从 .ll 推到真实产物:
--emit obj--emit exe--emit staticlib--emit dylib- compiler / archiver / linker failure 时保留中间产物
- library mode / program mode 分离
3. Extern C direct-call foundation
这组切片把 extern C 真实接进 codegen:
- extern block member 与 top-level extern declaration 都进入统一 callable identity
- direct extern call lower 成
declare+call - program mode 与 library mode 都打通
- extern call 参与 resolve/typeck/MIR/codegen 统一路径
4. Codegen harness
这组切片建立了最关键的回归基础:
- black-box codegen snapshots
- pass / fail fixture
- llvm-ir / obj / exe / dylib / staticlib 覆盖
- unsupported backend feature 走结构化 diagnostics
- first-class function value 不再 panic backend
当前架构收益
P4 现在已经建立:
- 稳定的 build driver 边界
- 可解释的 toolchain failure model
- 可回归的 artifact pipeline
- 可扩展到 FFI 的后端地基
当前仍刻意保留的边界
- richer ABI / runtime glue
- closure / tuple / struct 的更广 lowering
- first-class function value lowering
- 更大规模 toolchain family 组合探测
- 更完整 shared-library surface 与 linkage/visibility 控制
归档
本阶段原始切片稿已归档到 /plans/archive/phase-4。