WebAssembly 2.0 标准草案发布 

W3C揭幕 最近通过一个帖子 新规范草案 标准化的准备代码 WebAssembly 2.0 和相关的 API 能够创建可跨浏览器和硬件平台移植的高性能应用程序。

对于那些刚接触 WebAssembly 的人,你应该知道 这提供了一个通用中间件, 低电平和 独立于浏览器,运行已编译的应用程序 来自各种编程语言。 通过将 JIT 用于 WebAssembly,您可以获得接近原生代码的性能水平。

关于 WebAssembly

WebAssembly 可用于在浏览器中执行高性能任务,例如视频编码、音频处理、3D 和图形操作、游戏开发、密码运算和数学计算,通过执行用 C/C++ 等编译语言编写的代码。

WebAssembly 的主要任务之一是在不同平台上提供可移植性、行为可预测性和代码执行身份。 最近,WebAssembly 也被推广为在任何基础设施、操作系统和设备上安全执行代码的通用平台,不仅限于浏览器。

关于 WebAssembly 2.0 草案

自 WebAssembly 以来所做的部分更改是 WebAssembly 2.0 的最终提案,包括固定宽度 SIMD、大容量内存操作、引用类型、JavaScript BigInt 对 WebAssembly i64 的支持、对多个返回值的支持以及可变的导入/导出全局变量。

W3C 发布了三个 WebAssembly 2.0 规范草案:

  1. Web 组装核心: 描述了用于运行中间 WebAssembly 代码的低级虚拟机。 与 WebAssembly 相关的资源采用“.wasm”格式,类似于 Java“.class”文件,其中包含静态数据和用于处理该数据的代码段。
  2. WebAssembly JavaScript界面​​: 提供与 JavaScript 集成的 API。 允许您获取值并将参数传递给 WebAssembly 函数。 WebAssembly 执行遵循 JavaScript 安全模型,与主机的所有交互都以类似于运行 JavaScript 代码的方式执行。
  3. WebAssembly Web API: 定义了一个基于 Promise 机制的 API,用于请求和执行“.wasm”资源。 WebAssembly 资源格式经过优化,无需等待文件完全下载即可开始执行,从而提高了 Web 应用程序的响应能力。

WebAssembly 和 WebAssembly 2.0 的区别

另外,需要注意的是,WebAssembly 2.0 与标准的第一版相比有一些重要的变化:

  • v128 向量类型支持 以及相关的向量指令,允许您对多个数值并行执行操作(SIMD,单指令,多数据)。
  • 能够导入和导出可变全局变量,它允许将值全局绑定为 C++ 中的堆栈指针。
  • 将 float 转换为 int 的新指令,而不是在结果溢出时引发异常,而是返回最小或最大可能值(SIMD 需要)。
  • 扩展整数符号的说明 (增加保持符号和值的数字的位深度)。
  • 支持按块和函数返回多个值 (以及将多个参数传递给函数)。
  • 实现 JavaScript 函数 BigInt64Array 和 BigUint64Array 在 JavaScript 类型 BigInt 和 64 位整数的 WebAssembly 表示之间进行转换。
  • 支持引用类型 (funcref 和 externref)及其相关语句(select、ref.null、ref.func 和 ref.is_null)。
  • memory.copy、memory.fill、memory.init 和 data.drop 指令 在内存区域之间复制数据并删除内存区域。
  • 直接访问和修改表的说明 (table.set、table.get、table.size、table.grow)。
  • 能够在一个模块中创建、导入和导出多个表. 以批处理模式复制/填充表的函数(table.copy、table.init 和 elem.drop)。

最后,如果你有兴趣了解更多,可以咨询详情 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责资料:AB Internet Networks 2008 SL
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。