Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
140 commits
Select commit Hold shift + click to select a range
e283181
docs: 类型系统方向定案挂账(图本体 + 接口统一总纲)
dslsdzc Aug 30, 2026
2da8b25
docs: 类型系统方向备忘 v2(14 条定案:自动推导全量 + 借用收缩 + 声明式边界)
dslsdzc Aug 30, 2026
0f84f6b
docs: TODO 挂账——自动化原则全家族(性能 6 条 + 验证/工具 4 条)
dslsdzc Aug 30, 2026
4dfd083
fix: harden compiler, runtime, and LSP safety (#61)
RhineIris Sep 5, 2026
a9603a2
feature/syntax doc rewrite (#62)
dslsdzc Sep 5, 2026
2e5c746
docs: TODO 清账——错误码体系复核划销、asp 落点核实划销、F11/M-2/hex 溢出条目补注 9/5 收尾状态
dslsdzc Sep 5, 2026
2cd158c
fix: F11 运行时界切片长度守卫——len 变量登记/传播 + 解引用动态 BOUNDS_CHECK(test_slice_boun…
dslsdzc Sep 5, 2026
5028cd0
fix: core_pattern 坑临时处理——trap 测试禁 core dump + CI ulimit -c 0;TODO 划销并…
dslsdzc Sep 5, 2026
c779e64
R2 接口化 P2b→P6 + 容量批 + fail-closed 闸门 + 缓存静默缺陷修复(#60) (#63)
dslsdzc Sep 15, 2026
8240c91
维护文档重组(39 提交:布局重组 + 交叉引用修复 + 分篇索引 + 视角清理) (#64)
dslsdzc Sep 15, 2026
24a2f41
docs: 合入 feature/compile-time-linearity 净内容——编译时间线性化计划 + 消息边界拷贝消除设计 (…
dslsdzc Sep 15, 2026
3fe8cbb
chore: 停止跟踪 examples/ 构建产物(12 个 *.ccr / *.cir / *.o) (#66)
dslsdzc Sep 15, 2026
82bc797
docs: 首页重写(双语:README.md 英文 + README.zh-CN.md 中文) (#67)
dslsdzc Sep 15, 2026
9b13e43
fix: TODO #23——禁 git 钩子加固(词边界扫描;堵复合/管道/子壳/包装绕过;含误伤负控)+ 36 例判据 + 挂 CI …
dslsdzc Sep 15, 2026
81542ef
docs: TODO #64/#65 W4 备选登记 + 暖态「名字面」首次归因(D-1)+ 暖态腿口径限制 (#69)
dslsdzc Sep 15, 2026
230e5a1
docs: (A) 表示位随存储走实施计划定稿(TODO #56 裁决 A;4 候选 + 推荐 (iii) 逃逸域化恒装箱;canary …
dslsdzc Sep 15, 2026
0fefa9c
R0 登记落仓:ctl 细化 + 验证切片计划 + 预存 Bug 分类账(零源码改动) (#71)
dslsdzc Sep 15, 2026
1b380e9
feat: R2 P7 非构建小批——CI 挂点覆盖率机械判据(审计 #9)+ workflow_dispatch 空转修复(#6) (#72)
dslsdzc Sep 15, 2026
7ce83d2
文档 vs 现实修订(危险 7 + 陈旧 6 全改;审计全表落盘) (#73)
dslsdzc Sep 15, 2026
d9327ad
(A) 表示位随存储走:指针写与解包语义一致(四形态全转正;含第二根因 IR_REF 全局取址修复) (#74)
dslsdzc Sep 15, 2026
f5345b5
(A) T3:写点完备性审计(证伪并修复推断可选数组/切片元素写点漏)+ extern 面实证 (#75)
dslsdzc Sep 15, 2026
6dfe029
docs: (A) 批 T4 文档面 + T5 收官登记——run.sh 计数同步(test_optional 48→80)+ spec …
dslsdzc Sep 15, 2026
730d5fe
docs: (A) 批 T4/T5 跟进——TODO #73 拆细为收官条目 + 四条独立登记(#74 REP-3 / #75 REP-2…
dslsdzc Sep 15, 2026
47dde0d
docs: apx 形式转换完备性审计(21 边界 × 10 探针;N-1/N-3 判定同一根因) (#78)
dslsdzc Sep 15, 2026
e529aba
(B) 全局操作数寻址 seam 收编:6 条活点转正(canary IDENTICAL;突变双向证明硬闸有牙) (#79)
dslsdzc Sep 15, 2026
69cf3d0
判据载体化:ELF canary + .ccr 四条 = 机器闸门(此前零自动化载体;含 T3 静默消失面修复) (#80)
dslsdzc Sep 15, 2026
d5b02fe
docs: 判据强度审计落纸 + 登记(TODO #84-#89)——① 方法论条目「片段式字节判据」弱点形态(seam 批 REX.B …
dslsdzc Sep 15, 2026
f779819
docs: 判据强度审计全文回填(表 A 22 条 · 表 B 6 条弱判据 B1-B6 · 表 C 10 条)+ TODO #90(E8…
dslsdzc Sep 15, 2026
0808a8c
apx 形式转换缺口批:一整族静默错值收口(21 探针转正;canary 与本批面正交的实证) (#83)
dslsdzc Sep 16, 2026
8a80296
docs(#93 侦查落纸): TODO #93 按真面目重写 + 侦查文档 + 入仓 RED 语料(19 例)+ 白名单条目 (#84)
dslsdzc Sep 16, 2026
a30715e
判据网加固:CI 挂点 +6(含 N06 唯一门)· 六条弱判据改强 · 突变自证 22/22 固化为常驻判据 (#85)
dslsdzc Sep 16, 2026
2cfa264
fix: TODO #93 实参推断缺失——checker 直调分支「已解析即 return」致实参从不被推断(139 响亮面 + 零诊断…
dslsdzc Sep 16, 2026
54e7818
docs: #93 批落纸文档修正——判据强度审计 §0quater 的出处引用 §3sexies 悬空(计划实际只有 §3ter/§3q…
dslsdzc Sep 16, 2026
99ae6bd
plan(#78 批 2): 聚合读丢型——只读侦查 + 八裁决门(零源码改动) (#88)
dslsdzc Sep 16, 2026
ba309f2
plan(#78 批 2) T1 记录:前置 + 冻结基线(改前二进制 sha256)+ R1–R7 改前实测(5 红 3 绿)+ IR …
dslsdzc Sep 16, 2026
f30251b
plan(#78 批 2) T2:探针入仓(RED 9 项实证)+ 白名单登记 + 两条陷阱落仓级文档 + T3 验收形状(槽型正确 + …
dslsdzc Sep 16, 2026
66eb958
fix(#78 批 2 T3): 聚合读丢型——读点定型改「声明面形式」(零 alloc 节点判)+ CIR_CACHE_VER 17→1…
dslsdzc Sep 16, 2026
020aec2
docs(#78 批 2 T5): 收官——TODO #98 登记 + #78 已修 + 批报告 + 收官判据复跑全绿 (#92)
dslsdzc Sep 16, 2026
5642b67
fix(#82/#83): $HOME 环境依赖收口——索引两分处理 + .cr 优先 + 顺带消除越界写堆(#99) (#93)
dslsdzc Sep 16, 2026
dbadb8d
docs: TODO 标识迁移 #NN → #YYYY-MM-DD-N(映射表入仓;112 文件零源码语义改动) (#94)
dslsdzc Sep 16, 2026
dc2c72d
fix(opt-dex): 可选 dex(dex?)整族修复 + 判据网(TODO #2026-09-16-29 / 原 #91) (#95)
dslsdzc Sep 17, 2026
c1546f9
docs(opt-dex 跟进): CI 覆盖域 ≠ 判据全集 + 合入记录(admin 合并的规则集缺口)+ 操作教训两条(bookma…
dslsdzc Sep 17, 2026
6dffd0d
docs(opt-dex 跟进 2): §7ter 载体表补齐 6 处 + 诚实注记 · 教训并写 · 合入记录措辞钉「非图快」 (#97)
dslsdzc Sep 17, 2026
28f38db
docs(TODO): 登记批 5 §10 分诊三条静默/缺口面(#2026-09-17-5/6/7;映射表旧号列一律 `—`) (#98)
dslsdzc Sep 17, 2026
2d02d9f
plan(批 8 · 静默面收口): 规划轮落纸——6 条逐条(现象/复现/机理/判据要件/突变自证/停条件)+ 版本号序列 + 裁门 8…
dslsdzc Sep 17, 2026
bf346a3
docs(编号约定): 落纸常设规则——并行分支同日同号 ⇒ 先合者保留、后合者整体顺移(+ PR 内写明取号基准与竞态注记) (#100)
dslsdzc Sep 17, 2026
6257611
rename: @no_bounds_check → @NoBoundsCheck(干净重命名 + 14 例判据网 + 3 条登记) (#…
dslsdzc Sep 17, 2026
fe42848
feat(批 6): 验证内核管线正式接入——正式规约语法 #check/#ensure(词法/语法/检查/VC dump 全链 + 判据…
dslsdzc Sep 17, 2026
35b61ed
fix(cir-cache-bloat): `.cir` 快照二次膨胀——段粒度按函数收窄 + 相对 id + 尾部基线见证;缓存由「净负…
dslsdzc Sep 17, 2026
9f13e83
docs(批 6 跟进): 计划补 §16.4.1「判据对象位移」+ §17 批终态与方法论产物(纯文档,零源码改动) (#106)
dslsdzc Sep 17, 2026
58bb9f7
docs(concurrency): Core 并发模型设计规格(维护者定稿)+ 缺口分析 + 裁门裁定落纸 + TODO #2026-0…
dslsdzc Sep 17, 2026
f9ff306
docs(TODO #2026-09-17-8): 口径更新——该条「.cir 快照二次膨胀」已由缓存膨胀批实测并修复(PR #104) …
dslsdzc Sep 17, 2026
98e6379
docs(plans/cir-cache-bloat): 方法论三条落纸——判据网修正实现 / 修正流程 / 本地绿≠提交里(**追加不重…
dslsdzc Sep 17, 2026
14e386c
docs(TODO #2026-09-17-8): 口径校正跟进——标题按实测改写(原断言「不可完成」已不成立)+ 两条未控维明文并存 (…
dslsdzc Sep 17, 2026
1037c2a
docs(TODO 机理更正批): #2026-09-17-11 判据② 腿① 74→75(真源三处硬断言)+ #2026-09-17-5…
dslsdzc Sep 17, 2026
3e461ed
docs(concurrency): 并发规格补注——§11.1.1 本顺序的边界/前置/判据挂钩 + §16.1 载体边界 + §16.…
dslsdzc Sep 17, 2026
04dad03
docs(TODO): 触发器约定立 + 存量扫描落纸(个体 9 条目 · 族级 3 · 自消解 2 · 不适合 6)——#2026-09…
dslsdzc Sep 17, 2026
52987b5
docs(批 8 计划更正轮·C): 计划文件落全部**实测**更正(§0/§1-1/§1-2/§1-3/§1-5/§4/§5bis)——…
dslsdzc Sep 17, 2026
f5e822c
test(lsp)+fix(lsp): 判据接线批——LSP `@` 表补 `raw_int` + 双真源守卫 + `IR_REF` 形状…
dslsdzc Sep 17, 2026
f57815e
批 8 PR-A₁:静默面收口(条目 2/3/4/5)——可选 == 表示透明 · extern 可选 P24 · 顶层兜底 P25(+i…
dslsdzc Sep 17, 2026
394e058
docs(批 8 计划 §1-3): P24 判据要件同步实现宽度——范围扩为「形参 + 返回型」+ 2026-09-18 实测更正层(原…
dslsdzc Sep 17, 2026
cc8f1b8
fix(批 8 A₂ · 条目 6): 并发 handle 类型模型对齐 ⇒ TF01 真冲突收口(3 返回型 + 5 形参)+ 撤 TF…
dslsdzc Sep 17, 2026
b1b9777
fix(suite)+test: suite 腿清障批——两档修好并真跑 + 两档负例显式化 + 逐档 clean-cache + 门内卫…
dslsdzc Sep 17, 2026
0ed3ca8
docs(批 8 计划 §1-3): P24 判据要件同步实现宽度——范围扩为「形参 + 返回型」+ 2026-09-18 实测更正层(置…
dslsdzc Sep 17, 2026
f7f23b8
docs(缓存串域): #2026-09-18-9 实测更正层 + 三案修法计划 + 证据包入仓(只读轮产物) (#120)
dslsdzc Sep 17, 2026
4bc837c
fix: (乙) 泛型实例形参擦除——实例形参链具体化(A1)+ 槽型直读判据通道 + 判据套件(C1–C7) (#121)
dslsdzc Sep 17, 2026
75d67ca
批 8 PR-B(F3) S1′:直调实参类型校验点 report-only(活性自证 + 默认零足迹) (#122)
dslsdzc Sep 17, 2026
2dbe528
fix(lexer): 字符串插值 `${...}` 双推进吞字符/吞 `}`(引入 wqorlmrz 2026-07-09)+ 门内判据…
dslsdzc Sep 18, 2026
099517e
fix(cir): 串域跨进程 id 修复——生成期 intern 日志 + 装载期按序重放(CIR_CACHE_VER 20→21;ca…
dslsdzc Sep 18, 2026
e7b737e
docs(TODO): 登记 #2026-09-18-12——非 Literal 全局初值经 bootstrap 构建 corec 时静默…
dslsdzc Sep 18, 2026
b5c549b
feat(interp): 字符串插值 `${...}` **展开实现**(维护者裁定 (b);同链补 #124 的词法修复) (#126)
dslsdzc Sep 18, 2026
41a51d8
批8: S1P 打点定位通道(源行片段)+ S2 侦察结论与两条登记(代码净额为零) (#127)
dslsdzc Sep 18, 2026
922fd66
docs(批8 条目1): dex? 泛型实例化 T0 重测 + §1-1 回填——(乙) 已消解 · 剩余 =(甲) · ELF 腿降级…
dslsdzc Sep 18, 2026
ec8ef5e
fix: 批 8 bool←int 静默面收口——自测计数惯用式 171 处改签名 helper(比较落在 bool 域)+ 「台账 bo…
dslsdzc Sep 18, 2026
662ff87
docs(批 8 §1-1/§4 同批落纸):落 `b8-e1` 草稿的 §1-1 补充(Ⅱ-bis / Ⅳ-bis / Ⅶ 两向钉子 /…
dslsdzc Sep 18, 2026
2b103d6
docs(批 8 收口): 活文档改内容(syntax.md apx 示例改为可编过 + errors.md 补 P024/P025/P0…
dslsdzc Sep 18, 2026
965052b
批8 2(a): 视图内建 @ptr_of/@str_of(两面实现)+ S2 残桶 68 点收口 + cli.cr 值面 e2e (#132)
dslsdzc Sep 18, 2026
802bd24
fix(批8 (甲) 批1 刀1): unify_types 的 T? 模式规则——修 S1-ARG 恒报 + 同基点上的 TF01 硬错…
dslsdzc Sep 18, 2026
08f0b65
批8 (i) 小批: @raw_int 放宽接受指针(实测定名 TYP_PTR)+ 两向钉子判据 + diag_gate 夹具换形 (#134)
dslsdzc Sep 18, 2026
7ddf6ed
批8 判据面: canary D1 确定性闸门(两次构建逐字节对拍)+ 重锁前置落纸 (#135)
dslsdzc Sep 18, 2026
09f253b
docs(批8 TODO 登记 3 条): ① &x/&T 语义(定性待裁)· ② D2 *T 形参调用点→TI_UNIT(含仪器限定)·…
dslsdzc Sep 18, 2026
c255130
docs(批8 只读侦察): bi_add 内建表侦察(22 条分类 · 爆炸半径 · 4 处反预期 + fiber_init 潜伏碰撞)…
dslsdzc Sep 18, 2026
f4165cb
docs(批8): 失效口径扫描报告——基线重定 + 15 条逐条重核(已消解 6 / 在场 10)+ 统计更正 + §5 过判更正 (#…
dslsdzc Sep 18, 2026
c63ccf4
feat(批8 (甲) 刀2): S1P 台账扩面——方法/模块限定/枚举构造三形态接线 + 抽可复用助手(四形态一份台账) (#139)
dslsdzc Sep 19, 2026
e2516ea
docs(TODO): 批 8 (甲) 刀 3 登记——只增追加 -1/-2/-3 + 新落 -4..-8 + 处置表 + 跨仓链接清理 …
dslsdzc Sep 19, 2026
1ea9c47
fix(批8 D 类): @typeInfo 返回型 TI_INT(placeholder) → TI_STR(声明与产物一致的收口) (…
dslsdzc Sep 19, 2026
c104464
fix(批8 (甲) 刀3 小刀): 台账加三条哨兵族 skip(TI_NEVER / TI_DYN / 泛型形参)+ 空间守卫判据 (#…
dslsdzc Sep 19, 2026
0b2bdc1
docs(TODO): #2026-09-19-8 的 D 行留痕更正——「D 排除」与裁定相反(应为「真缺陷 ⇒ 修」) (#143)
dslsdzc Sep 19, 2026
79e0395
fix(批8 B/C 类迁移): ld.cr 裸字表 ↔ string 视图显式转换(2(a) @ptr_of/@str_of 范式,6 …
dslsdzc Sep 19, 2026
796ae5e
docs(批8 (甲) 刀4): 联合路线图 v4——两句维护者裁定 + 刀 4 + A₂ 对齐作废(纸面,无源码改动) (#145)
dslsdzc Sep 19, 2026
c639192
docs(批8 (甲) 刀4): 路线图 v5——S3 转确定项(纳入 REF)+ §7.3 三候选小节(alloc 措辞待确认) (#146)
dslsdzc Sep 19, 2026
adbb506
docs(批8 (甲) 刀4): 路线图 v6——填 §8.10 的 S1-4 期望值 + 一处自纠(原「与 S3 绑定」归因错误) (#…
dslsdzc Sep 19, 2026
d1bb824
docs(批8 (甲) 刀4): 路线图 v7——§7.3 已裁(alloc → Buf,属「拆 string」批)+ 排期重排 + 连锁…
dslsdzc Sep 19, 2026
8452891
docs(批8 (甲) 刀4): 路线图 v8——§5.3 裁定二影响面三分(类1 安全门 / 类2 @raw_int 门 / 类3 身份…
dslsdzc Sep 19, 2026
7a6f734
docs(批8 (甲) 刀4): 路线图 v8.1——§5.3.1 类 1 **逐处定论**(三处真损失 + 第四处「不适用」)+ §5.…
dslsdzc Sep 19, 2026
60d4d74
docs(批8 (甲) 刀4): 路线图 v8.2——§5.3.1 补**语料侧确证**(第四处「零损失」由读码升级为语料确证)+ 两钉落…
dslsdzc Sep 19, 2026
38e6c99
docs(批8 (甲) 刀4): 路线图 v9——**恢复 §8 施工序**(v7 未登记的删除)+ 四条裁定落纸 + F0 实测读数 (…
dslsdzc Sep 19, 2026
84a4deb
S1(裁定二):`&x` 定型改判 TYP_REF + extra 取 is_mut(两处定型点同批:checker + ir_gen) …
dslsdzc Sep 20, 2026
df8aa7b
fix: TODO #2026-09-20-1 RegionCheck 逃逸面收口——半开区间边界 + 区域归还语义 + 接回丢弃判定 +…
dslsdzc Sep 20, 2026
697f61d
docs: 格层本体重定义——Materialization / Existence Space,缓存降为该层一类映射实例(含 ADR-0…
dslsdzc Sep 20, 2026
0077322
docs: 安全/验证方向计划——13 类安全问题的三态锚定 + 按独立性的施工序 (#157)
dslsdzc Sep 20, 2026
0eb1efd
docs: 执行映射设计(异构 Execution Mapping 层)——不变量 9 条 + 冲突登记 13 条 (#158)
dslsdzc Sep 20, 2026
8b119b2
docs: `.coi` 优化知识旁挂——格式规格 + 施工计划 (#161)
dslsdzc Sep 22, 2026
d81918b
docs(.ccr V8): 第二版规格——砍成四件事(Entity + Relation + Open Relation Domain …
dslsdzc Sep 22, 2026
020bf70
docs(批8 计划): Mapping 层分离(Graph → Lattice → Mapping → Encoding) (#164)
dslsdzc Sep 22, 2026
2d85015
fix(test): 修复 #94 迁移误改的格式串 + 补 fail-closed 路径自检 (#159)
dslsdzc Sep 22, 2026
7ebb8f6
docs: 术语清理——124 档 · 逐处读、按义分路、严格 1:1 (#160)
dslsdzc Sep 22, 2026
90d8a5c
fix(S4): REF 字段访问静默错值——local 半(裁定二新开)+ 形参半(预存缺陷) (#163)
dslsdzc Sep 22, 2026
6b54107
docs(.ccr V8): 2026-09-23 四条裁定 + 一条文字修正落地(§〇.6 为变更源;V8 解冻后) (#165)
dslsdzc Sep 22, 2026
9f66a6d
docs: `.ccr` V8 §11.4 对账表 + `.coi` 的 C-10 引用漂移同步(#165 的续,两笔) (#166)
dslsdzc Sep 23, 2026
7cf724f
docs(计划): 编译成本面收口 + 未核实项复核 + 按新读数重判 (#167)
dslsdzc Sep 23, 2026
4e2e526
docs(批8 甲·刀4): 路线图 v10 重做到新术语(原 PR #154 内容保留、术语按 #160 对照转换)——g_free/s…
dslsdzc Sep 23, 2026
0b7ec4e
docs(规格): 函数值 / Lambda / callable 设计规格(846 行·提案档·零实现) (#168)
dslsdzc Sep 23, 2026
1057dbd
docs(评估): comptime 工程可行性——编译成本基线实测 + 现状逐格核 + 15 方向判定(1043 行) (#169)
dslsdzc Sep 23, 2026
10e194d
fix(tools): parity runner 计数失配收口——CORPUS_TOTAL 75→76(#132 加 tests/sui…
dslsdzc Sep 23, 2026
b268a1d
fix(ci): 补 #170 漏改的第三处——src/ci/run.sh 的 75 档/35+2+15+19+4/CORPUS_TOTA…
dslsdzc Sep 23, 2026
e08df3d
docs(计划): v4 语法迁移——(乙) 大爆炸 + layout 一次做完;T0 布局规格 → T1/T2 Python 前端 → …
dslsdzc Sep 23, 2026
be53e7c
docs(规格): v4 布局规格(T0)——五条判定 + J-T0-1/2/2b/3/4/5 判据(四条零构建)+ tools/v4_l…
dslsdzc Sep 24, 2026
5a01437
docs(规格): T0 补齐——tokenize 两口径(src/compiler 9 / src/** 10,含 LSP 站)+ 字面…
dslsdzc Sep 24, 2026
53416ad
docs(developer): 三处陈旧/历史加注——quickstart 目录表去掉已退役的 src/arch/linux/ld/(改…
dslsdzc Sep 24, 2026
db8c56a
docs(quickstart): 注的措辞改白话——去掉「本表原列」这类文言压缩,顺带去掉重复指代 (#176)
dslsdzc Sep 24, 2026
920b1cb
docs(TODO): 登记 #2026-09-24-1——前端「声明但不校验 / 有码但不 raise」静默面清单(5 处,均实测;只登…
dslsdzc Sep 24, 2026
93f13be
v4 迁移(批内·第一笔):本地堆 rebase 到 develop + 前端取计划版 T1/T2 + T3
dslsdzc Sep 24, 2026
87fdcb2
v4 迁移(批内·第二笔):T4 语料改写完成——src 全 92 档,85 迁移 / 6 no-op / 1 死文件
dslsdzc Oct 11, 2026
4ad482d
v4 迁移(批内·第三笔):前端位置语义修复(消 T4 语义漂移)+ T4 空行收拢收口
dslsdzc Oct 11, 2026
11af17c
v4 迁移(批内·第三笔补):位置语义规则的注释措辞收口——口径写死为「位置标志 ∧ 节点种类」,并逐字引用四格实测与反向实证
dslsdzc Oct 11, 2026
1270cdb
docs(TODO): 登记 #2026-10-11-1(战术「策略定义」语法待重设计)+ #2026-10-11-2(块值 if 发射面缺口)
dslsdzc Oct 11, 2026
88d5c32
v4 迁移(批内·第四笔):T5 自源前端 layout 机件移植 + 位置语义镜像 + `never` 语义(两前端同改)
dslsdzc Oct 11, 2026
a567638
docs(TODO): 登记 #2026-10-11-3——`never ⊆ X` 在类型引擎 `ty_sub` 返回 -1(ICE04)…
dslsdzc Oct 11, 2026
5f24e20
v4 迁移(批内·第四笔补):bootstrap 两处欠账收口——`none` 作值 + 基本类型 `T?` 的语法面
dslsdzc Oct 11, 2026
be75996
docs(TODO): 登记 #2026-10-11-4(bootstrap 缺 T? 语义面)+ #2026-10-11-5(带可选载荷…
dslsdzc Oct 11, 2026
25e7019
v4 迁移(批内·第五笔):T5 六项改实现 + 判据面修复(never/空 region 交汇)+ T6 语料迁移
dslsdzc Oct 11, 2026
ce56e42
v4 迁移(批内·第六笔):T7 收尾重锁 + 过渡形翻转(E2×9 / E3×1)
dslsdzc Oct 11, 2026
0c327f3
fix(v4 迁移收尾): 三档判据面修复——harness 锚点去 v3 形 + T6 折叠模板的单点机械错误
dslsdzc Oct 11, 2026
c448dc3
docs(TODO): 登记 #2026-10-12-1..7——v4 迁移收尾的七笔悬空账(缺陷 2 · 约定待裁 1 · 静默面 1 …
dslsdzc Oct 11, 2026
0b2d9c3
docs(v4 语法): §十 规约按维护者更新版落盘——**取消 `spec fn`**(所有函数都是 `fn`,复用靠函数契约 + `…
dslsdzc Oct 12, 2026
739a5d9
docs(TODO): #2026-10-11-1 闭档——维护者 2026-10-12 的 §十 更新版已答复该设计问题(`#tag` …
dslsdzc Oct 12, 2026
1836902
Merge pull request #178 from dslsdzc/feature/v4-syntax-migration
dslsdzc Oct 23, 2026
4f2ae7b
docs: rewrite live documentation and source comments
dslsdzc Oct 22, 2026
193fb0f
Merge pull request #179 from dslsdzc/docs/engineering-docs
dslsdzc Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
150 changes: 138 additions & 12 deletions .claude/hooks/block-git.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,142 @@
#!/usr/bin/env python3
"""铁律 #2 机械执行:Bash 命令以 git 开头 → 拒绝执行(exit 2)。"""
"""铁律 #2 机械执行:命令串中出现 git **调用** → 拒绝执行(exit 2)。

加固(2026-09-16,TODO #2026-09-11-7):原实现只拦「整条命令以 git 开头」,
`cd x && git …` / `bash -c 'git …'` / `… | git …` / `$(git …)` 全能绕过。

现覆盖:
· 以 git 开头(原行为;含 `/usr/bin/git` 等带路径形态)
· 分隔符之后:`;` `&&` `||` `|` `&` `(` `)` 换行
· 命令替换 / 子壳:`$(git …)`、反引号、`(git …)`
· shell 内联脚本:`bash -c '…'` / `sh -c "…"`(递归扫描,深度 ≤ 3)
· 前缀命令之后:sudo / env / nice / nohup / time / exec / command / xargs /
timeout / stdbuf / setsid / ionice / cpulimit / watch(含其旗标与数字参数)

**不得误伤(同为零容忍:误伤会让人绕开 hook)**:
· `jj git push`(git 不是命令词)
· **引号内**的 git 文本:`jj commit -m '… git log …'` · `echo "use git"`
· **heredoc 体内**的 git 文本(`<<'PY' … PY`;脚本体是数据不是命令)
· `grep -n git` · `find . -name .gitignore` · `cat .gitignore`

实现要点:先剥离 heredoc 体(按行扫,遇 `<<[-]?WORD` 丢弃到终止行),
再用 `shlex`(`punctuation_chars`,**尊重引号**)分词,按分隔符 token 切段,
每段跳过前导「环境赋值 / 前缀命令 / shell 名 / 旗标 / 纯数字」后看**首个命令词**。

失败模式:hook 自身异常 **一律放行**(exit 0)—— 宁可漏拦,不可把会话卡死。
"""
import json
import re
import shlex
import sys

data = json.load(sys.stdin)
cmd = data.get("tool_input", {}).get("command", "")
stripped = cmd.strip()

if stripped == "git" or stripped.startswith("git "):
sys.stderr.write(
"铁律 #2:全面使用 jj,禁止 git。\n"
"改用 jj 命令:jj status / jj log / jj describe / jj git push / jj bookmark ...\n"
)
sys.exit(2) # PreToolUse exit 2 = block the tool call
sys.exit(0)
PREFIX_CMDS = {
"sudo", "doas", "env", "nice", "nohup", "time", "exec", "command", "xargs",
"timeout", "stdbuf", "setsid", "ionice", "cpulimit", "parallel", "watch",
}
SHELLS = {"bash", "sh", "zsh", "dash", "ksh", "fish"}
MAX_DEPTH = 3
PUNCT = "();|&<>`$\n"
SEP_CHARS = set("();|&`$\n") # 切段用;< > 是重定向、不是命令分隔符
ENV_ASSIGN_RE = re.compile(r"^[A-Za-z_][A-Za-z0-9_]*=")
HEREDOC_RE = re.compile(r"<<-?\s*(['\"]?)([A-Za-z_][A-Za-z0-9_]*)\1")
INNER_RE = re.compile(
r"""(?:^|[;&|(\s])(?:bash|sh|zsh|dash|ksh|fish)\s+(?:-\S+\s+)*-\S*c\S*\s+"""
r"""(?P<q>['"])(?P<script>.*?)(?P=q)""",
re.S,
)

MSG = (
"铁律 #2:全面使用 jj,禁止 git(任何位置的 git 调用都会被拦)。\n"
"改用 jj:jj status / jj log / jj describe / jj git push / jj bookmark …\n"
"(本拦截由 .claude/hooks/block-git.py 执行;测试见 tests/harness/test_block_git.py)\n"
)


def strip_heredocs(cmd: str) -> str:
"""丢弃 heredoc 体(脚本体是数据,不是被执行的命令)。"""
lines = cmd.split("\n")
out, i = [], 0
while i < len(lines):
line = lines[i]
out.append(line)
m = HEREDOC_RE.search(line)
if m:
delim = m.group(2)
i += 1
while i < len(lines) and lines[i].strip() != delim:
i += 1 # 丢弃体
i += 1
return "\n".join(out)


def tokenize(cmd: str):
try:
lex = shlex.shlex(cmd, posix=True, punctuation_chars=PUNCT)
lex.whitespace_split = True
lex.whitespace = " \t" # 换行留给标点 ⇒ 成为独立分隔 token
return list(lex)
except ValueError: # 引号不配对等 → 退化为空白切分
return cmd.split()


def split_segments(tokens):
segs, cur = [], []
for t in (tokens or []):
if t and all(c in SEP_CHARS for c in t):
if cur:
segs.append(cur)
cur = []
else:
cur.append(t)
if cur:
segs.append(cur)
return segs


def first_command_word(seg):
i, skipped = 0, 0
while i < len(seg) and skipped < 6:
t = seg[i]
if (ENV_ASSIGN_RE.match(t) or t in PREFIX_CMDS or t in SHELLS
or t.startswith("-") or t.isdigit()):
i, skipped = i + 1, skipped + 1
continue
break
return seg[i] if i < len(seg) else None


def is_git_token(tok: str) -> bool:
base = tok.rsplit("/", 1)[-1]
return base in ("git", "git.exe")


def scan(cmd: str, depth: int = 0):
"""返回首个命中片段(str),未命中返回 None。"""
if depth > MAX_DEPTH:
return None
text = strip_heredocs(cmd)
for seg in split_segments(tokenize(text)):
w = first_command_word(seg)
if w and is_git_token(w):
return " ".join(seg[:4])
for m in INNER_RE.finditer(text): # bash -c '…' 内联脚本
hit = scan(m.group("script"), depth + 1)
if hit:
return hit
return None


def main() -> int:
try:
data = json.load(sys.stdin)
cmd = data.get("tool_input", {}).get("command", "") or ""
if scan(cmd):
sys.stderr.write(MSG)
return 2 # PreToolUse exit 2 = 拦截本次调用
except Exception as exc: # 自身异常一律放行
sys.stderr.write(f"[block-git] hook 内部错误,本次放行:{exc!r}\n")
return 0


if __name__ == "__main__":
sys.exit(main())
2 changes: 1 addition & 1 deletion .github/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@

## 执行

如遇骚扰或其他不可接受的行为,可通过 **dsls.dzc@gmail.com** 联系项目团队。所有投诉都会被
如遇骚扰或其他不可接受的行为,可通过 dsls.dzc@gmail.com 联系项目团队。所有投诉都会被
审查和调查,并得到必要且适当的回应。项目团队有义务对事件举报者保密。

项目维护者不遵守或不信奉行为规范者,可能面临由项目其他领导成员决定的暂时或永久性处分。
Expand Down
46 changes: 23 additions & 23 deletions .github/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
# 贡献指南

Core 的开发流程参考 Rust/Linux:**main 即 mainline,任何人(含维护者)不得直推**。
全部改动经 PR + 审查 + 合入门槛进入 main。
Core 的开发流程参考 Rust/Linux:main 即 mainline,任何人(含维护者)不得直推。
全部改动经 PR、审查与合入要求进入 main。

## 流程

1. **fork 仓库**,在 fork 上建 feature 分支(`fix/xxx`、`feat/xxx`、`docs/xxx`)
2. 提交改动(请用 jj,见下),推送分支
3. **开 PR——base 指向 `develop` 集成分支**(main 不接受直接合入;main 的合入仅维护者可执行),按 `.github/pull_request_template.md` 填写:
- 变更描述、测试记录、语义保鲜影响(IR/类型语义是否变化)
4. 等待审查(≥1 审批,审批人限维护者)
5. 审批通过且 PR 层 CI 全绿后,维护者手动 **squash 合入 develop**(merge queue 因免费计划不可用,已降级;见 spec §3.3),源分支由 GitHub 自动删除
1. fork 仓库,在 fork 上建立 feature 分支(`fix/xxx`、`feat/xxx`、`docs/xxx`)。
2. 提交改动(使用 jj,见下节),并推送分支。
3. 开 PR,base 指向 `develop` 集成分支(main 不接受直接合入;main 的合入仅维护者可执行),按 `.github/pull_request_template.md` 填写:
- 变更描述、测试记录、语义保留影响(IR/类型语义是否变化)。
4. 等待审查(≥1 审批,审批人限维护者)。
5. 审批通过且 PR 层 CI 全部通过后,维护者手动 squash 合入 develop(merge queue 因免费计划不可用,已降级;见 spec 3.3 节),源分支由 GitHub 自动删除。

## 铁律
## 强制规则

- **全面使用 jj,禁止 `git` 命令**(仓库为 jj colocated 形态;维护者本地 Claude Code hook 会拦截 git)
- 长时间编译/测试任务限速运行(`cpulimit -l 10` 或 `nice -n 19`)
- 文件还原必须经维护者明确许可
- 全面使用 jj,禁止 `git` 命令(仓库为 jj colocated 形态;维护者本地 Claude Code hook 会拦截 git)。
- 长时间编译或测试任务限速运行(`cpulimit -l 10` 或 `nice -n 19`)。
- 文件还原必须经维护者明确许可。

## 构建与测试

```bash
python3 build_selfhost_native.py # 自举构建 → build/corec + build/corearch
python3 build_selfhost_native.py # 自举构建,生成 build/corec + build/corearch
./build/corec check FILE.cr # 类型检查
./build/corec run 'fn main()->int{return 42;}' # 解释器执行

Expand All @@ -30,19 +30,19 @@ python3 tests/selfhost/test_compile.py # 自举编译器测试
# tests/suite/*.cr 为集成测试:./build/corec build FILE.cr -o OUT --static && ./OUT
```

CI 与本地跑同一套命令(`src/ci/run.sh`,按 `CI_JOB_NAME` 分发)。
CI 与本地运行同一套命令(`src/ci/run.sh`,按 `CI_JOB_NAME` 分发)。

## 编码约定

- 全部数组为动态字节缓冲(`string` + grow 函数),无 `MAX_*` 上限
- 扁平 AST / 扁平 IR(每节点为 `{kind, a, b, c, ...}` 结构)
- 每个目录的 `_import.cr` 集中管理共享导入
- 关键字唯一真源:`src/compiler/lexer.cr`
- 文档(`docs/`)更新与实现同步;伪代码文档(`docs/pseudocode/`)由源码生成,改源码后须重跑 `tools/pseudocode_check.py`
- 全部数组为动态字节缓冲(`string` + grow 函数),无 `MAX_*` 上限。
- 扁平 AST / 扁平 IR(每节点为 `{kind, a, b, c, ...}` 结构)。
- 每个目录的 `_import.cr` 集中管理共享导入。
- 关键字以 `src/compiler/lexer.cr` 为准(唯一)。
- 文档(`docs/`)更新与实现同步;伪代码文档(`docs/pseudocode/`)由源码生成,改动源码后须重新运行 `tools/pseudocode_check.py`。

## 审查标准

- 不绕过问题(root cause 直修)
- 语义保鲜:IR 全程保留类型/语义信息
- 惰性/数据流优化不改变程序输出
- 测试随变更更新
- 不绕过问题,直接修 root cause。
- 语义保留:IR 全程保留类型和语义信息。
- 惰性优化和数据流优化不改变程序输出。
- 测试随变更更新。
6 changes: 3 additions & 3 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## 报告漏洞

请通过 GitHub 的 **私有漏洞报告**(仓库页 → Security → Report a vulnerability)提交,
请通过 GitHub 的私有漏洞报告提交(仓库页的 Security 页面,选择 Report a vulnerability),
不要公开披露。

## 响应
Expand All @@ -11,5 +11,5 @@

## 范围

编译器本身(`src/compiler/`)、运行时(`src/runtime/`)、生成代码的正确性。
生成代码/编译器的安全问题按严重程度处理。
范围为编译器本身(`src/compiler/`)、运行时(`src/runtime/`)与生成代码的正确性。
生成代码与编译器的安全问题按严重程度处理。
10 changes: 5 additions & 5 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
## 变更描述

<!-- 这个 PR 改了什么、为什么。 -->
<!-- 本 PR 的变更内容与变更原因。 -->

## 测试

<!-- 跑了哪些验证(至少一项):tests/bootstrap、tests/selfhost、tests/suite、自举构建。 -->
<!-- 已运行的验证(至少一项):tests/bootstrap、tests/selfhost、tests/suite、自举构建。 -->

- [ ] 本地测试通过

## 语义保鲜影响
## 语义保留影响

<!-- IR/类型语义是否有变化?对形式验证消费端(.cir/.ccr 消费者)的影响。无则填"无"。 -->
<!-- IR/类型语义的变更情况,以及对形式验证消费端(`.cir`/`.ccr` 消费者)的影响;无则填“无”。 -->

## 已知限制 / 后续

<!-- 非必须。 -->
<!-- 非必需项。 -->
13 changes: 10 additions & 3 deletions .github/workflows/core-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,10 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 120
# PR 快速层:pull_request 事件全矩阵项(3 项)
if: github.event_name == 'pull_request'
# R2 P7 非构建小批(CI 挂点审计 #6):原 `if: github.event_name == 'pull_request'`
# 使 `workflow_dispatch` 手动派发**两个 job 全被跳过**(= 派发空转)⇒ 本条纳入
# workflow_dispatch(手动派发即可跑 PR 层;`||` 右侧为本次改动点)。
if: github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch'
env:
CI_JOB_NAME: ${{ matrix.name }}
strategy:
Expand Down Expand Up @@ -63,9 +66,13 @@ jobs:
name: ${{ matrix.name }}
runs-on: ubuntu-latest
timeout-minutes: 120
# 完整层(suite / full-bootstrap):仅 merge_group 事件——当前休眠
# 完整层(suite / full-bootstrap):merge_group 事件——当前休眠
# (免费计划无 merge queue;恢复时在默认分支注册 merge_group 事件)。
if: github.event_name == 'merge_group'
# R2 P7 非构建小批(CI 挂点审计 #6):原 `if: github.event_name == 'merge_group'`
# 在休眠期使本层**任何事件都不可达** ⇒ 纳入 workflow_dispatch(手动全量派发即可跑
# suite / full-bootstrap;`||` 右侧为本次改动点)。若日后需「派发时只跑 PR 层」,
# 可改为 `workflow_dispatch` 输入开关(本批不做)。
if: github.event_name == 'merge_group' || github.event_name == 'workflow_dispatch'
env:
CI_JOB_NAME: ${{ matrix.name }}
strategy:
Expand Down
Loading
Loading