六天卡在同一块代码上,最后靠4行提交强行破局——这不是创业公司的生死时速,而是一个编程语言团队日常工作的真实切片。

卡在第六天

内存边界审计第二部分停滞近一周后,团队终于用4个提交把Cx 0.1推入候选发布状态。这场审计揪出一个关键引用缺陷,9个硬阻塞全部清零,只剩合并间隙这最后一道关。

破局来自提交a576f20。parser.rs、semantic.rs、main.rs、runtime.rs全被动刀,还新增了t109到t114共6个矩阵测试。类型解析器从扁平分支改成递归结构,原本堵死的嵌套类型——比如带泛型的结果类型和句柄——现在能正常解析了。

语义层强化了结构体字段的类型解析,对点访问左值做类型匹配拒绝;运行时的数值转换也改用左值声明类型来处理赋值和复合赋值。解释器还单独开了64MB栈线程防溢出——递归程序是真的会栈爆。

数字说话:17个文件变动,净增119行。

12个测试程序

提交41099fb在examples/audit_memory/目录扔了12个针对性测试,死磕句柄生命周期、拷贝语义和字符串池操作。结果:9个干净通过,1个池扩容限制留到后续版本,1个语义拒收符合预期,剩下1个正是那个关键缺陷。

4行修复

缺陷修复(b057340)只有4行。问题是引用值能溜进结构体字段,绕过变量赋值和函数返回的逃逸检查。semantic.rs新增的安全层现在在结构体字段赋值和实例化时拦截这类逃逸。矩阵测试t115专门盯这个场景。