WebAssembly 简介

WebAssembly(缩写WASM)是一种安全,便携,低级代码设计用于高效执行和紧凑表示的格式。

它的主要目标是使Web上的高性能应用,不需要针对网络的特定假设或提供特定的定制化的网络功能,因此它可以在其他环境中直接使用,也就是良好的跨平台特性。

WebAssembly是由W3C社区组开发的开放标准。

 

WebAssembly 设计目标

WebAssembly 的设计目标有以下几方面:

快速,安全,便携的语义:

  • 快速:用接近原生代码的性能执行,趁着能力共同的所有当代的硬件。
  • 安全:密码进行验证,在存储安全[2]执行,沙盒环境防止数据损坏或安全漏洞。
  • 明确定义:全面,准确地定义了有效的计划和他们的方式,很容易推理,正式与非正式的行为。
  • 独立于硬件的:都可以现代建筑,桌面或移动设备上进行编译和一致好评嵌入式系统。
  • 语言无关的:没有任何特权特定语言,编程模型或对象模型。
  • 平台无关:可以嵌入在浏览器中运行作为一个独立的虚拟机,或者集成在其他环境中。
  • 打开:程序可以与他们在一个简单的和通用的方式进行互操作环境。

高效便携的表示:

  • 紧凑:具有二进制格式快速发送由比典型的文本或本机代码格式小。
  • 模块化:程序可以在能够传播,缓存,和分别消耗更小的部分被分割。
  • 高效:可以解码,验证,并在快速单通编译,无论是实时编译( JIT, Just In Time )还是预编译( AOT, Ahead Of Time)。
  • 可流:允许解码,验证和编译,以尽快开始,所有数据都已经看到了。
  • 并行化:允许进行解码,验证,和编译被划分成许多独立的并行任务。
  • 便携性:可以让不广泛跨越现代的硬件不支持任何建筑的假设。

WebAssembly 代码也意在便于检查和调试,尤其是在像网络浏览器的环境中,但是这些特征超出了本规范的范围。

 

范围

在其核心,WebAssembly是虚拟指令集架构(Instruction Set Architecture(ISA) 虚拟)。因此,它有许多使用情况,并且可以嵌入在许多不同的环境。涵盖多元化和实现最大限度的重用,在 WebAssembly 规范是分裂和分层为几个文件。

这份文件是关于 WebAssembly 的核心 ISA 层。它定义了指令集,二进制编码,验证和执行语义,以及一个文本表示。这不,但是,定义如何 WebAssembly 程序可以与特定的环境中,他们执行的互动,也不是如何从这样的环境中调用。

相反,该规范由定义接口的具体嵌入环境,如网络附加文件的补充。这些将各自限定 WebAssembly 应用程序编程接口( API )适合于给定的环境。

 

安全注意事项

WebAssembly 提供在其中执行代码的计算环境没有环境的访问。与环境,如 I / O,对资源的访问,或操作系统调用的任何相互作用,只能通过调用嵌入器提供并导入到一个 WebAssembly 模块的功能来执行。嵌入器可以通过控制或限制它使可供导入该功能能力建立适合各自的环境安全政策。这种考虑是一个嵌入的责任和 API 定义特定环境的主题。

因为 WebAssembly 被设计成被翻译成直接在主机的硬件上运行的机器代码,它是可能受到在硬件水平边信道攻击。在环境中,这是一个问题,一个嵌入可能不得不把合适的缓解措施到位,以隔离WebAssembly 计算。

vi设计http://www.maiqicn.com 办公资源网站大全https://www.wode007.com

依赖

WebAssembly 取决于两个现有的标准:

  • IEEE 754-2019,对于浮点数据的表示和相应的数字操作的语义。
  • Unicode 中,导入/导出名称的表示和文本格式。

然而,为了使本说明书自包含的,前述标准相关方面进行定义和形式化为本说明书的一部分,例如作为二进制表示和浮点值的舍入,和值的范围和 UTF-8 编码的 Unicode 的字符。

posted @ 2020-10-04 13:30  浅笑·  阅读(2007)  评论(0编辑  收藏  举报