从 ASM.JS 到 WebAssembly

oschina
 oschina
发布于 2015年06月19日
收藏 31

JS 成为 Web 的 WebAssembly,这已经是老生常谈的话题。不过,JS 是一种很便携的语法,并且是很安全的机器语言。今天,我很高兴地宣布,在 WebAssembly 上可以进行跨浏览器的工作。

WebAssembly 是什么

WebAssembly, 缩写为“wasm”,.wasm 为文件名后缀,是一种新的用于低端安全代码的二进制语法。它最初与 asm.js 合作,不过从长远来看,为了更好地向多源编程语言的通用目标等级格式提供服务,WebAssembly会从 JS 的语义中分离。

为通过 JS 支持 wasm 的 polyfilling,wasm 和 asm 保持体面的间隔是至关重要的。甚至是 JS 和 asm.js 共享内存线程和 SIMD 支持也是相当重要的。可能长期发散的例子:零成本异常,动态链接,call/cc。是的,我们的目标是开发 Web 多编程语言目标文件格式。

为什么asm.js 是很不错的,但是引擎一旦为它优化,解析器就会成为一个热锅 —— 会让移动设备变得很烫。传输压缩是必要的,而且能节省带宽,但是要在解析之前解压。第二个考虑因素:JS 存在一些尴尬的角落,甚至是在 asm.js 集合中。最后,一旦浏览器支持本地 WebAssembly 语法,JS 和 wasm 就会分离,不会因为编译器使用了一些完全不同的编程语言就会引入一些不安全或者不合适的特性到 JS 中。

请查看 FAQ 获取更多的细节信息。不,JS 在可见的未来里是不会消失的。是的,wasm 可以不用侍奉两个主人来缓解 JS。这是一个双赢的计划。

怎么样:如果你使用 Emscripten,然后 wasm 会通过一个命令行标志首先支持原型 polyfill。但是作为本地 wasm 解码器出现在引擎顶部(请查看 V8 本地原型解码器),Emscripten 将会自动配置以获得最佳的效果。另一个原型:一个 JS AST 压缩器(编码器)。

是谁: 一个 W3C 社区团体,WebAssembly CG 对所有人开放。正如你在 github 日志上看到的,WebAssembly 是 Google、Microsoft、Mozilla 和其他几个公司共同努力的结果。我很抱歉,这项工作在一开始是通过私有库完成的,但是,这只是临时措施,用来使这几家公司达成共识,从而能让这些公司有更 长远的合作。

你可以看到,Google PNaCl 团队的 JF Bastien 只能勉强守住秘密。

来 自 Google PNaCl 团队和 V8 团队的人,来自 Microsoft 的核心人员,以及来自 Mozilla 的 asm.js 和 Emscripten 的大师,这些人紧密地合作,直到每个人都看到了曙光,这真是一件振奋人心的事情。我在这里尤其要感谢 Google 的 JF BastienK. Gadd 和 Ben Titzer;Mozilla 的 Dan Gohman;来自 Microsoft 的 Abhijith Chatra 和 Michael Holman;asm.js 和 Emscripten 的 Alon Zakai;做 JavaScriptCore/WebKit 的 Filip Pizlo;尤其是 asm.js/OdinMonkey 的策划 Luke Wagner

Via :Brendan Eich's Blog

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:从 ASM.JS 到 WebAssembly
加载中

精彩评论

alema
alema
早就该这样了 至到 2015.6才这么做,真是疯狂自私的世界 ,期望接下来快些搞定,到时的场景 我猜就是这样,写好程序 用各种喜欢 的优秀语言,编辑成 wasm, 很小,然后随着html 和资源一起 下载到客户端 在浏览器上运行,这爽多了,到时候 只会Js的人 就 得落后 了,呵呵 现在那些前端 的 垃圾框架 ,垃圾的一切 也将被大面积 清洗

最新评论(29

alema
alema
早就该这样了 至到 2015.6才这么做,真是疯狂自私的世界 ,期望接下来快些搞定,到时的场景 我猜就是这样,写好程序 用各种喜欢 的优秀语言,编辑成 wasm, 很小,然后随着html 和资源一起 下载到客户端 在浏览器上运行,这爽多了,到时候 只会Js的人 就 得落后 了,呵呵 现在那些前端 的 垃圾框架 ,垃圾的一切 也将被大面积 清洗
alema
alema
js这让人生气的 垃圾语言终于要被取代 了,坐等 使用C#写web的日子快些到来吧
fy0
fy0
我也是真替4楼着急,webasm一出,这明显是其他各种语言都有办法在浏览器中运行了好吗?JS的生存空间明显小了。
关js能做native什么事情啊?又不是说js编译成exe了。跟native一点关系都没有。
__JM_Joy__
__JM_Joy__
我还以为是汇编呢。。。
jQer
jQer
动动脑筋想想为什么用node.js编程,而不用libevent编程,你就知道什么是编程了
jQer
jQer
还 java c# c++, 说这些话的都是些逗比么,完全不懂什么是编程好吗!!! C - C++ ,擅长操作物理单元和信息流程,但是极不擅长数据表示,你认为为什么数据分析用R语言不用CC++? 至于C# JAVA那种给小孩玩的半调子,我都不待说,哪边都沾,哪边都弱。WebAssembly明显是为Asm.js编写低消耗,像3D游戏,图形渲染的,特别是物理上的。你还指望他能表达数据???
人头马没面
人头马没面
晕 竟然没人吐槽翻译
jinhaoxia
jinhaoxia
发明js的人,当时不知道有么想到js现在会被玩成这样

js我觉得最屌的有两个地方,一个是类的定义和函数定义联在一起
再一个就是那个闭包和它的作用域
返回顶部
顶部