Categories
程式開發

跨越嵌入式到云端的新型容器:WebAssembly Micro Runtime


2019年11月,Mozilla、英特尔、RedHat和Fastly公司宣布成立字节码联盟(Bytecode Alliance),英特尔的WebAssembly Micro Runtime(WAMR)和Mozilla主导的WASMTIME成为转入字节码联盟的第一批核心开源项目。字节码联盟的目标是基于WebAssembly和WebAssembly System Interface(WASI)等标准创建一个安全、高效和模块化的新运行引擎(Runtime)环境和语言工具链,同时推广让尽可能多的平台和设备使用它们。

字节码联盟自诞生起就得到了业界大量关注。本专题将围绕字节码联盟的WAMR开源项目展开,通过一系列文章依次介绍WAMR项目的背景、使命、技术特点、最新应用场景、使用技巧、技术内幕以及社区发展等各方面情况,借此帮助更多开发者了解WebAssembly(简称WASM)技术在浏览器之外的应用潜力,并在自己的领域用上这项技术。本文作为专题的第一篇文章,将对WAMR进行概要性的介绍。

为什么要在浏览器之外使用WebAssembly?

很多人心中可能有一个疑问:我把C/C++或者Rust程序直接编译成目标机器码就可以了,为什么还要用WebAssembly?这里首先要介绍WebAssembly的沙箱功能。当程序编译成WASM模块,再加载到运行引擎中时,实际上你的模块运行在其私有的沙箱中。沙箱中的程序不能访问沙箱以外的地址空间,否则将被运行引擎终止并返回异常,同时WASM程序调用API来访问系统资源时也会受到运行引擎的监管。这样的沙箱功能可以在许多场景下提供传统的原生编译程序无法支持的功能。

原文链接:【https://www.infoq.cn/article/PjjSD5W6XzT5X6Fw1ZRc】。未经作者许可,禁止转载。