现象
console.log({marker:1}) 打印 Bun 的多行形式,node 打印 { marker: 1 }。
根因(W48 lane C5 定位)
util.inspect 本身已经是 node-correct 的。 问题是全局 console 是一个原生 Bun 格式化器,从不路由到 util.inspect。两条路径各自独立,任何断言 console 输出形状的测试都会分叉。
一个已确认的受害者:test-runner-import-no-scheme.js 的模块解析已经在同一条 lane 修好(能正确落到 node_modules/test),现在只剩这个格式差异挡着。
为什么当时没有顺手修
lane 明确判断这需要自己的 lane:改全局 console 的格式化路径会在两个语料库上双向扩散。
但要区分清楚:MEMORY.md 记录的那次灾难是全量替换 util.inspect + Proxy 跟踪;这里是让 console 走一个已经正确的 inspect。不是同一件事,只是同一片区域。所以该做,但要带性能门禁做。
建议的 lane 形状
- 让全局
console.log/warn/error 的对象格式化走 node-correct 的 inspect 路径
- 门禁:两个语料库的 console 相关组,加
tools/integration/latency_probe.py 的性能基线(console 在热路径上)
- 预期收益:任何断言 console 输出的文件,跨两个语料库
相关
现象
console.log({marker:1})打印 Bun 的多行形式,node 打印{ marker: 1 }。根因(W48 lane C5 定位)
util.inspect本身已经是 node-correct 的。 问题是全局console是一个原生 Bun 格式化器,从不路由到util.inspect。两条路径各自独立,任何断言 console 输出形状的测试都会分叉。一个已确认的受害者:
test-runner-import-no-scheme.js的模块解析已经在同一条 lane 修好(能正确落到node_modules/test),现在只剩这个格式差异挡着。为什么当时没有顺手修
lane 明确判断这需要自己的 lane:改全局 console 的格式化路径会在两个语料库上双向扩散。
但要区分清楚:
MEMORY.md记录的那次灾难是全量替换util.inspect+ Proxy 跟踪;这里是让 console 走一个已经正确的 inspect。不是同一件事,只是同一片区域。所以该做,但要带性能门禁做。建议的 lane 形状
console.log/warn/error的对象格式化走 node-correct 的 inspect 路径tools/integration/latency_probe.py的性能基线(console 在热路径上)相关
MEMORY.md:util.inspect 全量替换性能陷阱(区别见上)