AOT 多模块 POC3(A.13,1.7.0-dev / v4.38)
English summary. AOT multi-module POC3 (spec A.13): AOT accepts qbc v1..v4; POC3 adds a symbol/import-export model POC,
modules_b10VM/AOT parity18 2.500000, generic Box parity, and an ELF-level cache POC (HIT=2/MISS=2). POC only — per-module objects, a complete symbol model/cache and AOT-native 2.0 remain 6–8/9–13 weeks HIGH and unimplemented.
Q+ 1.6.0-dev 完成 AOT 多模块 POC(spec 附录 A.13):AOT ELF 工具可直接编译 qbc v1..v4, 其中 v2+ 的 module/segment 元数据作为可选尾部解析并跳过。这是 POC,不是 AOT-native 2.0。
支持范围(POC)
- AOT 工具(
qbc_loader.q)接受 qbc v1..v4;v2+ 的 module table / segment table / function segment table 作为可选尾部元数据严格边界/计数校验后跳过; - v3/v4 原生
--module-map多模块产物(qboot 已全局扁平化函数/类型)可直接 AOT 编译; - 实测双模块 fixture(
modules_b8:app.util共享 structPair+ 跨模块函数app.geom::geom_sum):qboot --module-map→ qbc v4 → AOT ELF,输出与 VM 逐字节一致7 15; - 单文件/单模块 AOT 路径零回归;
cgtest_aot自举固定点刷新(新锚点),二次 build SAME。
POC3 增量(1.5.0)
- 符号/导入导出模型 POC:
(module,symbol)→global,冲突 loud;telemetryexports=4/resolved=1; modules_b10VM/AOT parity18 2.500000;泛型Box<i32>/<f64>parity;- ELF 级增量缓存 POC:
CACHE_POC3 HIT=2 MISS=2 OUTPUT_OK=1(per-module object 未实现,属 2.0)。
POC 限制(如实)
- 仅单层跨模块调用(依赖 qboot 扁平化后的 global function index,无独立
(module,local)→globalfixup 表); - 仅一个共享 struct 类型(同签名/同布局);无泛型布局共享;
- 无增量/分层对象缓存、无模块级初始化顺序/导入导出符号模型、无 AOT
module:line诊断; - v2 C-lite 模块产物仍 AOT loud 拒绝(
QBC_PARSE_FAIL -2,不产 ELF);v3/v4 是 POC 路径; - AOT-native 2.0 完整设计/实现仍未完成:设计评估 6–8 / 9–13 周 HIGH,不得称 2.0 完成。
与 AOT 其他边界的关系
- AOT 仍仅 Linux x86-64;threads/async/FFI、std.fs、未支持
sys_*等路径 loud; - Windows AOT 仍未实现(见 Win AOT spike 页);
- qbc v4 的 runtime module:line 仅 VM 消费;AOT 不接受 v4 诊断表(行为不变)。
复跑与文档
- fixtures/门禁:
modules_b8、tools/test.shAOT 段;发布树docs/AOT_NATIVE_MODULES_2.0_DESIGN.md(设计+可行性);spec 附录 A.13。 - 发布候选(NOT PUBLISHED);不得称 AOT 多模块/2.0 已发布能力。