WebAssembly 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
WebAssembly 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 GPL
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发常用工具包
开发厂商
地区 不详
提 交 者 shengjuntu
适用人群 未知
收录时间 2016-08-10

软件简介

Mozilla、谷歌、微软和苹果已经决定开发一种面向Web的二进制格式。该格式名为WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中。

几年前,我们在InfoQ上讨论过面向Web的通用字节码的优点(见《讨论:我们是否需要一种通用的Web字节码?》),概括了创建这样一种格式的困难。其中提及的一个主要问题是主要的浏览器制造商无法达成一致:Mozilla在推asm.js,谷歌支持PNaCI,苹果在开发FLTJIT,而微软没有对其中的任何一种表示出兴趣。但现在,情况已经发生了变化。所有四个主要的浏览器供应商一致同意创建一种面向Web的二进制格式WebAssembly或WASM/wasm。有人将其称为字节码,但wasm不是传统意义上的字节码,Brendan Eich指出:“WebAssembly实际上是一个经过压缩的AST编码,而不是一堆字节码。小声点,不要告诉任何人。如果愿意,你还是可以称它为字节码。”

迄今为止,这个项目一直是秘密进行的,但现在,它已经在GitHub上和W3C社区组里公开。WebAssembly的初衷是,让使用JavaScript之外的语言编写的程序可以运行在服务器、移动或IoT设备上的浏览器和其它JS代理中。这种格式最终将取代asm.js和PNaCI。根据项目设计文档(尚 未最终确定),WASM使用二进制是因为它“可以提供更高的效率:它减少了下载文件大小,并加快了解码速度,因此,即使很大的代码库也可以快速启 动。”WASM有一个相对应的文本格式,可以供调试器或其它面向开发者的工具使用。这些工具应该能够从一种格式转换成另外一种格式,而且不会丢失信息。

WebAssembly实现工作已经迈出了一个临时的第一步:将该格式转换成相应的asm.js代码,那样,它就可以运行在支持asm.js的浏览器上:Firefox、Edge、Chrome。已经有一个以此为目的构建的polyfill原型,初步结果显示,压缩后的二进制格式比asm.js压缩后要小20-30%,wasm解码速度比解析相应的asm.js源代码要快大约23倍。WASM稍后将获得浏览器VM的原生支持。

WebAssembly将首先把C/C++程序带给Web,但稍后会通过增强实现对其它任何语言的支持。一个LLVM后端和clang移植已经在计 划上。WASM将运行在“和JavaScript相同的语义空间”,支持从/到JavaScript的异步调用,访问所有的浏览器API,并且遵循 JavaScript程序所遵循的安全策略。客户端应用程序可以完全用WASM编写,也可以用WASM实现业务逻辑,而用HTML/CSS /JavaScript实现UI。

紧跟着JavaScript的第二十个生日宣布,并且是在Ecma宣布ES6规范获最终批准的当天,WebAssembly对JavaScript而言可不是一个好消息。WASM将使得使用任何能够编译成WASM的语言编写Web代码成为可能,
JavaScript将直接与其它语言竞争。我们是否可以期待Java或C#编译成WASM呢?

WebAssembly将从开发asm.js和PNaCI的经验教训中获益,因为创建它的团队中包含了来自Mozilla和谷歌的团队。而微软和苹 果的支持使它成为了一个非常有前途的项目。剩下的唯一问题是时间:通常,由多个大型公司共同开发的项目需要花费大量的时间。在这种情况下,标准化过程非常 缓慢。

查看英文原文:WebAssembly: A Universal Binary and Text Format for the Web

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (4)

加载中
干嘛那么麻烦,搞个 任何语言 到 JavaScript的 polyfill不就好了
05/20 13:18
回复
举报
首次编译,一个 Hello World 项目都能搞成大项目编译一样……编译完成以后不能100%保证运行成功,模块可能会加载失败,有些莫名其妙的错误不知道怎么定位。在网络上传输也是,玩过一个 Unity 游戏,下载编译后的 js 文件居然还有缺斤少两的说法,下载器根本不知道完整性检查,反正网速不好的话爱停哪就停哪,就是这么任性(摊手),两次下载的文件大小差异可以达到4M以上,由此带来的稍微一个语法错误、缺少一段代码就能导致整个程序无法运行……
2019/12/16 09:17
回复
举报
#WebAssembly# 这货会不会比java更有前途?
2019/11/14 09:55
回复
举报
Mozilla Yes !!!
2018/10/17 11:28
回复
举报
#webassembly# 我错过了什么
2018/04/17 08:36
回复
举报
更多评论
发表于大前端专区
05/15 08:59

