WebAssembly 作为一项新兴的技术,已经发展至 2.0 版本;相较于 1.0 版本,2.0 版本增加了更全面的指令支持和对大容量内存的友好性;同时,向量指令的加入也提高了 WebAssembly 在复杂场景下的性能表现。目前,WebAssembly 已经广泛应用于各种 Web 和非 Web 场景,例如 Web 端的视频渲染、编解码、算法移植,以及非 Web 端的 Serverless、客户端跨平台等领域。 除了广泛的应用场景,WebAssembly 还具有跨平台、高效、安全的优点。它可以在各种计算机架构上运行,并且具有接近原生代码的性能。此外,WebAssembly 的代码可以在沙箱中运行,不会影响主机环境的稳定性和安全性,从而有助于保护用户数据和隐私。 随着 WebAssembly 技术的不断进步,未来还有许多值得期待的方向。例如 WebAssembly 的多线程支持、AI 模型的推理和训练,以及在区块链领域的智能合约编写和执行。这些发展方向有助于进一步提高 WebAssembly 的性能和功能,从而推动 Web 上更多应用场景的发展。
WebAssembly(也称为 Wasm)以其可嵌入和隔离的执行环境而成为一种流行的便携式二进制指令格式,用于客户端和服务器应用程序。将 WebAssembly 视为一种小型、快速、高效且非常安全的基于堆栈的虚拟机,专门用于执行可移植的字节码,不在乎它运行在哪个 CPU 或操作系统上。WebAssembly 最初是为 Web 浏览器设计的,用于成为函数的轻量级、快速、安全和多语言容器,但它不再仅限于 Web。 在 Web 上,WebAssembly 使用浏览器提供的现有 API。WebAssembly 系统接口(WASI)的创建填补了 WebAssembly 和运行在浏览器外部的系统之间的空白。这使非浏览器系统能够利用 WebAssembly 的可移植性,使 WASI 成为在分发时具有可移植性和在运行负载时具有隔离性的良好选择。
在前面章节中,我们已经对 WebAssembly 的关键特性、历史演变和核心的应用场景做了详细的介绍;基于 对 WebAssembly 的入门和初步了解,在第二部分的各个章节中,我们会从 WebAssembly 模块入手,和大家一起学习 WebAssembly 基础知识,包括核心规范,核心开发语言和工具链以及常用的执行引擎等相关内容。 本文将从 WebAssembly 模块入手介绍相关基础概念和 W3C 二进制格式核心规范,与此同时,进一步介绍 WebAssembly 的文本格式及语法,并给出一个 WebAssembly 文本 demo;以便读者可以与本文格式的介绍相互印证,进一步加深理解。
WebAssembly 是 W3C 标准化组织制定的一个可移植、体积小、加载快并且兼容 Web 的全新格式。利用 WebAssembly 技术可以方便地将非 JavaScript 代码快速地“运行”在浏览器中,从而为前端场景提供了无限可能;此外,随着 WebAssembly 在开发者社区中越来越流行,也正在成为服务端以及云计算平台上的新锐。 作为本课程的开篇,本文首先介绍 WebAssembly 的发展历程,正所谓 "以史为镜,可以知兴替",从其历史演变中我们可以深入了解 WebAssembly 技术的来龙去脉,以及它的核心诉求和价值;接下来,我们会梳理和总结 WebAssembly 的使命和优势;最后,我们通过一个简单的 WebAssembly 浏览器应用示例,带领读者一起身临其境地感受下 WebAssembly 在 Web 环境中的真实使用体验。