WebAssembly 正式成为 Web 的第四种语言[每日前端夜话0xF9]

webassembly 黑白 logo

万维网联盟(W3C)2019年12月5日宣布,WebAssembly 核心规范 【https://www.w3.org/TR/wasm-core-1/】现在是一种正式的 Web 标准,它为 Web 发布了一种功能强大的新语言。WebAssembly 是一种安全、可移植的低级格式,能够在现代处理器(包括 Web 浏览器)中高效执行并紧凑地表示代码。

 “WebAssembly 的到来扩展了仅仅用开放的 Web 平台技术就可以实现的应用程序的范围。在当今机器学习和人工智能越来越普遍的世界中,重要的是在不损害用户安全性的情况下在 Web 上运行高性能程序。” ——W3C 项目负责人 Philippe LeHégaret 。

依赖低层基础架构的高性能应用程序


WebAssembly 的核心是一种虚拟指令集体系结构,可在 Web 上运行高性能应用程序,并可在其他许多环境中使用。WebAssembly 的实现有多种,包括浏览器和独立系统。WebAssembly 可用于视频和音频编解码器,图形和 3D,多媒体和游戏,密码计算或便携式语言实现等领域。

WebAssembly 增强 Web 性能


WebAssembly 是虚拟机和执行环境,可以让加载的页面作为本机编译代码运行,从而提高了 Web 性能和功耗。换句话说,WebAssembly 可以实现接近本机的性能以及优化的加载时间,并且最重要的是可以为现有的代码库提供编译目标。

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

未来版本已经在开发中


负责收集需求和开发语言的 WebAssembly Working Group 【https://www.w3.org/wasm/】和 Community Group 【https://www.w3.org/community/webassembly/】已经为该标准的未来版本开发了一系列功能,其中包括:

  • 线程

线程提供了共享内存多线程和原子内存访问的诸多好处。

  • Fixed-width SIMD

并行执行循环中的向量操作。

  • 引用类型

允许 WebAssembly 代码直接引用宿主对象。

  • 尾调用

能够使用额外的栈空间去调用函数。

  • ECMAScript 模块集成

通过将 WebAssembly 可执行文件加载为 ES6 模块来与 JavaScript 进行交互。

还有许多其他的长期项目【https://github.com/WebAssembly/design/blob/master/FutureFeatures.md】,其中包括一些提高 WebAssembly 可用性的项目。例如垃圾收集、调试接口和 WebAssembly 系统接口(WASI),这是用于底层系统功能(如文件和网络访问)的一组模块。

WebAssembly 加入了许多 W3C 标准,这些标准定义了用于应用开发的开放 Web 平台,使开发人员能够构建可在任何设备上使用的强大交互体验,并且潜力巨大。

关于万维网联盟

万维网联盟(W3C)的使命是通过创建技术标准和准则来确保 Web 对全世界保持开放、可访问和可互操作的能力,从而发挥 Web 的全部潜力。HTML 和 CSS 这种构建网站的基础技术就是 W3C 众所周知的标准。W3C 致力于确保所有基础 Web 技术在可访问性、国际化、安全性和隐私性等领域满足社会的需求。W3C 还为利用 Web 的现代企业提供基础设施的标准,如娱乐、通信、数字出版和金融服务等领域。这项工作是根据公开的 W3C 专利政策免费公开提供的。由于 W3C 使在线视频更容易使用字幕和提示而获得了 2016 年度的艾美奖。由于其在 Web 上标准化全电视体验的工作,W3C 获得了 2019 年度的艾美奖。

W3C 对 "One Web" 的愿景汇集了代表400多家会员组织和【https://www.w3.org/Consortium/Member/List】几十个行业部门的数千名专业技术人员。W3C 由美国MIT计算机科学和人工智能实验室(MIT CSAIL),总部位于法国的欧洲信息学和数学研究联盟(ERCIM),日本的 Keio 大学和中国的北京航空航天大学等共同主持。有关更多信息,请参见 https://www.w3.org/。


来自W3C会员的推荐

360


 "WebAssembly 规范的推出,进一步拓展了 Web 技术的应用 场景,让以往无法想象的应用成为可能,也为开发社区提供了更多选择, 为提升用户体验提供了技术保障。WebAssembly 标准的正式发布,让 Web 技术社区不再满足于浅尝辄止的保守应用,终于可以大胆地将其作为一个 正式的选型方案,这也势必会大力推进相应行业场景的发展。期待在 WebAssembly 标准化的推进过程中看到更多的 WASM 应用大放异彩。" 胡尊杰,360 奇舞团 Web 前端技术经理

