本周,Ecma 国际第 39 技术委员会(TC39)的代表们齐聚东京,由索尼互动娱乐公司(Sony Interactive Entertainment)主办,参加一年中举行的六次全体会议之一。该小组负责定义 ECMAScript(JavaScript)和相关标准,本次会议是他们的第 104 次会议。
在这些会议上,代表们通过一个结构化的流程审议推进提案,该流程引导一个想法演变成一个完全定义的功能,包括验收测试和多个实施。该流程包括六个阶段:最初的草创阶段,然后是五个 "成熟 "阶段,每个阶段都需要委员会批准。
多亏 TC39 联席主席罗布-帕尔默(Rob Palmer)在现场提供的 "ECMAScript 兴奋点 "最新消息,我们对当前提案的进展有了大致的了解。议程包括审议推进提案,以及更新和讨论处于不同阶段的其他提案。
Iterator Helpers to Stage 4
Iterator Helpers 提案已进入第 4 阶段,在这一阶段,所提议的功能已完成并准备纳入标准。该提案将不再做任何修改。该提案将
并入 ECMA-262
[1]
:
❝
迭代器是表示大型或可能是无限可枚举数据集的有用方法。然而,迭代器缺乏辅助工具,无法像数组和其他有限数据结构一样方便使用,这就导致某些问题无法更好地用数组来表示迭代器,或使用库来引入必要的辅助工具。该提案在迭代器原型上引入了一系列新方法,以实现迭代器的一般使用和消耗。
Import Attributes & JSON Modules to Stage 4
导入属性和 JSON 模块提案已进入第 4 阶段,将被纳入标准。
❝
导入属性(Import Attributes)提案的前身是导入断言(Import Assertions),它为模块导入语句添加了内联语法,以便在模块指定符旁边传递更多信息。此类属性的最初应用是在 JavaScript 环境中以通用方式支持更多类型的模块,首先从
JSON 模块
[2]
开始。
Iterator Sequencing to Stage 2.7
迭代器排序已进入第 2.7 阶段,原则上已获批准,正在接受测试、实施或使用验证。该提案允许通过对现有迭代器排序来创建迭代器。
Regular Expression Modifiers to Stage 4
正则表达式修饰符(Regular Expression Modifiers)已进入第 4 阶段,并将被添加到标准中。它允许你更改子表达式中的活动正则表达式标志。
Structs & Shared Structs to Stage 2
Structs 和 Shared Structs 已进入第 2 阶段,委员会已选择了一个首选解决方案或解决方案空间,但该设计只是一个草案,仍有可能发生重大变化。该提案旨在引入四种共享内存特性,从而能够在 JavaScript 和网络中编写新的、高性能的应用程序,并为开发人员提供一个替代
class
es 的选择,即更高的性能上限和静态可分析性(static analyzability)而非灵活性。
Math.sumPrecise to Stage 3
Math.sumPrecise
[3]
提议已进入第 3 阶段,正式被推荐实施。该提案建议在 JavaScript 中添加一个求多个值之和的方法。
Extractors to Stage 2
提取器已进入第二阶段,委员会已选择了首选解决方案或解决方案空间,但该设计只是一个草案,仍有可能发生重大变化。该提案将在 ECMAScript 中引入提取器(又称 "提取器对象"),它将增强 BindingPattern 和 AssignmentPattern 的语法,以允许新的重组形式。
Promise.try to Stage 4
Promise.try 已进入第 4 阶段,并将作为标准的一部分。该提案在 JavaScript 中添加了一项名为 Promise.try 的新功能。它允许开发人员将函数封装在 Promise 中,以改进错误处理,并提供一种更直接的方法来启动 promise 链。该方法可确保立即执行传递给它的函数并返回一个 Promise,从而更容易统一处理同步异常和异步操作。
Atomics.pause to Stage 3
Atomics.pause 已进入第三阶段,正式被推荐实施:
❝
为获得更好的等待效果,请添加
Atomics.pause(N)
。它会在很短的时间内执行有限时间等待,运行时可以通过适当的 CPU 提示来实现。除了计时外,它没有其他可观察到的行为。
与
Atomics.wait
不同的是,由于它不会阻塞,因此主线程和
worker
线程都可以调用它。
****在执行过程中,应根据底层架构的最佳实践,使用 CPU yielding 来实现短暂的等待。非负整数参数
N
控制暂停时间,
N
值越大,暂停时间越长。当微等待本身处于循环中时,它可用于实现回退算法。
❝
Error.isError to Stage 2.7
Error.isError 已推进到 2.7 阶段,原则上已获批准,但仍在测试、实现或使用验证中。该提案为开发人员引入了一种新方法,用于测试某个值是否为错误实例。
Array.zip for Stage 1, or 2, or 2.7
Array.zip
[4]
提议将于明天讨论,预计将推进到第 1、2 或 2.7 阶段。该提案将在
Array
构造函数中添加
Array.zip
和
Array.zipKeyed
静态方法。