Skip to content

feat(ccr): v10 多路 match 与模式覆盖 - #182

Merged
dslsdzc merged 22 commits into
developfrom
feature/multibranch-v10
Oct 24, 2026
Merged

dslsdzc merged 22 commits into
developfrom
feature/multibranch-v10

Conversation

@dslsdzc

@dslsdzc dslsdzc commented Oct 24, 2026

Copy link
Copy Markdown
Owner

概要

在 v10 .ccr 上实现多路 IR_MATCH 和完整模式覆盖:

  • IR_MATCH(opcode 54)+ 24B CASE;IR_BRANCH/if/while 保持二元。
  • int/bool/enum/string/char/struct/tuple/ident 模式;字面量穷尽性、通配/绑定末位、嵌套模式拒绝。
  • 后端:<=2 线性、稀疏二分、密集 32 位相对偏移跳转表(rodata,无绝对地址)。
  • LABEL 绝对位置表 + rodata 表项回填;BigInt 字符串追加不再导致表 LEA 指向字符串。
  • interp / ELF O0/O2/O3 对拍;无 DEFAULT 未命中 ud2/abort。
  • CIR 缓存 v24:每个 MATCH 的 CASE 区间入快照,恢复时重映射指令与 NOD 镜像;修复了 NOD s2/s3 篡改可改变 warm .ccr 的问题。
  • struct/tuple 泛型安全:具体实例可用;未解析泛型 fail-closed;optional 字段递归替换。
  • 设计文档标注 v9.1 历史、v10 现行。

验证

最终分支 head 3ca7aa0d(rebase 到 develop 后):

build_selfhost_native.py        PASS
corec check src/compiler         ok
test_multibranch_v10.py         75/75
test_match_exhaust.py           16/16
test_optional.py                80/80
test_diag_gate.py               28/28
test_ccr_v10_format.py          46/46
test_ccr_v10_stream.py           5/5
test_ccr_types.py               53/53
test_ccr_v7.py                  27/27
backend bootstrap               PASS
opt_dex / bigint                PASS
native_memory                    9/9
interp_parity                   26/26
CI hook coverage                PASS
canary                          5/5
corec2/corec3 cmp               clean

ELF canary 保持 826d74cf...。

已知边界

  • 预存失败:test_cir_warm_path B4/D1、test_cir_cache_narrow 旧花括号 fixture、test_interp_float interp_strings 等,未在本 PR 修改。
  • 新建测试已挂 CI;.ccrb 因 CI 镜像未声明 zstd 依赖继续 allowlist。
  • 工作区未提交的 docs/、grammar/ 改动不属于本 PR。

@dslsdzc
dslsdzc merged commit 0c71375 into develop Oct 24, 2026
2 of 4 checks passed
@dslsdzc
dslsdzc deleted the feature/multibranch-v10 branch October 24, 2026 08:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant