Mozilla,Fastly,Intel和Red Hat联手完成了 发展 使得 WebAssembly 通用平台 在任何基础架构上安全运行代码,操作系统和设备。 为了联合开发运行时和编译器,不仅允许在Web浏览器中使用WebAssembly,还形成了Bytecode Alliance社区。
创建可移植程序 以WebAssembly格式交付 可以在浏览器外部运行,建议使用WASI API (WebAssembly系统接口),它提供用于与操作系统直接交互的程序接口(用于处理文件,套接字等的POSIX API)。
特色 WAS的应用程序的执行模型我正在沙盒环境中启动 为了与主系统隔离并使用基于容量管理的安全机制,对于使用每个资源(文件,目录,套接字,系统调用等)的操作,应用程序必须具有相应的授权(仅提供访问权限)声明的功能)。
一 联盟目标的实现 被创造 解决具有很多依赖关系的现代模块化应用程序的扩散问题。 在此类应用程序中,每个依赖项都可能是漏洞或攻击的潜在来源。 获得依赖性控制使您可以控制与之关联的所有应用程序。
字节码联盟成员打算准备一个完整的解决方案 用于安全执行最初不受信任的WebAssembly应用程序。
为了保护, 建议使用纳米工艺的概念s,其中每个依赖项模块都分开 在单独的隔离WebAssembly模块中,其权限配置为仅绑定到此模块(例如,用于处理字符串的库无法打开网络套接字或文件)。
与流程分离不同, WebAssembly处理程序是轻量级的,几乎不需要其他资源 此外,处理程序之间的交互不会比调用普通函数慢很多。
为了进行联合开发,先前由该联盟的创始公司分别开发的几个与WebAssembly相关的项目已在Bytecode联盟的领导下进行了转移:
- 消遣时间:A 运行带有WASI扩展的WebAssembly应用程序的运行时 作为常规的独立应用。 它支持使用特殊的命令行实用程序启动WebAssembly字节码,并设计开箱即用的可执行文件(wasmtime作为库内置在应用程序中)。
- 幸运儿: 是 编译器和运行时以WebAssembly格式运行程序。 Lucet的一个独特功能是在适用于直接执行而不是JIT的机器代码上使用完整的预防性编译(AOT,预先)。 该项目由Fastly开发,并进行了优化以消耗最少的资源并快速启动新实例,作为联合项目的一部分,计划将Lucet编译器更改为以Wasmtime为基础。
- WAMR(WebAssembly微型运行时): es 另一个运行WebAssembly的运行时, 最初由英特尔开发,用于物联网设备。 WAMR 它针对最小的资源消耗进行了优化,可以在具有少量RAM的设备上使用。 该项目包括运行WebAssembly字节码的解释器和虚拟机,API(Libc的子集)以及动态管理应用程序的工具。
- 吊车:es 代码生成器,可将独立于硬件的中间表示形式转换为机器代码 针对特定硬件平台优化的可执行文件。 Cranelift支持函数编译并行化,以非常快速地生成输出,使您可以使用它来创建JIT编译器(在Wasmtime虚拟机中使用基于Cranelift的JIT)。
- WASI: 一 WASI API的独立实现 (Web组装系统界面)来组织与操作系统的交互。
- 货船: un 货物包装经理模块 它实现了一个命令,该命令使用WASI接口将Rust代码编译为WebAssembly字节码,以在浏览器外部使用WebAssembly。
- wat和wasmparser: 是 解析器来分析文本 (WAT,WAST)和WebAssembly字节码的二进制表示形式。
“与流程分离不同,WebAssembly处理程序是轻量级的,几乎不需要其他资源”。
在Mozilla和Red Hat混合使用的情况下,对“轻量级,几乎不需要额外资源”的观察将是一个了不起的笑话xD