WASI一个Mozilla项目,可在浏览器外部使用WebAssembly

WASI一个Mozilla项目,可在浏览器外部使用WebAssembly

Mozilla开发人员介绍了WASI项目 (WebAssembly系统界面),它正在定义软件界面,可用于组织以WebAssembly格式交付的应用程序与操作系统的交互。

该项目的目标是提供一个API,以扩展WebAssembly的使用并允许您创建程序 基于常规 在浏览器之外运行的这项技术中它们可移植到任何平台,并具有高度的安全性。

什么是WASI?

WASI允许WebAssembly环境访问操作系统提供的功能例如文件,文件系统,网络套接字,计时器和随机数生成器。

WASI API最初是作为非浏览器绑定和独立开发的 来自JavaScript / Web API,但是 同时提供足够水平的系统隔离 main(应用程序在沙盒中运行),并允许您以CloudABI和Capsicum的样式显式定义授予应用程序的权限。

瓦西 使用基于权限管理的安全模型,程序只能在其中故意执行授权的操作。

与WebAssembly在导入功能级别限制访问的方式类似,WASI控制对系统功能的访问。

文件,目录,套接字和其他资源与特殊类型的文件描述符(容量)相关联,并且应用程序必须具有对每个资源执行操作的权限。

权限是分层管理的,即,将自动打开对目录的访问,并自动访问目录中包含的所有文件。

考虑到 WebAssembly是与平台无关的汇编语言版本,使用JIT可以达到接近本机代码的性能水平,同时保持在各种硬件平台和操作系统上运行的能力。

当前,该项目为wasi-core模块提供了基本POSIX API(文件,套接字等)的实现,而该POSIX API当前不支持锁和异步I / O。

将来, 计划使用API​​实现创建模块以执行加密操作,使用3D图形,与传感器交互,对流程进行操作(尚不支持fork调用)以及处理多媒体数据。

组件原型

Wasmtime是一个运行时,负责运行基于WebAssembly的应用程序 WASI扩展作为普通的独立应用程序。

Se 通过特殊的命令行实用程序支持启动WebAssembly字节码 以及现成的可执行文件的设计(wasmtime作为库内置在应用程序中)。

为了达到适当的性能水平,使用了基于海拔代码生成器的JIT编译器。

Lucet是Fastly项目的另一个运行时版本 (该代码计划于今天或明天发布)。

软件开发工具包-使用Clang 8.0以Web汇编格式编译C / C ++应用程序的工具。

WASI支持Rust语言的程序集目标,允许您将Rust代码编译为WebAssembly。

Wasi-sysroot是WASI标准libc库的实现,基于Musl代码的运行时层,以及将库提供的功能转换为各种操作系统的系统调用的运行时层,以实现在不同操作系统上运行WASI应用程序的可能性。

该项目还在开发带有WASI实现的polyfill JavaScript库,以在浏览器中运行应用程序。,该功能允许将“功能”访问控制模型应用于浏览器中执行的代码。

在这些计划中,提到了创建基于WASI的模块系统以集成到具有WebAssembly格式提供的附加功能的隔离插件应用程序中。

WebAssembly的主要任务之一是确保在不同平台上的可移植性,行为的可预测性以及代码执行的身份。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。