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

2019年12月07日

大家都知道,万维网联盟 W3C 认证的 Web 语言有 HTML、CSS 与 JavaScript,而近日联盟正式宣布 WebAssembly 核心规范(WebAssembly Core Specification)成为官方 Web 标准,这意味着 WebAssembly 成为了第 4 种 Web 语言

WebAssembly 也叫 WASM,它是为基于栈的虚拟机设计的二进制指令格式,WASM 作为可移植目标,用于编译高级语言(如 C/C++/Rust),从而可以在 Web 上部署高性能客户端和服务器应用,同时它也可以在许多其它环境中使用。

WebAssembly 描述了一种内存安全的沙箱执行环境,该环境甚至可以在现有 JavaScript 虚拟机内部实现。当嵌入到 Web 中时,WebAssembly 将强制执行浏览器的同源和权限安全策略。

WASM 有多种实现,包括浏览器和独立系统,它可以用于视频和音频编解码器、图形和 3D、多媒体和游戏、密码计算或便携式语言实现等应用。目前 1.0 版本的 Wasm 已经支持 Chrome、Firefox、Safari 与 Edge 浏览器。

对于 Web 来说,因为其虚拟指令集设计,WebAssembly 可让加载的页面以本地编译代码运行,从而可以提高 Web 性能。换句话说,WebAssembly 可以实现接近本地的性能,并且优化加载时间,同时最重要的是,它可以作为现有代码库的编译目标。

尽管本地类型数量很少,但相对于 JavaScript 而言,性能的提高大部分归功于其对一致类型的使用。WebAssembly 对编译语言进行了数十年的优化,其字节代码针对紧凑性和流传输进行了优化。在下载其它代码时,网页便可以开始执行。网络和 API 访问通过附带的 JavaScript 库进行,安全模型则与 JavaScript 相同。

W3C 同时公布了 WASM 接下来的开发重点,新特性包括:

  • Threading,线程:Threading 提供了共享内存多线程和原子内存访问的优势。
  • Fixed-width SIMD,固定宽度 SIMD:并行执行循环的向量操作。
  • Reference types 引用类型:允许 WebAssembly 代码直接引用宿主对象。
  • Tail calls,尾调用:直接调用而不使用额外的堆栈空间。
  • ECMAScript module integration,ECMAScript 模块集成:通过将 WebAssembly 可执行文件加载为 ES6 模块来与 JavaScript 进行交互。

此外还有一些一直在跟进的特性,包括垃圾回收、调试接口与 WebAssembly 系统接口(WASI)等。

值得一提的是,上个月 Mozilla、Fastly、Intel 与 Red Hat 宣布成立联合组织 Bytecode Alliance(字节码联盟),该联盟旨在通过协作实施标准和提出新标准,以完善 WebAssembly 在浏览器之外的生态。

展开阅读全文
65 收藏
分享
加载中
精彩评论
这是技术,不是语言
2019-12-07 09:21
30
举报
WASM恐怕要成为灰产的最爱,用它挖矿可比js强多了。
2019-12-07 10:43
19
举报
前端加密的反爬又有了新的战场
2019-12-07 15:34
11
举报
在PHP中调用wasm里的函数:
https://pecl.php.net/package/wasm
https://github.com/wasmerio/php-ext-wasm
<?php
$instance = new Wasm\Instance(__DIR__ . '/simple.wasm');
var_dump($instance->sum(5, 37));

使用Emscripten的emconfigure和emmake把PHP解释器的C代码编译成wasm格式在浏览器中直接运行PHP代码:
https://segmentfault.com/a/1190000015095396
https://oraoto.github.io/pib/
https://oraoto.github.io/pib/php.wasm (大小约为6MB)
2019-12-07 14:47
11
举报
只想默默跑个ffmpeg
2019-12-07 10:47
7
举报
最新评论 (66)
Qt现在可以把C++开发的桌面应用编译成WASM,在浏览器里运行,感兴趣可以找Qt Examples for WebAssembly运行一下。
2019-12-16 12:11
0
回复
举报
据说rust今年要往这个方向发展
2019-12-16 10:22
0
回复
举报
rust如果主力往这个方向跑,那就太让人失望了。
2019-12-17 13:22
0
回复
举报
浏览器起家的,必然.
2019-12-17 15:54
0
回复
举报
原生版 java applet?
2019-12-15 19:36
0
回复
举报
wasm将成为横跨所有语言的中间格式,未来所有语言的兼容就靠它了。
2019-12-13 14:58
1
回复
举报
wasm的未来是超越WEB平台
2019-12-13 15:01
2
回复
举报
是的,有个wasmer项目
2019-12-14 16:13
0
回复
举报
2019-12-13 14:19
1
回复
举报
感觉,有点究极加强版applet的意思
2019-12-13 09:51
2
回复
举报
怎么是首次听说? 就能进top4?
2019-12-12 19:59
0
回复
举报
都没声音很久了
2019-12-12 09:19
0
回复
举报
不是语言 也不可能取代js 至少目前是 和js是互补的关系 wasm是一个内存虚拟机
2019-12-12 08:52
0
回复
举报
技术方向总是被美国主导着,其他国家没有出头之日
2019-12-11 18:13
0
回复
举报
更多评论
67 评论
65 收藏
分享
返回顶部
顶部