内容提要
自从ECMAScript 2015年发布以来,JavaScript语言规范一直在更新。TC39委员会制定了多阶段流程,确保新特性得到充分设计、测试和实现。引入Stage 2.7可以减少特性规范的重复修改,提高开发效率。
延伸解读
Stage 2.7 如何减少重复工作
在原有流程中,提案从 Stage 3 回退到 Stage 2 时,已编写的测试需要重写,造成大量重复劳动。Stage 2.7 将测试套件的开发提前到 Stage 3 之前,使设计变更时测试的调整更少。同时,Stage 3 现在明确要求测试套件,实施者能直接获得可用的测试,降低了实施风险。
Stage 3 的新定位与实施反馈
Stage 3 不再只是设计完成的标志,而是专注于获取实施经验和发现兼容性问题。规范文本在 Stage 2.7 已基本冻结,除非测试或实施中发现问题,否则不再更改。这使实施者能更早开始工作,并减少因设计反复而导致的测试重写。
实际提案的进展与差异
多个提案已进入 Stage 2.7,如 Math.sumPrecise 和 Regexp.escape,后者已进一步达到 Stage 3。而 atomics.pause 因难以编写有效测试,其测试仅验证 API 存在。ShadowRealm 虽设计基本完成,但仍需至少两个实施者的支持及 WPT 测试才能进入 Stage 3,体现了 Stage 2.7 标记中间进展的作用。
Q&A
ECMAScript 2015之后,JavaScript规范经历了哪些变化?
自2015年ECMAScript发布以来,JavaScript规范经历了多次更新,TC39委员会制定了多阶段流程以确保新特性得到充分设计和测试。
Stage 2.7的引入有什么意义?
Stage 2.7的引入旨在减少特性规范的重复修改,提高开发效率,允许提案直接从Stage 2跳到Stage 3。
TC39委员会是如何确保新特性设计的?
TC39委员会通过多阶段流程,确保新特性经过充分设计、测试和实现,阶段包括Stage 0到Stage 4。
Stage 3和Stage 4之间有什么区别?
Stage 3需要真实环境的反馈和测试以验证提案的可行性,而Stage 4表示规范工作已完成并获得批准,准备纳入语言规范。
有哪些提案已经成功进入Stage 2.7?
多个提案已成功进入Stage 2.7,包括Math.sumPrecisemethod和Regexp.escape。
ShadowRealm提案目前处于什么阶段?
ShadowRealm提案仍需进一步工作才能达到Stage 3,显示Stage 2.7的实用性。