带有WebAssembly支持的Firefox 52发布


带有WebAssembly支持的Firefox 52中的Zen Garden演示的3D渲染

Mozilla发布了Firefox 52 ,这是支持Windows XP操作系统的最新浏览器。 进行了许多重要的更改 :简化了热点的连接,您必须首先登录浏览器,如果页面要求输入不安全连接(非HTTPS)的密码,并且不再支持NPAPI插件(Flash除外,并且在ESR构建中将保留全部支持),则会出现危险警告。消除了28个漏洞

但是,没有什么可以与主要创新和基础创新相提并论了- 对低级编程语言WebAssembly (wasm)的支持,例如汇编器,它被称为过去十年中Web平台最重要的创新之一。 这就是缺少的JavaScript。

网络组装



开发人员解释了为什么需要创建WebAssembly的原因 。 事实是,JavaScript最初被认为是用于简单脚本的轻量级语言。 没有人想到它会发展成什么以及如何开始应用。 它是为编程的初学者发明的-用于简单的事情,例如在网页上编写表单。

从那时起,情况发生了很大变化。 现代Web应用程序是具有客户端和服务器代码的复杂计算机程序,其中大多数是用JavaScript编写的。 尽管JavaScript本身的开发取得了进步,并且开发人员为创建可快速执行JavaScript的有效引擎而进行了所有尝试,但没有任何收获,实际上在物理上是不可能的。 JavaScript具有固有的局限性。 浏览器根本无法执行至少与操作系统中的本机代码一样快的代码。

Mozilla是第一个成熟的技术,它是在可以运行低级代码的浏览器中开发一种虚拟机之前开发的-几年前发布了asm.js作为演示(Google尝试了Native Client API )。 asm.js子语言非常出色,以至于变得清晰起来:我们需要与所有最大的开发公司合作,共同开展一项联合项目,以推动网络向前发展。

低级语言WebAssembly可以与JavaScript结合使用,并允许Web应用程序以更高的性能运行-几乎就像操作系统中的本机应用程序一样。

现在,在浏览器中,您可以运行高性能3D游戏,计算机辅助设计(CAD)系统,视频编辑器,图形编辑器,科学可视化,资源密集型计算,视频编码-一切。

随着时间的流逝,许多现有的Web应用程序(邮件,社交网络,文本编辑器)和JavaScript框架更有可能开始使用WebAssembly,这将大大提高下载速度并在工作时大大提高其性能。

与Flash之类的其他方法不同,Flash需要在浏览器中安装插件才能以与本机应用程序相当的速度运行应用程序,而WebAssembly完全适合标准Web平台。 它是集成到浏览器中的开放且兼容的标准。 这意味着开发人员可以将用于CPU密集型计算(压缩,面部检测,物理)的WebAssembly库直接集成到使用JavaScript的现有Web应用程序中。

WebAssembly是由Mozilla,Google,Microsoft和Apple开发的开放标准。 如您所见,该组代表四种最常见浏览器的开发人员,因此您可以指望将wasm作为通用标准。 谷歌承诺将在下一个版本的Chrome(57)中实现对WebAssembly的支持,微软已经在Edge中进行开发。

低级语言将成为JavaScript的一种补充,最终应在JS工作的所有地方都可以使用:在所有浏览器和所有运行时环境(例如Node.js)中。

谁将从使用WebAssembly中受益? 这不仅仅是在wasm中编写新应用程序。 通过Emscripten等编译器可以将整个游戏和现成的本机应用程序移植到Web上。 使用此编译器移植的C / C ++代码将在浏览器中以与本机应用程序几乎相同的速度执行。 除C / C ++外,Rust还为WebAssembly提供初步支持。

例如,您可以播放Zen Garden演示 (需要Firefox 52浏览器,当前仅支持桌面版本)。


JavaScript函数将调用WebAssembly函数,反之亦然。 也就是说,您可以使用高级JavaScript语言编写单个程序,有时可以根据需要切换到C / C ++ / Rust。

开发人员将开始分发和重用低级WebAssembly模块,而无需了解他们的设备,因为他们现在使用缩小的JavaScript库。

Mozilla指出,通过代码重用和软件体系结构的级别,本机应用程序和Web应用程序之间的隔离墙开始崩溃,这仅仅是开始。 开发人员工具,调试器和编译器以及WebAssembly的兼容性,性能和功能将继续发展。 例如,Mozilla现在的计划是实现对SIMD多线程和并发的支持。

Mozilla平台开发经理David Bryant 说: “从某种意义上讲,WebAssembly正在改变Web开发人员的含义,因为它正在改变Web的基本属性。”

实际上,现在已经可以移植C / C ++程序以便在浏览器中执行,并且在不久的将来,可以针对编写移动应用程序的语言(Java,Swift和C#)进行相同的操作。 它们都将与标准Web平台兼容。 事实证明,从某种意义上说,所有程序员最终都将成为Web开发人员。

Source: https://habr.com/ru/post/zh-CN402173/


All Articles