原生编译器 · 底层

HEXA-LANG

完全 hexa-native 的编译器 — 绑定 atlas 的定理,循环中无 LLVM
170×
codegen 性能 · S1 完成
~94s
24k 行 codegen 完整运行 · S2 通过
0
无 LLVM,凭策略
HEXA-LANG
↓ 滚动

会引用的编译器

hexa-lang 是一个 self-hosted 的原生编译器。每一行带公式的代码都引用一条 atlas 定理,每一次构建都通过八个 strict-lint 阶段,未经验证的东西无法离开工具链。它是 dancinlab 技术栈的最底层 — wilson、echoes、anima 以及 hexa-* 家族全都消费它;没有任何东西反向 import。

大多数编译器信任程序员。hexa-lang 不这样 — 它向每一条公式追问其来源。一行没有引用 atlas 定理的数学不是警告,而是构建失败。编译器将自身自举到一个 bit-stable 的 fixpoint,在不经 LLVM 的情况下生成自己的机器码,并将 provenance 视为类型层面的不变量,而非代码审查时的客套。

核心特性

绑定 Atlas 的定理: 每条公式都必须引用一个 atlas 条目。若某行公式没有引用,strict-lint 第四阶段会拒绝该构建 — provenance 是编译期不变量,而非约定俗成。
无 LLVM,无 C 转译: 完全 self-hosted。C 输出仅作为可移植的产物存在;架构是 hexa-native 的,编译到自己的机器码。
n=6 完全数原语: 编译器建立在六个原语和六个阶段之上。n=6 格子只是内部使用的工具 — 绝不是对语言表达能力的约束。

一次构建如何运行

01
Parse
源码进入前端 — 被分词、解析,并解析为带类型的语法树。
02
Strict-Lint
八个阶段把守构建:atlas 完整性、引用匹配、公式良构性、类型可靠性。
03
Lower
语法树经 HIR、MIR、LIR 逐级下降 — 每一层都是更小、更显式的形式。
04
Native Codegen
LIR 直接发出原生机器码。无 LLVM,无转译 — self-hosted 路径。

互联的工具链

01

Self-Hosted 自举

↳ 编译器逐位编译自身。

aprime_cc 达到一个 bit-stable 的 self-host fixpoint — ap1f、ap2f、ap3f 逐字节相同。编译器在不引入解释器、不引入第三方后端的情况下,精确再现自己的输出。

02

强制引用的 Lint

↳ 每次构建,八个 strict-lint 阶段。

atlas 完整性、引用匹配、公式良构性、类型可靠性 — 每一项都是一道关卡。跳过引用的构建无法编译;诚实由工具链强制,而非审查者。

03

HEXA-NATIVE-ONLY

↳ 无 LLVM,无 GHC,无 Rust 运行时。

语言对自己的代码生成负责。C 路径只是为可移植性准备的回退,绝非架构本身 — self-hosted 的原生路径才是规范路径。

04

下游生态

↳ 整个技术栈都经它编译。

代理 wilson、发现日志 echoes、意识模型 anima,以及 hexa-* 家族 — chip、bio、matter、arch — 全都位于下游。hexa-lang 是它们共享的底层。

完全 hexa-native 战役

编译器正分七个测量过的阶段走向完全 hexa-native。S1 — codegen 性能:完成,消除 O(N²) 的 lower_hir 瓶颈,170× 提速。S2 — full codegen 完整运行:PASS,24k 行端到端编译用时 ~94s,零错误。S3 — self-host fixpoint:进行中,证明 gen1 → gen2 → gen3 的 byte-stable — 核心关卡。S4 — 移除 hexa_v2:依赖 S3。S5 — native build 后端:完成,受 env 控制的 HEXA_BACKEND=native 选择器。S6 — 优化 pass:待办。S7 — 自有 assembler + linker:待办。每一阶段都是 measured-or-it-did-not-happen — 在 S3 关闭之前,不主张 self-host。