基石jishi

里程碑

全部 36 个已完成里程碑,最新的排在最前面。这张表直接来自 PROGRESS.md 的时间线,不是另抄一份。

里程碑内容完成
**M17**排错体验补全(递归翻译 bug + 调用栈 + 协议补全 + REPL 源码行)✅ 2026-09-06
**M18**表达便利(切片 / argv / 最小二参 / 遮蔽治理)✅ 2026-09-06
**M19**发行改进(Windows 安装程序 + 三平台自动构建)✅ 2026-09-12
**M20**性能优化:批量 JVal 转换(C VM 提速 2–4x)✅ 2026-09-12
**M21**开发者工具(LSP 语言服务器 + 代码格式化)✅ 2026-09-12
**M22**包生态(默认静态索引 + 发布工具 + 钻石依赖冲突检测)✅ 2026-09-12
**M23**语言功能扩展 A 档(在·不在 / 是·不是 / 超() / 断言 / 是实例 / 类变量)✅ 2026-09-12
**M24**语言功能扩展 B 档(集合 / 迭代协议 / 切片赋值 / 类型标注 / 匿名函数 / 数据流水线)✅ 2026-09-12
**M25**变长参数 */ + 星号解包(改 C:code_params 加 kind、JsHost 加回调、借用语义)✅ 2026-09-12
**M26**语言功能扩展 C 档(上下文管理器 用 … 为 + 文件对象 / 自定义对象打印 / 精确小数)✅ 2026-09-13
**M27**值→文本统一(空/真/假 中文;打印·文本·插值·回显收敛到一处)+ Node 宿主同步到 M26✅ 2026-09-13
**M27 收尾**Rust 宿主首次真正跑起来:修 cargo shim(13 个 0 字节)+ 两个阻塞级 bug(帧弹出 / 默认值对齐)✅ 2026-09-13
**M28**Rust 宿主修可变容器(Rc<RefCell>,原为「静默算错」)+ 补齐 在/不在/是/不是✅ 2026-09-13
**M29**Rust 宿主补齐到 Python 侧:用户方法调用 / 列表高阶方法 / 集合 / 文件与上下文 / 精确小数(零依赖手写 BigInt);顺带修掉「异常绕过分发」与「返回不跑 finally」两个真 bug✅ 2026-09-13
**M30**JS(Node)宿主补齐:集合 / 高阶方法 / 成员测试 / 同一性 / 容器相等 / 类型标注 / 自定义可迭代,外加切片 / 运算类型分派 / 5 个标准库模块 / 交互输入;修「空容器为假」「错误直甩 JS 堆栈」;真实示例项目可在宿主上原样跑✅ 2026-09-13
**M31**JS 宿主标准库补齐到与 Python 同宽(路径 / 文件 / 日期 / 时间 / 加密 / 压缩[手写 zip 容器]/ 网络[子进程同步封装]);Python 侧文件读写改「换行保真」;examples/projects/ 全部项目可在 JS 宿主原样跑✅ 2026-09-13
**M32**边界清单逐条实测核实:删两条过时描述;修五处静默算错(JS 大整数/BigInt、Rust i64 回绕→i128+checked、C VM 大整数被 ctypes 静默截断、JS 类与函数显示 [object Object]、精确小数 28 位精度与显示);补两处明确报错(Rust 类型标注校验、Rust 是/不是 对类与函数)✅ 2026-09-13
**M33**Rust 宿主标准库补齐到与 Python 同宽(14 个模块 / 约 130 个函数,零依赖自写:回溯正则引擎、md5/sha1/sha256/sha512、zip 容器 + inflate、WinHTTP 网络);端到端又撞出并修掉切片指令缺失 / 输入() 缺失 / 列表.排序 静默失效;顺带统一三处跨宿主换行不一致与两处内部类型名漏出✅ 2026-09-13
**M34**D 档第一批:模式匹配 匹配/情形 + 枚举 枚举(都走解析期脱糖,三执行器 + 两宿主零改动);加关键字撞掉 正则.匹配 与 匹配组 → 放开属性名位置 + 补 skip 表;顺带修宿主三缺口(Node/Rust 类变量、Rust 继续 后无法 中断 的真 bug、Rust 类型() 给错名字)✅ 2026-09-13
**M39**主线 B5:字节码执行器的调试器——编译器在语句首指令上打标 + VM 只读钩子;jishi 调试 --执行器 vm,会话记录与树遍历逐字相同。顺带修掉四个潜伏缺陷(跨行三引号字符串不可用、类体语句两边都停不住、类变量求值顺序不一致、导入 文本 打断 f-string 已记录待修);主线 C 开头:examples/projects/基石自述站/(用基石写的静态站生成器,三执行器产物逐字节相同)✅ 2026-09-19
**M38**主线 B 收尾:LSP 增量同步(B2)+ REPL 增强(B3)+ 格式化器边界(B4)——增量文本同步 + 按行复用前缀的增量分词(18001 行改末行 359.7ms → 8.5ms);↑/↓ 跨会话历史 + Tab 补全 + 多行判定交给真词法器;修掉格式化器四个真问题(字符串里的 #、续行注释被吃、BOM 崩溃、目录 traceback)+ 一个潜伏的词法器 bug✅ 2026-09-19
**M37**主线 B1:调试器(jishi 调试 脚本.jsh)——断点 / 单步(进·过·出)/ 看变量 / 看调用栈 / 就地求值;出错时打「出错那一帧的变量 + 调用栈」现场。只做树遍历执行器(字节码 VM / C VM 要另做一套);钩子只读,不改语义✅ 2026-09-16
**M36**主线 A 收敛:条件表达式 甲 如果 条件 否则 乙(脱糖)+ 位运算内建(6 个)+ 字典.合并 + Node/Rust 宿主同步(含补上 Rust 缺的 更新/弹出)+ 探针「无悬案」判据 + 三份路线图合并成一份。→ 语法冻结✅ 2026-09-14
**M35**发布前验证 + 语言图标进安装包与发行物(多尺寸 ico / icns / Linux 桌面项 / Inno Setup 图标)+ 三平台 Release + 遗留收尾(类体解析期统一校验、测试临时文件并发安全、文档一致性)+ 路线图 v2;并把长期全红的 CI 修到四平台全绿(根因:测试写死开发机事实——Rust 可执行名的 .exe、build/ 目录、平台名与时区)✅ 2026-09-13
**M45**方向三「AI 可用性」第二轮:① tools/eval_ai.py 跑分表——45 题(语法 12 / 标准库 15 / 调试 10 / 重构 8),模型只看语言规格写完真跑基石判分(输出逐字相同且退出码 0),跑错回灌中文报错最多改 3 轮;题集先自检(缺陷代码必须真失败、重构原始代码必须真跑通);撞限流指数退避重试,不把「接口忙」混进「模型不行」② MCP 工具面 3 → 7 个(check_source / lookup_error / lookup_stdlib / format_source)③ 顺带修掉树遍历复合下标赋值漏裸 KeyError(字典[新键] += 1 报「程序内部未预料的问题」→ 改报 E2004)✅ 2026-09-22
**M44**方向三「AI 可用性」第一轮:--lang-spec 补错误码表(35 条,顺手发现并修掉 E2008 重码)/ 静态检查码表 / 等价 Python 写法(关键字 29 / 运算符 29 / 内建 26);新增 jishi 源码静态检查(未定义名 / 遮蔽内建 / 未使用变量 / 可疑相等,真实语料零误报、退出码 1 供 CI);作用域分析抽成 jishi/scope.py 供编辑器与命令行共用。另:用户决定放弃 PyPI,改自建分发(方向六)✅ 2026-09-22
**M46**方向四「性能优化」阶段一:① 迭代器批量快路径扩到浮点/布尔/空/文本 ② 宿主回调路径提速(_cb_call)③ 列表追加「延迟合并写」(N 次回调 → 1 次)④ 字典写入「延迟合并写」。实测「列表构建与遍历」3.0x → 14–19x、「字典写入」0.78x → 5.7–6.3x。⚠️ 途中推翻两项原计划:②「C 侧常用内建」做不到(列表是句柄背后的 Python 对象)、③「C 侧原生列表」不可行(别名 + 逃逸),改走「减少回调次数」达成目标✅ 2026-09-24
**M47**方向四「性能优化」阶段二:③ AST 缓存(361 行真实项目编译 14.13ms → 1.46ms,9.7×;失效判据用源码内容哈希而非 mtime)① C 侧原生字符串(JS_TAG_STR:不可变 UTF-8 + 引用计数)——同机交错 A/B 实测「字符串拼接」0.35x → 2.94x(绝对快 8.4 倍)、「文本比较」1.11x → 12.86x(11.6 倍)。② C 侧 JSON 实测价值低、暂缓。⚠️ 代价如实记:文本下标/切片各退约 8%。另顺带修掉一个先于本阶段就存在的内存泄漏(迭代器每消费一个元素漏一份引用,遍历 1000 个文本一次漏约 33KB——不报错、对拍全绿,靠新增的 tools/leak_probe.py 量出来),配 4 项回归测试🔶 ①③ 已交付 · ② 暂缓
**M48**方向四「性能优化」阶段三:方法调用融合(新增 METHOD_CALL 指令,把 X.方法(实参) 从 GET_ATTR + CALL 两次宿主回调压成一次)——同机交错 A/B 实测方法调用 1.83x、端到端真实项目 521.9ms → 334.8ms(1.56x)。⚠️ 原计划的另两项实测判定不做:常量折叠(全仓只 7 处可折叠 = 0.16%)、窥孔(候选 <1.7%)、文件 I/O 快路径(包装零开销)。⚠️ METHOD_CALL 是 C VM 专属指令,只对 C VM 编译(默认产物逐字节不变),所以不需要改字节码格式版本✅ 2026-09-25
**M49**方向五「自主分发」落地:ICP 备案完成后官网 <https://基石.cn/> + 自建分发源上线(源站=大陆轻量云 Nginx + EdgeOne CDN);jishi 安装 改「自建源优先 / GitHub 兜底」,索引与包都在境内;客户端多源回退 + 可操作提示 + 医生索引自检;🔴 修掉「HTTPS 521」(真因:源站只听 80,而 CDN 对 HTTPS 走 HTTPS 回源);部署脚本进仓库(密钥/地址只从环境变量读)✅ 2026-09-29
**M50**方向六「标准库继续加强」第一批:新增 6 个模块——统计(10 个函数)/ 编码(8)/ 配置(8)/ html(8)/ 对比(5)/ 标识(3),并给 迭代 +4(累积/组合/排列/笛卡尔积)、文本 +2(截断/填充)、时间 +1(计时,上下文管理器式)补缺——19 → 25 个模块、161 → 231 个函数。验收落到两个真实项目:基石自述站/生成.jsh 删掉手写的 转义()(4 次 替换,而且漏了引号)改用 html.转义;排序跑分/排序.jsh 的手写计时改用 时间.计时。⚠️ 顺带修掉 3 个坑:① 语言级——用 … 为 …: 原先不认宿主对象,标准库返回的计时器不能当上下文管理器用;② 标准库函数的默认值必须是能过边界的值(配置.取 曾用 ... 当哨兵 → 跨边界变 空 → 恒返回 空);③ str 子类过不了 C VM 边界(M47 的副作用),html.原样 用子类会让 C VM 静默多转义一遍。⚠️ 如实标注:这 6 个模块目前只有 Python 侧,Node/Rust 宿主还没实现🔶 第一批已交付 · 后续按真实项目反馈迭代
**M12**评测驱动闭环(12.1–12.4)M8.6
**M13**跨语言字节码分发(13.1–13.4)M9.4
**M14**包管理与生态(14.1–14.4)M10.2
**M15**真实项目 + 语言收敛 1.0(15.1–15.4)M12–M14
**M16**发行版与安装体验(16.1–16.5)M11.3