首个运行 WebAssembly 的 Java 库 Wasmer JNI 出现

用于执行 WebAssembly 二进制程序的 Wasmer 公开了目前业内首个支持 WebAssembly 的 Java 扩展库 Wasmer JNI。 根据介绍,此次开源出来的 Wasmer JNI 的特性包括: 易于使用:API 模仿标准的 WebAssembly API 快:极尽可能运行 WebAssembly 模块 安全:对 WebAssembly 的所有调用完全安全并且沙箱化隔离(采用 Rust 编写...

28
17
发表于AI & 大数据专区
04/15 07:54

Wasmtime 为 WebAssembly 增加 Go 语言绑定

为提供更好的跨平台支持,WebAssembly 正在积极推动其在本地桌面端的进展。与此同时,Wasmtime(WebAssembly runtime)近期为它增加了 Go 绑定功能,这意味着开发者可直接在 Go 应用程序中调用 WebAssembly 模块。 Wasmtime 提供了 JIT 风格的 WebAssembly runtime,这是一个属于字节码联盟的项目,此前已为 Rust, C, P...

6
13
发表于大前端专区
01/09 08:50

使用 WebAssembly 的网站中有一半将其用于恶意目的

根据一项已发表的学术研究,使用 WebAssembly 的网站中大约有一半将其用于恶意目的。 WebAssembly 由 Mozilla、谷歌、微软和苹果这四个主要的浏览器供应商协同创建,它引入了一种新的二进制文件格式,用于将代码从 Web 服务器传输到浏览器。一旦到达浏览器,WebAssembly 代码(Wasm)就会以接近本地的速度执行,类似于已...

13
11
发表于服务端专区
2019/12/10 08:07

.NET 应用程序支持直接调用 WebAssembly 模块

WebAssembly Runtime 现已添加 .NET Core API,开发者可直接在 .NET 应用程序中调用 WebAssembly 模块。 Mozilla 宣布由 Bytecode Alliance 创建的 Wasmtime(WebAssembly runtime)现已添加处于早期预览版状态的 .NET Core API,这就意味着开发者可以直接在 .NET 应用程序中调用 WebAssembly 代码。 Bytecode Alliance(...

13
11
发表于AI & 大数据专区
2019/12/07 08:45

WASM 成为 HTML、CSS 与 JS 之后的第 4 门 Web 语言

大家都知道,万维网联盟 W3C 认证的 Web 语言有 HTML、CSS 与 JavaScript,而近日联盟正式宣布 WebAssembly 核心规范(WebAssembly Core Specification)成为官方 Web 标准,这意味着 WebAssembly 成为了第 4 种 Web 语言。 WebAssembly 也叫 WASM,它是为基于栈的虚拟机设计的二进制指令格式,WASM 作为可移植目标,用于...

67
65
发表于服务端专区
2019/11/14 07:50

字节码联盟成立,WebAssembly 生态将完善网络安全性

近日 Mozilla、Fastly、Intel 与 Red Hat 宣布成立联合组织 Bytecode Alliance(字节码联盟),该联盟旨在通过协作实施标准和提出新标准,以完善 WebAssembly 在浏览器之外的生态。 WebAssembly 也叫 Wasm,它是为基于栈的虚拟机设计的二进制指令格式,Wasm 作为可移植目标,用于编译高级语言(如 C/C++/Rust),从而可以...

8
16
发表于大前端专区
2018/10/25 08:22

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

WebAssembly 在2017年受到主流浏览器的支持,并发布了 MVP 版本(Minimum Viable Product,最简可行产品)。虽然 WebAssembly 社区组致力于使 WebAssembly 向后相容,让现在开发的 WebAssembly 应用程式,仍可以在未来的浏览器中运作,但这并不代表 WebAssembly 功能已经完整,MVP 绝非最终版本。相反,WebAssembly 还将...

10
20
发表于开发技能专区
2018/10/16 08:12

Mozilla 优化 WebAssembly 和 JS 在火狐的调用

Mozilla 最新的 Firefox 浏览器测试版 Firefox Nightly 可以更快地调用 WebAssembly 二进制格式和 JavaScript,因此组合这两种语言更容易。 WebAssembly 可以作为 Web 开发中 JavaScript 的伴侣,承担性能密集型任务。 但到目前为止,两种语言之间的缓慢函数调用阻碍了两者的结合。Firefox Nightly beta 使这些调用比非内...

2
2
发表于大前端专区
2018/07/11 08:05

WebAssembly 执行速度比 JavaScript 快?小心打脸

WebAssembly 一直被视为解决 Web 性能低下的救星,各大主流浏览器也纷纷选择拥抱 WebAssembly 。尤其是 Firefox ,在对 WebAssembly 的优化上下了许多功夫,像是引入分层编译和 IndexedDB 缓存。 那 WebAssembly 目前实际使用起来的效率情况如何?PSPDFKit 近日创建并开源了一个 WebAssembly 测试基准,旨在透过测试了解...

12
5
发表于大前端专区
2018/06/26 08:10

WebAssembly 新标准可能导致幽灵熔断修复程序无效

据 Forcepoint 的安全研究员 John Bergbom 称,即将增加的 WebAssembly 标准可能会使浏览器级别的一些针对 Meltdown 和 Specter 的修复程序无用。 WebAssembly(WA 或 WASM)目前支持所有主流浏览器,如 Chrome,Edge,Firefox 和 Safari。 该技术是一种二进制语言,浏览器将转换成机器码并直接在 CPU 上运行。浏览器制造...

7
2
发表于AI & 大数据专区
2018/04/22 08:08

Safari/WebKit WebAssembly 中的安全漏洞利用

今年以来,WebAssembly 的发展势头强劲,频频引起技术圈的轰动。这项技术目前已支持 Golang, Rust 和 TypeScript 这些编程语言,它们都成为了可用于编写 wasm 应用程序的示例语言。 而 WebAssembly 对浏览器的支持也比以往更好,甚至可以说它已经成长到了“临界质量”(critical mass)这个状态。早在 2016 年,它就已经在...

1
2
发表了资讯
2017/05/31 15:34

Chrome 将停止支持 PNaCl ,拥抱 WebAssembly

Chrome 从 2013 年开始支持 PNaCl(Portable Native Client),为开发者提供了一种技术去构建高性能的 Web 应用,但这项技术只有 Google 支持。源自 Mozilla Asm.js 项目的 WebAssembly 技术则得到了所有浏览器开发商的一致拥护: Chrome 和 Firefox 已经原生支持 WebAssembly,Edge 和 Safari 也在预览版中加入了 WebA...

15
12
发表了资讯
2016/11/02 00:00

WebAssembly 开始在浏览器当中进行预览

虽然我们已经密切关注Web浏览器中的JavaScript性能,但现在的注意力正转向进一步提高浏览器中的代码执行效率。WebAssembly是WebAssembly社区组(包括Microsoft,Mozilla,Google和Apple)协作努力结果。与JavaScript不同,JavaScript需要在执行之前对纯文本代码进行“即时”(JIT)编译,而Web浏览器将下载预编译的WebAs...

6
11
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于云计算专区
05/17 22:09

WebAssembly

WebAssembly From Wikipedia, the free encyclopedia Jump to navigationJump to search WebAssembly Paradigm Imperative, structured, expression-oriented Designed by W3C Developer W3C Mozilla Microsoft G......

0
0
发表了博客
2019/06/28 20:58

【webAssembly系列】webAssembly初探究竟

一、前言 自从JavaScript诞生开始,到现在开始变成流行的编程语言,背后的是web发展所推动的。web应用的变得更多更复杂,但是渐渐暴露出JavaScript的问题: (1)语法太灵活导致开发大型web项目困难; (2)性能不足满足一些场景的需要。 二、为什么需要WebAssembly 针对以上的问题,JavaScript出现了一些代替语言,比如...

0
0
发表了博客
2019/02/24 21:42

WebAssembly学习(一):认识WebAssembly

WebAssembly作为一门新兴起的技术,在 JavaScript 圈非常的火!人们都在谈论它多么多么快,怎样怎样改变 Web 开发领域,被各大巨头所推广,这篇文章对其做一个简单的了解认识,本文非原创,参考文章见底部。 1.什么是WebAssembly WebAssembly的名字带个汇编Assembly,所以我们从其名字上就能知道其意思是给Web使用的汇编...

0
0
发表于大前端专区
2015/08/04 17:52

WebAssembly系列1-从 ASM.JS 到 WebAssembly

在2015.06.17, JavaScrpt之父Brendan Eich宣布了新项目WebAssembly:将新的底层原语带入web中。

0
1
发表了博客
2018/11/11 22:24

webassembly

为什么需要 WebAssembly 自从 JavaScript 诞生起到现在已经变成最流行的编程语言,这背后正是 Web 的发展所推动的。Web 应用变得更多更复杂,但这也渐渐暴露出了 JavaScript 的问题: 语法太灵活导致开发大型 Web 项目困难; 性能不能满足一些场景的需要。 针对以上两点缺陷,近年来出现了一些 JS 的代替语言,例如: 微...

0
0
发表于云计算专区
05/17 22:09

WebAssembly

WebAssembly From Wikipedia, the free encyclopedia Jump to navigationJump to search WebAssembly Paradigm Imperative, structured, expression-oriented Designed by W3C Developer W3C Mozilla Microsoft G......

0
0
发表于大前端专区
04/19 17:00

WebAssembly 周报

导读:周报划分为4个部分: WebAssembly Examples,介绍 WebAssembly 实现的实例; WebAssembly in the browser,介绍 WebAssembly 在web 浏览器的实现; WebAssembly beyond browser,介绍 WebAssembly 在后端的实现; W......

0
0
发表了博客
2016/08/10 14:37

Webassembly

Web前端中的字节码,真的要来了。绝对好消息,我以为这个是Web大事情。

0
1
发表于大前端专区
2019/12/13 10:05

WebAssembly 简介

WebAssembly 简介 原文链接 WebAssembly(缩写WASM)是一种安全,便携,低级代码设计用于高效执行和紧凑表示的格式。 它的主要目标是使Web上的高性能应用,不需要针对网络的特定假设或提供特定的定制化的网络功能...

0
0
发表了博客
2018/10/31 10:36

初探WebAssembly

1.前言 参加完2018年上海的QCon大会,想到了会议中来自Microsoft的朱力旻大佬讲的WebAssembly,感触颇深。 我之前完全没有了解过WebAssembly,之前没有了解的原因也很简单,没有什么实际的应用场景,但工欲善其事,必先利其器。 抱着这样的想法,便开始入坑WebAssembly。 2.Why WebAssembly 2.1 javascript的背景 JavaSc...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表于大前端专区
03/28 10:48

yikm.net 在线fc,街机,这是怎么做到的?是webassembly编译的吗?

他做了小程序,网站,都可以线上直接玩,真的有点强大啊,很好奇怎么做的。

2
0
发表了问答
01/06 08:27

【一周】Python 2退休、华为EulerOS开源 | 2019年的C++、Ubuntu这十年

回顾一周社区热门资讯 第【五十五】期:20191228-20200103 点击相应标题,跳转阅读全文。 2019 年 Serverless 使用调查 由于可用于构建、管理和维护新一代数字系统的人才数量有限,加上 IoT 设备的计算约束,现在人们必须重新考虑合适的的计算平台。思科称,到 2022 年,我们将拥有 1 万亿个联网传感器,并且在 20 年内将...

1
5
发表了问答
2019/08/20 13:47

云原生生态周报 Vol. 15 | K8s 安全审计报告发布

业界要闻 1.CNCF 公布 Kubernetes 的安全审计报告 报告收集了社区对 Kubernetes、CoreDNS、Envoy、Prometheus 等项目的安全问题反馈,包含从一般弱点到关键漏洞。报告帮项目维护人员解决已识别的漏洞,并给出了一系列最佳实践。 2.技术监督委员会(TOC)投票决定将 rkt 项目归档 尽管 rkt 在 2014 年 12 月创建最初很受欢...

1
6
发表于大前端专区
2019/01/02 17:31

Ubuntu搭建WebAssembly emscripten工具链出现问题Error parsing lkgr.json!错误

./emsdk update执行这条命令后出现这个问题

1
0
发表于服务端专区
2018/12/13 10:18

在前端开发中:WebAssembly这个对象在JavaScript中,能够被PC端和安卓端的浏览器识别,但是在IOS端的Safari不识别这个对象

在前端开发中:WebAssembly这个对象在JavaScript中,能够被PC端和安卓端的浏览器识别,但是在IOS端的Safari不识别这个对象,在IOS中使用: 请问一下在IOS端的浏览器该怎么设置,才能保证识别得了这个WebAssembly对象? try { ..... WebAssembly; //此处没有语法错误, ...... alert(9999); } catch { alert(8888); } //I...

1
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
4 评论
69 收藏
分享
返回顶部
顶部