WebAssembly 简介

更新日期: 2019-12-13阅读: 2.2k标签: 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 计算。



依赖

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

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

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

原文:http://www.youdaily.world/post/b68e0da.html

链接: https://fly63.com/article/detial/6824

avaScript与WebAssembly进行比较+在哪些情况下会优于JavaScript

这是专门探索JavaScript及其构建组件的系列,在识别和描述核心元素的过程中,我们还分享了构建SessionStack时使用的一些经验法则,这是一个轻量级但健壮且高性能的JavaScript应用程序,以帮助用户实时查看和重现其Web应用程序的缺陷。

别了,JavaScript;你好WebAssembly

作为JavaScript替代,一种Web开发的新形式已经浮出水面:WebAssembly.Web开发与JavaScript开发向来是同义词。就是说,直到现在。但一种新的Web开发形式已然出现,声言会取代JavaScript

Next.js 7.0正式发布:重新编译速度提高42%,支持WebAssembly

在经过26次金丝雀发布和340万次下载之后,现在,我们正式推出生产就绪的Next.js 7。DX改进:启动速度提高57%,重新编译速度提高42%;使用react-error-overlay更好地报告错误;编译管道升级:Webpack 4和Babel 7;标准化的动态导入;静态CDN支持;

WebAssembly 的未来:将逐渐解锁整个“技能树”

WebAssembly 在2017年受到主流浏览器的支持,并发布了 MVP 版本,为消除人们对 WebAssembly 的误解,WebAssembly 社区组以 RPG 游戏中人物养成的“技能树”形式,对 WebAssembly 的未来发展路径做了非常详细的解释。

WebAssembly的过去、现在和未来

为了能够让其他语言的代码在浏览器中运行,WebAssembly被创造出来。它拥有更好性能,更小的size,能够更快的加载和执行。我们无需编写WebAssembly的代码,只需要将其他高级语言编译成WebAssembly,这样就能在浏览器中复用大量的其他语言现有的代码。

WebAssembly的前世今身

接触WebAssembly之后,在google上看了很多资料。感觉对WebAssembly的使用、介绍、意义都说的比较模糊和笼统。感觉看了之后收获没有达到预期,要么是文章中的例子自己去实操不能成功,要么就是不知所云

把 WebAssembly 用于提升速度和代码重用

有这样一种技术,可以把用高级语言编写的非 Web 程序转换成为 Web 准备的二进制模块,而无需对 Web 程序的源代码进行任何更改即可完成这种转换。浏览器可以有效地下载新翻译的模块并在沙箱中执行。执行的 Web 模块可以与其他 Web 技术无缝地交互

用 WebAssembly 在浏览器中运行 Python

长期以来,Python 社区一直在讨论如何使 Python 成为网页浏览器中流行的编程语言。然而网络浏览器实际上只支持一种编程语言:JavaScript。随着网络技术的发展

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!