WebAssembly 简要介绍

AI 摘要: WebAssembly(Wasm)是一种基于堆栈的虚拟机的二进制指令格式,可编译C/C++/Rust等高级语言,用于在Web上部署高性能客户端和服务器应用程序。Wasm带来了速度、可移植性和灵活性等特性,通过堆栈计算机、二进制格式编码和沙盒环境等实现安全性。

概述

WebAssembly(缩写为Wasm)是基于堆栈的虚拟机的二进制指令格式。

Wasm被设计为可编程C/C++/Rust等高级语言的可移植目标,可在Web上部署客户端和服务器应用程序。

背景

考虑下您需要在浏览器之外使用软件的情况:视频游戏,视频编辑,3D渲染或音乐制作。这些应用程序进行了大量计算,并且需要高性能。这种表现很难从JavaScript中获得。

JavaScript最初是一种简单的脚本语言,旨在为Web充满轻量级超文本文档带来一些交互性。它的设计易于学习和编写,但它的设计并不快。

随着速度的加快,您可以在浏览器中执行的操作列表开始扩展。新的API带来了诸如交互式图形,视频流,离线浏览等等。反过来,越来越多的以前只有原生的应用程序开始上网。今天,您可以轻松地编辑文档并从浏览器发送电子邮件,但有些领域的JavaScript性能仍然很难。

介绍

WebAssembly 是一种新的字节码格式,主流浏览器都已经支持 WebAssembly。 和 JS 需要解释执行不同的是,WebAssembly字节码和底层机器码很相似可快速装载运行,因此性能相对于 JS 解释执行大大提升。 也就是说 WebAssembly 并不是一门编程语言,而是一份字节码标准,需要用高级编程语言编译出字节码放到 WebAssembly 虚拟机中才能运行, 浏览器厂商需要做的就是根据 WebAssembly 规范实现虚拟机。

WASM带来了什么

  • 速度:
    • 二进制文件比文本JavaScript文件小得多。由于它们的大小,它们下载速度更快,这在慢速网络上尤为重要。
    • WASM二进制文件的执行时间比执行相同的本机代码慢20%。
  • 可移植性
  • 灵活性

特性

  1. 高效快捷:堆栈计算机、二进制格式编码
  2. 安全:沙盒环境或js虚拟机、嵌入式环境
  3. 可调试
  4. 开发网络平台成员:WebAssembly模块将能够通过JavaScript访问的相同Web API调用和调出

参考