docs/current/01-定位与路线/项目更名记录.md
GitHub ↗
当前有效

项目更名记录:Cide → Vitro(2026-09-14)

1439 字·约 4 分钟 阅读 2026-10-10 17:07

决策日期:2026-09-14;随定位转型(2026-09-11 前端切割、转型"教学 C/C++ 子集参考执行引擎(白箱)")落地。 配套品牌资产:assets/logo/(横幅锁定 vitro-logo{,-dark,-light}.svg + 方形图标 vitro-icon{,-dark,-light}.svg + 预览页 preview.html)。

1. 为什么改名

  1. 名字与定位脱节:Cide = C + IDE。前端已切割(不再是 IDE),且 C# 教学子集为第二前端在路上(不再只绑定 C)。
  2. 消除 AI 协作幻觉源:本仓库的核心工作方式是 AI 辅助开发。"品牌叫 A、符号叫 B"的双名映射要求每个会话重新学习且可能被忽略——本次改名后符号层只有一个名字 vitro,零映射。
  3. 改名窗口成本最低:外部消费者仅 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)

  1. DLL 文件名:cide_native.dll → vitro_native.dll;
  2. 全部符号前缀 cide_ → vitro_(41 个入口,清单见 native/include/vitro_capi.h);
  3. vitro_abi_version() 更名交付时升至 "2.0.0"(1.3.0 → 2.0.0,以 major 变更表达符号面 breaking;现值 2.1.0,U2#13 起)——函数语义、JSON 结构、状态码一字未动,绑定侧迁移 = 纯查找替换 + 重链接;
  4. 如对端仓库有 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(英文词)、活文档中对归档原文件名的引用(受保护)。