标准化源映射
Standardizing source maps

原始链接: https://bloomberg.github.io/js-blog/post/standardizing-source-maps/

## 源代码映射:从共享文档到官方标准 多年来,源代码映射——现代 Web 应用程序调试的关键——一直基于一份 Google 文档中的共同理解运作,缺乏正式标准。这阻碍了功能开发并造成了不一致性。源代码映射弥合了优化/压缩代码与原始代码之间的差距,使开发者能够高效调试。 这种需求源于 2009 年 Google 的 Closure Tools 等工具,这些工具优化了 JavaScript,但需要一种映射回原始代码的方式。早期的源代码映射修订版由于逐字符映射而体积庞大。修订版 3(2011 年)使用 Base64 VLQ 编码、基于片段的位置和相对编码,大大减小了体积——这种格式保持了十多年未变。 尽管成功添加了忽略列表(允许从调试中排除框架文件),但正式标准变得至关重要。2023 年,TC39-TG4 成立以标准化源代码映射,最终形成了 ECMA-426。 未来的工作重点是“作用域”(嵌入作用域和绑定信息以获得更好的堆栈跟踪)和“范围映射”(高效映射文本范围,提高组合源代码映射的精度)。这种标准化有望为源代码映射和整个 JavaScript 生态系统带来更强大和不断发展的未来。

## 源码映射标准化讨论 最近的 Hacker News 讨论集中在源码映射标准化工作上——这些文件将编译后的代码映射回其原始源代码,用于调试目的。当前的“标准”很大程度上源于 Chrome 对设计文档的实现,并通过实际使用成为事实上的标准。 对话强调了现有调试格式(如 DWARF)的复杂性,DWARF 使用多种字节码格式(甚至有图灵完备的格式!)来执行地址映射和变量定位等任务。一些评论员建议可以从 debuginfo 维护者和较新的格式(如 RDI)中吸取经验。 除了调试之外,源码映射对于语言扩展和工具(如语言服务器协议 (LSP) 服务器)也越来越重要。多位用户对正在进行中的标准化过程表示兴奋,认为这对于改进 Web 平台至关重要,并承认有必要改进该领域的规范。 也有一些对过去脚本语言简单性的承诺与调试现实之间差距的无奈。
相关文章

原文
联系我们 contact @ memedata.com