1. 前言
- 估计还有很多道友 搞不清楚 js 的版本发布流程
- 现在都
ECMAScript 2022 正式发布
了, 但是大家用es6,还是不那么丝滑- 这些都和
JavaScript
的版本发布流程有关,当然也和浏览器支持情况有关,但是现在已经不是IE
的时代了,这个问题基本可以忽略
2. TC39
3. TC39 工作职责
- 对 ECMAScript 进行通用、跨平台、中立的标准化。包括语法、语义、支持此语言的库和补充技术。
4. TC39 工作规划
- 维护和更新 ECMAScript 标准;
- 标识、开发和维护扩展 ECMAScript 能力的库;
- 开发用于验证 ECMAScript 标准是否被正确实现的测试用例集;
- 向覆盖更广泛的 ISO/IEC JTC 1 (整个IT行业的标准委员会) 提交选中的标准;
- 对补充或附加的提案进行评估。
5. 标准的制定流程
1. Stage0: 意向阶段 (Strawman)
- 纳入提案范围的内容;
- 展示阶段:在该阶段可以自由的使用任意方式提交推动ECMAScript发展的想法。提议可以来自TC39成员单位,也可以是一个非成员单位, 但需要 注册成为了TC39的贡献者 。
- 条件:文档必须要在TC39会议上进行审核,然后将会被添加 阶段0的建议页面中 。
2. Stage1: 提议阶段 (Proposal),
征求意见
阶段: 附加案例,描述方案,预见潜在的挑战;- 条件:必须要指派
具体的人
来负责该提议。该负责人或助理负责人必须是TC39
的成员。该提议所解决的问题必须通过描述性
的文档进行说明
。
解决方法必须有例子,API,以及对语义和算法的讨论。
最后,存在的潜在问题也必须要得到区分,例如与其他特性之间的关联,以及实现的难度。 Implementation-wise,polyfills和demos也都是必须的。- 下一步:对于阶段1的提议的是否接受,TC39表明了其愿意检查、讨论和为提议做出贡献。继续向前,将会是提议的主要变化。
3. Stage2: 草案阶段 (Draft)
- 以
标准格式
描述对应的语法和语义;- 将会出现标准中的第一个版本。此时,将会与出现在标准中的最终特性是差不多的。
- 条件:此时建议必须要附加更规范化有关特性的语法和语意的说明(使用ECMAScript标准的正式语言)。
描述
应该尽可能的完整
,但也可以包含待办事项列表和占位符。
该特性需要两个实验性的实现,
但其中一个可以在诸如Babel
这样的转译器(transpiler)中。- 下一步:从该改阶段只接收渐增的变化。
4 . Stage3: 候选阶段 (Candidate)
- 提炼从浏览器厂商和用户收集的反馈;
2.此时提议已经接近完成
,只需要得到提议实现方的反馈,以及由用户来进一步推动。- 条件:标准的文本必须是完备的。指定的审稿人(由TC39指派)和ECMAScript标准的编辑必须在该标准上签字。
必须要至少有两个符合标准的实现(可以不指定默认实现)。- 下一步:至此之后,只有对实现和使用过程中出现的重大
问题
进行修正
。
5. Stage4: 完成阶段 (Finished)
- 正式纳入 ECMAScript 标准。
- 条件:在提议进入该阶段时需要满足以下的条件
- Test 262
验收测试
(主要是用JavaScript代码编写的单元测试来验证语言特性) - 两个通过测试的符合
规范
的装运实现(shipping implementations) - 使用该实现的重要的实践经验
- ECMAScript标准的编辑必须要签署该
标准
的文本
- 下一步:该提议会被尽可能快的纳入到ECMAScript标准中。当标准通过长达
一年
的时间获得通过后,该提议将正式
作为标准的其一部分
。