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. 權利:您可以隨時限制,恢復和刪除您的信息。