决策日期:2026-09-14;随定位转型(2026-09-11 前端切割、转型"教学 C/C++ 子集参考执行引擎(白箱)")落地。 配套品牌资产:
assets/logo/(横幅锁定 vitro-logo{,-dark,-light}.svg + 方形图标 vitro-icon{,-dark,-light}.svg + 预览页 preview.html)。
1. 为什么改名
- 名字与定位脱节:
Cide= C + IDE。前端已切割(不再是 IDE),且 C# 教学子集为第二前端在路上(不再只绑定 C)。 - 消除 AI 协作幻觉源:本仓库的核心工作方式是 AI 辅助开发。"品牌叫 A、符号叫 B"的双名映射要求每个会话重新学习且可能被忽略——本次改名后符号层只有一个名字
vitro,零映射。 - 改名窗口成本最低:外部消费者仅 SharpTutor 一家(高协作质量方),越晚改成本单调递增。
Vitro 取自 in vitro(拉丁语"在玻璃之中"):把程序放进玻璃观察皿,每一步计算都可见、可对照、可回放——与"白箱 + Clang 基线诚实对照"的定位同构。撞名核查(2026-09-14):编译器/运行时/开发工具领域无强占位者。
2. 命名映射(全量,无缩写、无别名)
| 层 | 旧名 | 新名 |
|---|---|---|
| 品牌 / 仓库 | Cide / c_ide_rust |
Vitro / 仓库目录改名由维护者自行执行 |
| crate(10 个) | cide_shared … cide_vm |
vitro_shared … vitro_vm |
| 主包 / cdylib | cide_native / cide_native.dll |
vitro_native / vitro_native.dll |
| C ABI(41 入口) | cide_abi_version() 等 cide_* |
vitro_abi_version() 等 vitro_*,ABI 版本 1.3.0 → 2.0.0(符号面 breaking) |
| CLI | cide_cli(src/bin/cide_cli.rs) |
vitro_cli(src/bin/vitro_cli.rs) |
| C 头文件 | native/include/cide_capi.h |
native/include/vitro_capi.h |
| 运行时 libc 目录 | native/runtime_libc/cide/ |
native/runtime_libc/vitro/ |
| Go module | module cide |
module vitro |
| 大小写三变体 | cide / Cide / CIDE | vitro / Vitro / VITRO |
| 虚拟机名 | CideVM | VitroVM |
wire format(docs/spec/STEP_PAYLOAD_SCHEMA_V0_1.md)零变化:JSON 字段本就语言中立,变的只是文档中的函数名引用——serve 帧格式、StepPayload schema、状态码语义均不变。
3. 消费方迁移指引(SharpTutor)
- DLL 文件名:
cide_native.dll→vitro_native.dll; - 全部符号前缀
cide_→vitro_(41 个入口,清单见native/include/vitro_capi.h); vitro_abi_version()更名交付时升至"2.0.0"(1.3.0 → 2.0.0,以 major 变更表达符号面 breaking;现值 2.1.0,U2#13 起)——函数语义、JSON 结构、状态码一字未动,绑定侧迁移 = 纯查找替换 + 重链接;- 如对端仓库有
docs/cide-replay/目录,可随迁改名,我方文档中的该路径引用已同步。
4. 诚实边界(本次不改的部分)
docs/archive/一律不动(维护者裁定 2026-09-14):归档内容与归档文件名(ARCHIVE_CIDE_*.md)保留 Cide 原样,历史快照不篡改;- 活文档中引用归档文件名的路径(
ARCHIVE_CIDE_MOBILE_TEACHING_THREE_LANGUAGE_PLAN.md等)受保护未替换,链接保持有效; - 英文单词中的
cide子串天然豁免:INCIDENT/INCIDENTS(占位保护)、accidental(词边界规则自动豁免); - 本地仓库目录名
D:\code\c_ide_rust由维护者自行改名(影响本地 IDE 会话路径,仓库内容无依赖)。
5. 联动修改(诚实记录)
tests/end_to_end_extra_test.rs::test_e2e_my_strlen:输入字面量"CideVM"(6 字符)→"VitroVM"(7 字符),期望输出"6"→"7"联动(注释已锚定);- ABI 版本历史注释(
native/src/capi/first_batch.rs)追加 2.0.0 条目; - 旧名编译产物(
target/{debug,release}/cide_native.dll、cide_cli.exe)已删除;仓库根历史遗留的旧名 exe(shadow_verify.exe等,未被 git 跟踪)由维护者按需重构建。
6. 验证记录(2026-09-14 实测)
| 防线 | 结果 |
|---|---|
cargo check --workspace --all-features |
✅ 一次通过(10 crate + 主包) |
cargo clippy --workspace --all-targets --all-features -- -D warnings |
✅ 零警告 |
cargo test --workspace --all-features(--no-fail-fast) |
✅ 当时 68 套件全绿(唯一失败为 my_strlen 期望联动,修正后复绿) |
go vet ./scripts/... |
✅ exit 0(unsafe.Pointer 提示为存量,非本次引入)† |
Shadow 防线(go run ./scripts/shadow_verify) |
✅ 671 用例:match 664 + known_issue 3 + gap_extension 4,无非预期差异——当时与改名前基线逐项一致,行为零差异 |
serve 冒烟(scripts/serve_smoke.py,2026-09-18 退役改 Go 版) |
✅ 57 项断言全 PASS(RSS 护栏 75MB < 512MB 预算;现役 go run ./scripts/serve_smoke) |
† 勘误(2026-09-14,U2#13 审阅发现):本行"exit 0"与"提示为存量"的表述不可信—— 当时 scripts 内的
PtrToGoString(uintptr→unsafe.Pointer 逆向转换)形态会让go vet ./scripts/...exit 1("possible misuse of unsafe.Pointer",最小复现 实证)。最可能的解释是该次验证未真跑 vet 或跑的是单文件豁免口径。该存量三处 已于 U2#13 随 buf 写入式 API(ABI 2.1.0)根治,vet 现为零输出并入 CI 门禁。
残留口径:归档目录外 grep -i cide 仅剩三类合法命中——INCIDENT(S)(英文词)、accidental(英文词)、活文档中对归档原文件名的引用(受保护)。