v1.8.3 · v2.0 stage shipped · 2026

自举 编译器
自研 OS

JHYY (机会翼游) 是一个 自研、静态类型、表达式导向的系统编程语言。 编译器用自己编译自己,产出 byte-equal 的 QBE 中间表示, 最终生成原生 x86-64 PE 二进制。下一个里程碑:自研操作系统。

关于 / About

为什么是 JHYY?

大多数编程语言只是别人的工具。JHYY 是工具链的每一层——从 lexer 到 codegen, 从汇编到 ABI——都从零写起,然后让这门语言自己重新实现自己,直到 byte-equal 闭环。 这不是演示项目:它能编译、链接、跑通,也能跑自己。

🎯 设计目标

  • 自举编译器 — jhyy 编 jhyy, byte-equal `.il` 闭环
  • 原生性能 — QBE 后端,无 runtime / 无 GC,直产 PE/COFF
  • OS 友好 — 服务于 jhyy_OS 的语言扩展
  • 工程化 — 完整 spec / ABI 白皮书 / 回归套件

🧬 与众不同

  • 两套等价的编译器实现 — C-side 与 jhyy-side
  • Stage 2 N=4 byte-equal 闭环 — 5 个世代输出同 sha256
  • 多 ABI 多调用约定 — Windows x64 / System V / freestanding EFI
  • 11 个 MCP 工具 + VSCode 扩展 + 一键安装包
语言特性 / Features

一个 现代系统语言
该有的样子

静态类型 + 表达式导向 + 一等公民的函数。结构体、枚举、模式匹配、切片、命名空间、C FFI、模块系统——都有,但没有 GC,没有运行时垃圾。

T

静态类型

i8/i16/i32/i64,u*/f*/bool,指针 *T,定长数组 [T; N],切片 [*]T,struct / enum 全套。

{ }

表达式导向

if 是表达式、match 是表达式、块也是值。while / for i in start..end / break / continue 全员。

⇆

match + 穷尽

字面量 / 范围 / 枚举 / 通配符全支持,带穷尽性检查。0 | 1..10 => ... 区间 or-pattern 写法。

⇄

C FFI

extern fn printf(...) 直接调 C。多文件链接、结构体按值传参、命名空间 mod::fn() 一气呵成。

M

模块系统

import + 传递性导入,多文件 CLI 编译,mod::fn() 命名空间访问。运行时 Arena 分配器也可经 FFI 调。

∅

零 runtime

无 GC、无垃圾回收、无运行时反射。直接 QBE → as → ld → 原生 .exe。想跑哪跑哪。

架构 / Architecture

一条 流水线,两条 路径

同一个 `.jhyy` 源文件,既能由 C-side 编译器编译,也能由 jhyy-side 编译器编译。 两条路径产出的 QBE 中间表示 byte-equal—— 这就是 Stage 2 N=4 自举闭环的事实基础。

.jhyy 源文件 src0/main.jhyy
→
lexer 词法分析
→
parser → AST
→
sema 类型检查
→
codegen → QBE IL
→
qbe.exe → .s
→
as / ld → .exe
// 两套等价实现
compiler/src/ · C-side · v0.x — production
compiler/src0/ · jhyy-side · v1.x — self-host

// Stage 2 N=4 byte-equal 闭环 (v1.0.0 tag 9b05c0f, re-baselined v2.4.0 tag v2.4.0)
jhyy_v1 → src0 → jhyy_v2.il ┐
jhyy_v2 → src0 → jhyy_v3.il ├─ sha256 一致
jhyy_v3 → src0 → jhyy_v4.il │ (1.378 MB,
jhyy_v4 → src0 → jhyy_v5.il ┘ 无 post-fix)
状态 / Status

v1.x 已 ship · v2.0 阶段 ship · v3.x next

单一版本轴 — 没有 phase-N。每个版本的发布都意味着前一阶段的工作已经被 byte-equal 闭环吞掉。

104
regress 测试 / 通过
5
自举世代 / byte-equal
11
MCP 工具 / for Claude
3
目标 ABI / Win·SysV·EFI
轴 范围 目标 状态
v0.x C 编译器自身 达成自举门槛 🟢 frozen at v1.0.0 baseline
v1.x jhyy 自举 (src0/*.jhyy) 真自举闭环, byte-equal .il 🟢 v1.8.3 shipped — FINAL
v2.0 QBE 重写 + 多目标 / freestanding amd64_sysv / EFI .efi ✅ v2.0 阶段 ship (v2.0.0 → v2.4.0, 2026-09-04)
v2.x 中/末 QBE 自写 / amd64_sysv 实 impl / N 代 fixed point 丢掉 vendored QBE ⏳ 未启动
v3.x 语言扩展 (asm / volatile / naked / no_std / &mut + lifetime) 服务 jhyy_OS ▶ next — 3a-3f 等 user 启动
代码 / A tour of the syntax

看一眼 就懂了

函数、变量、控制流、struct、match、enum、FFI——全部一气呵成。

hello.jhyy
// 类型 / 函数 / 控制流 / struct / match / enum / FFI
type Point = struct { x: i32, y: i32 }

fn dist_sq(a: Point, b: Point) -> i32 {
    let dx = a.x - b.x;
    let dy = b.y - a.y;
    dx * dx + dy * dy
}

fn classify(n: i32) -> *u8 {
    match n {
        0        => "zero",
        1..10    => "single digit",
        10 | 20  => "round number",
        _        => "other",
    }
}

extern fn printf(fmt: *u8, val: i32) -> i32;

fn main_jhyy() -> i32 {
    let p = Point { x: 3, y: 4 };
    let q = Point { x: 0, y: 0 };
    printf("d² = %d\n", dist_sq(p, q));
    printf("%s\n", classify(42));
    0
}

⛓ Build / Run

$ make
// → compiler/build/bin/jhyy.exe (~5MB)

▶ 一行运行

$ ./compiler/build/bin/jhyy.exe run hello.jhyy
d² = 25
other

✓ 自举验证

$ python compiler/build/bin/regress.py
// 104/104 passed, 0 failed, 4 skipped

📦 一键安装

$ installer/jhyy-installer-1.8.3.exe
// jhyy.exe + .jhyy 关联 + VSCode 扩展 + PATH
路线 / Roadmap

下一步 = jhyy_OS

v0.x 冻结,v1.x 已 ship,v2.0 阶段已 ship。下一步是 v3.x 的语言扩展,服务于自研 OS。 v2.x 中/末(QBE 自写 / amd64_sysv / N 代 fixed point)与 v3.x 异步并行。

DONE
v0.x

C 编译器自身

达成自举门槛。

  • v0.0.1 → v0.9.0
  • frozen at v1.0.0 baseline
DONE
v1.x

jhyy 自举

byte-equal `.il` 闭环。

  • v1.0.0 tag 9b05c0f
  • v1.8.3 tag 98c8272 FINAL
  • Stage 2 N=4 closure
SHIPPED
v2.0

多目标 + freestanding

5 个版本串行 ship。

  • amd64_win / amd64_sysv
  • freestanding .efi (OVMF E2E 5/5)
  • hello-freestanding.efi 跑通
PLANNED
v2.x 末

自写 QBE

去掉 vendored QBE。

  • QBE 自写
  • amd64_sysv 实 impl
  • N 代 fixed point
  • M5: 删 src/*.c + qbe/ + runtime.c
PLANNED
jhyy_OS

自研操作系统

UEFI + PE/COFF boot。

  • M1-M11 milestones
  • capability spec
  • Debug ABI locked
VISION
最终闭环

jhyy 编 jhyy · jhyy_OS 跑 jhyy

编译器 0 C 依赖、OS 自举、调试 ABI 完整——从语法到 ABI 到运行时, 每一层都是自己写的。这就是机会翼游。

  • Stage 0: jhyy 编 src0 → byte-equal
  • Stage 1: jhyy 编 jhyy → byte-equal
  • Stage 2: N 代 fixed point attractor
  • M5: 0 C 依赖 + 自研 OS 跑自研编译器