文档章节

WebAssembly 简介

you的日常
 you的日常
发布于 2019/12/13 10:05
字数 1226
阅读 105
收藏 0

WebAssembly 简介

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 VS. JS

依赖

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

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

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

© 著作权归作者所有

you的日常
粉丝 2
博文 4
码字总数 8305
作品 0
同里
高级程序员
私信 提问
2019 年 WebAssembly 盘点:跟 Javascript 的相爱相杀 - 知乎

简介: 2019 年 WebAssembly 以超乎我们预料的速度在发展,2020 年可能会是一个 Wasm 应用百花齐放的年份。两年多以来,本文作者 Colin Eberhardt 一直在撰写 WebAssembly 每周新闻 [1]。正值...

我是程序员
01/02
0
0
WebAssembly应用到前端工程(上)—— webassembly模块的编写

前言 WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languag......

绿豆冰沙
2019/06/28
0
0
WebAssembly系列一:WebAssembly介绍

WebAssembly介绍 出现WebAssembly的契机 JS语言存在的缺陷 JS只包含64位浮点数(double双精度浮点数),遵循IEEE754标准,这会导致运算不准确的问题(如:0.1 + 0.2),当然现今的解决方案也...

Gavin1995
2019/07/18
0
0
不安分的 Go 语言开始入侵 Web 前端领域了!

作者 | 老钱 责编 | 胡巍巍 本文经授权转载自“码洞”(ID:codehole) 从 Go 语言诞生以来,它就开始不断侵蚀 Java 、C、C++ 语言的领地。今年下半年 Go 语言发布了 1.11 版本,引入了 WebA...

CSDN
2018/11/13
0
0
Blazor——Asp.net core的新前端框架

Blazor是微软在Asp.net core 3.0中推出的一个前端MVVM模型,它可以利用Razor页面引擎和C#作为脚本语言来构建WEB页面,如下代码简单演示了它的基本功能: 和Angular JS和VUE的模型非常类似,B...

dotNET跨平台
2019/05/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

LeetCode.6.Z字形变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 之后,你的输出需...

tedzheng
18分钟前
21
0
使用postman测试接口,解决Session共享问题

问题: 在做登录模块时,使用Postman做接口测试,发现session不能共享问题:第一次请求将系统随机生成验证码放入Session中,第二次请求想要获取系统生成的验证码,但是取到的值为null,因此无...

code-ortaerc
50分钟前
67
0
从Maven存储库获取源JAR

有谁知道您是否可以在Maven存储库中找到源JAR? #1楼 如果您使用的是eclipse,则还可以打开“首选项”>“ Maven”并选择“下载Artifact源”,这将使pom.xml完整无缺,并将源或Java文档(如果...

技术盛宴
58分钟前
60
0
CentOS 7 SSH连接超时自动断开解决方案

用SSH登录到Linux的时候,由于默认的连接超时时间很短,经常断开。可以修改配置文件调整服务器端向客户端请求消息的时间间隔,解决自动断开的问题。 编辑/etc/ssh/sshd_config 找到 #ClientA...

matrixchan
今天
53
0
非典期间的一段回忆

最近的新型肺炎病毒甚嚣尘上,已经成了大众最瞩目的事件,整个国家层面反应也算迅速,毕竟我们是一个十几亿人口的国家。 公众号的读者和我分享了一个一段03年非典期间的故事,感慨颇深。经原...

王知无
今天
65
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部