Limited ArrayBuffer S1
中文标题:受限 ArrayBuffer
提案概览
- 阶段: Stage 1
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
该提案解决了 ArrayBuffer 缺乏只读和范围受限视图的问题,这些问题阻碍了最小权限/信息原则的实施。提案建议冻结 ArrayBuffer 以使其及其视图变为只读,并可选地创建范围受限的视图。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
受限 ArrayBuffer
状态
提案倡导者:Jack Works
作者:Jack Works
阶段:1
演示文稿
待解决的问题
以下所有问题都有助于实现最小权限/信息原则。
- 无法使
ArrayBuffer变为只读。 - 无法向他人提供
ArrayBuffer的只读视图,同时内部保留读写权限。 - 无法向他人提供范围受限(仅能看到整个缓冲区的一小部分)的视图。
设计目标
- 冻结
ArrayBuffer。- 类似于
Object.freeze,一旦冻结就无法恢复。 - 任何指向冻结的
ArrayBuffer的TypedArray/DataView也必须是只读的。 - [可选] 在跨 Realm 传输时保持冻结状态(HTML 集成)。
- 类似于
- 对可读写的
ArrayBuffer提供只读的TypedArray/DataView。- 绝不能从只读视图构造出读写视图。
- [可选] 对可读写的
ArrayBuffer提供范围受限的TypedArray/DataView(CrimsonCodes0 的 WebAssembly 用例)。- 绝不能从较小的视图范围构造出更大的视图范围。
- 不给实现者增加过多复杂性。
优点
- 最小权限/信息原则适用于
ArrayBuffer。 - 嵌入式 JS 引擎可以将 ROM 表示为只读的
ArrayBuffer。
API 设计
参见 design.md