ShadowRealm S2.7
提案概览
- 阶段: Stage 2.7
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
ShadowRealm 提案通过提供一个标准 API 来创建具有自身内部方法和内置对象的独立全局环境,解决了创建隔离 JavaScript 环境的需求。它提供了一个类,其方法可以同步评估源代码并异步动态导入模块,仅返回原始值或可调用函数。7,该提案已从早期基于 globalThis 的模型演变为更精简、隔离的 Realm API。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
ECMAScript 规范提案:ShadowRealm API
状态
提案负责人
- @dherman
- @caridy
- @erights
- @leobalter
- @rwaldron
- @legendecas
索引
什么是 ShadowRealms?
ShadowRealms 是一个不同的全局环境,拥有自己的全局对象,包含自己的内部方法和内置对象(不绑定到全局变量的标准对象,例如 Object.prototype 的初始值)。
更多内容请参阅解释器文档。
API(TypeScript 格式)
一些示例见解释器文件。
演示文稿
- TC39 会议,2024 年 12 月 - Stage 3 请求
- TC39 会议,2024 年 6 月 12 日 - Stage 2.7 更新
- TC39 会议,2024 年 2 月 7 日 - 移动至 Stage 2.7
- TC39 会议,2023 年 9 月 7 日 - 移动至 Stage 2
- TC39 会议,2022 年 3 月 29 日 - Stage 3 更新
- TC39 会议,2021 年 12 月 14 日 - Stage 3 更新
- TC39 会议,2021 年 8 月 31 日 - 重命名为 ShadowRealm
- TC39 会议,2021 年 7 月 12 日 - Stage 3 请求
- TC39 会议,2021 年 5 月 25 日 - Stage 2 更新
- TC39 会议,2021 年 4 月 - 引入可调用边界 Realm
- TC39 会议,2021 年 1 月 - 基于 Chrome 对先前 API 立场的 Realms 更新
- TC39 会议,2020 年 11 月 - Stage 2 更新
- TC39 会议,2020 年 6 月 4 日 - Stage 2 更新
- TC39 孵化器电话会议,2020 年 5 月 26 日
- TC39 2020 年 2 月 - Stage 2 更新
- TC39 2018 年 5 月 - Stage 2 请求(已存档)
历史
- 我们从暴露的 globalThis 模型转向了精简的隔离 Realm API(见 https://github.com/tc39/proposal-shadowrealm/issues/289 和 https://github.com/tc39/proposal-shadowrealm/issues/291)
- 我们在 ES2015 时间框架内着手于此,因此从未经过阶段流程(ES6 Realm Objects 原型规范.pdf)
- 后来被推迟了(这是正确的!)
- 原始想法来自 @dherman:什么是 Realms?
贡献
更新此提案的规范文本
规范文本的源文件位于 spec.html,并使用 ecmarkup 语言编写。
修改规范文本时,您可以使用以下命令构建 HTML 版本:
或者,您可以运行 npm run watch。