阿里巴巴集团


 “阿里巴巴很高兴看到 WebAssembly 最终成为 W3C 建议书。我们希望这一新标准可以引发开发者社区的更多创新,并丰富 Web 的功能和体验。” 阿里巴巴集团 W3C 顾问委员会成员,标准化部总经理 朱宏如(Judy)

Agora.io


 “WebAssembly 使得在 Web 上提供强大的计算功能成为可能。它将极大地扩展 Web Apps 的应用场景,并迅速增加使用Web技术开发包括实时视频/音频处理,硬核游戏和 AI 在内的计算密集型应用的机会。作为RTC服务提供商,Agora 致力于提供具有更好实时性能的服务,我们已经发布了基于 WebAssembly 的产品,可以增强视频流处理的性能和兼容性,我们认为 WebAssembly 将是供 Web开发人员实施高性能Web Apps 的最重要的选择。”Chun Gao,Agora 高级架构师

百度


  " 热烈祝贺 WebAssembly 标准正式发布!百度一直是 W3C 的坚定支持者和参与者、贡献者和先行者,在 WebAssembly 的 runtime 平台技术、小程序小游戏和区块链技术等各个方面都有不错的应 用。随着标准的发布,我们将继续联合产业同仁一起打造开放、平等、协 作、分享的 Web 新生态。也期待 WebAssembly 标准能为 Web 新生态的繁 荣注入全新动力!" 吴萍,百度 App 主任架构师

华为


 “祝贺 WebAssembly 的这一新里程碑。我们认为这是一项非常有前途的技术——它提高了 Web 的性能,并且充当了 Web 和非 Web 平台之间的桥梁。我们期待在实践中更多地采用 WebAssembly。” 于志强,华为 W3C 咨询委员会代表

腾讯


  " Web 的能力越来越强,承载的业务越来越复杂,需要的 计算能力也越来越高。随着 WebAssembly 技术飞速发展,我们终于迎来了 WebAssembly 标准的正式发布。2008 年我们迎来了 Web 性能的第一次飞 跃 JIT 技术,如今 WebAssembly 将再一次大幅提升 Web 性能。我们得以 将更多桌面端的软件高效地移植到 Web,同时也可以在 Web 中使用 C/C++、Rust、Go 来优化需要大量计算的模块。WebAssembly 技术日益成 熟,将促进更多的应用从桌面延伸到 Web,这将赋予本就十分强大的 Web 更加丰富的功能!"  于涛,腾讯技术总监,Alloyteam 负责人

小米


    " WebAssembly 的标准化为 Web 技术的发展奠定了坚实 的基础,极大地扩展了 Web 应用的边界,解决了传统应用的可移植性问题, 提升了 Web 应用性能。作为 W3C 会员,小米将继续支持和探索 WebAssembly 标准的落地应用,包括在浏览器、小游戏等重要场景支持 WebAssembly 。未来小米将持续在业务场景中进一步支持 WebAssembly 的 标准化发展。"    周珏嘉,小米集团技术委员会技术总监

来源:https://www.w3.org/2019/12/pre***elease-wasm-rec.html.en

更多相关文章

  1. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(07) 范式与反模
  2. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(06) 数据库安全
  3. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(05) 索引的排序
  4. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(04) 索引使用的
  5. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(03) 如何设计索
  6. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(01)数据类型的
  7. 服务端开发指南与最佳实战 | 数据存储技术 | MySQL(02) 存储引擎的
  8. 实时数仓|架构设计与技术选型
  9. 不同类型业务系统技术架构的差异化

随机推荐

  1. 如何在另一个类中使用静态类中的变量?
  2. JSP中--->中文乱码问题
  3. 在Java中修剪可能的字符串前缀
  4. java7 switch语句使用字符串
  5. 如何在Spring中读取具有相同键的多个属性
  6. java中的异常处理
  7. java中两个事物,怎么设置,能让一个事物出现
  8. 基于内容估计文本宽度的算法
  9. JavaScript中的map()函数
  10. Java面试题--基础知识部分