WebAssembly 简介 - 陈思衡Wasm 实例 WebAssembly 简介 WASI 简介 WebAssembly System Interface (简称 WASI),它定义了一组 WASM 模块可以调用的系统调用接口。WASI 的目的是让 WASM 模块可以访问底层系统的功能,比如文件系统、网络等。这使得 WASM 可以作为一个更广泛的 运行时,不仅仅局限于浏览器环境。WASI 当前定义了一组 POSIX 兼容的系统调用 模块可以访问文件系 统。未来 WASI 还会加入更多系统接口,为 WASM 提供更广泛的系统访问能力。 WebAssembly 介绍 Photo / image / chart WASI 的本质就是一套 host 提供的 function。 与开发者自行提供的 host function 相比, WASI 在 Rust 被内置在 std 中。 WASI 实例 WASI 简介 WASM 的应用场景 的应用场景 WASM 使用场景和问题 由于 WASI ,WASM 不仅可以在浏览器中运行,其作为一种通用二进制格式,也适用于浏览器外的许多场景: 1. 物联网设备: WASM 体积小、加载快,很适合运行在物联网设备上。使用 WASM 可以让这些设备运行更复杂的逻 辑,实现设备间的互操作性。 2. 云计算: WASM 模块可以部署在云端运行,为用户提供服务。因为 WASM 是sandbox的,所以可以保证代码的安全0 码力 | 24 页 | 773.46 KB | 1 年前3
05-MoonBit 编程语言(WASM 技术)服务端应用展望以及对Kubernetes生态的影响Web 前端应用实际接受 • 有后端应用潜力,但更多具体疑问仍待解答 • 问题集中在扩展特性(features)、外部语言接口(FFI)、 操作系统界面(system interfaces 或 WASI)上 WASM 后端应用先驱 wasmCloud (CNCF-Sandbox) fermyon/spin WasmEdge (CNCF-Sandbox) • 多数特性已标准化 • 一些特性对后端应用 交换缓冲区和高级数据结构的方法各有不一 WASM 外部语言接口(FFI) • WASI (WebAssembly System Interface) • 用于允许 WASM 代码调用操作系统的能力 (stdout、socket这些) • 目前处在 0.2 预览版 • 功能缺口和争议都很大 WASM 系统接口(WASI) WASM 应用于后端的构想初步存在 但具体的挑战非常巨大 Kubernetes • 平衡代码尺寸和性能 • 按照 WASM 基础规范设计的 FFI 外部语言接口(支持对外 调用和外部回调) • 直接对接 WASM 扩展(例:wasm-gc target) • 直接对接 WASI 系统接口标准 MoonBit 作为 WASM 原生语言的作用 新语言对 WASM 后端技术栈的意义 • 封装,或者说“过顶”开发思路(OTT,over the top) • 有限使用 WASM0 码力 | 30 页 | 3.41 MB | 9 月前3
Python 标准库参考指南 3.11.10 1.1 WebAssembly platforms The WebAssembly platforms wasm32-emscripten (Emscripten) and wasm32-wasi (WASI) provide a subset of POSIX APIs. WebAssembly runtimes and browsers are sandboxed and have limited platforms depend on the Emscripten-SDK or WASI-SDK version, WASM runtimes (browser, NodeJS, wasmtime), and Python build time flags. WebAssembly, Emscripten, and WASI are evolving standards; some features like helpers on the server to proxy TCP through WebSockets; see Emscripten Networking for more information. WASI snapshot preview 1 only permits sockets from an existing file descriptor. • Some functions are stubs0 码力 | 2248 页 | 11.10 MB | 10 月前3
Python 标准库参考指南 3.11.10 1.1 WebAssembly platforms The WebAssembly platforms wasm32-emscripten (Emscripten) and wasm32-wasi (WASI) provide a subset of POSIX APIs. WebAssembly runtimes and browsers are sandboxed and have limited platforms depend on the Emscripten-SDK or WASI-SDK ver- sion, WASM runtimes (browser, NodeJS, wasmtime), and Python build time flags. WebAssembly, Emscripten, and WASI are evolving standards; some features helpers on the server to proxy TCP through WebSockets; see Emscripten Networking for more information. WASI snapshot preview 1 only permits sockets from an existing file descriptor. • Some functions are stubs0 码力 | 2399 页 | 11.19 MB | 10 月前3
Python 标准库参考指南 3.12 Reference, 发行版本 3.12.7 1.1.1 WebAssembly 平台 WebAssembly 平台 wasm32-emscripten (Emscripten) 和 wasm32-wasi (WASI) 分别提供了 POSIX API 的 一个子集。WebAssembly 运行时和浏览器都处于沙盒模式中并具有对主机和外部资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 Emscripten-SDK 或 WASI-SDK 的版本, WASM 运行时 (浏览器, NodeJS, wasmtime) 以及 Python 编译时旗标。WebAssembly, Emscripten 和 WASI 都是尚在不断演 化中的标准;某些特性例如网络可能会在未来被支持。 对于在浏览器上运行的 Python,用户可以考虑 的 TCP;请参阅 Emscripten Networking 了解详情。WASI snapshot preview 1 只允许来自现有文件描 述符的套接字。 • 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 • 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如, WASI 不允许具有绝对文件名的符号链接。 4 Chapter 1. 概述 CHAPTER20 码力 | 2253 页 | 11.81 MB | 10 月前3
Python 标准库参考指南 3.12 Reference, 发行版本 3.12.7 1.1.1 WebAssembly 平台 WebAssembly 平台 wasm32-emscripten (Emscripten) 和 wasm32-wasi (WASI) 分别提供了 POSIX API 的 一个子集。WebAssembly 运行时和浏览器都处于沙盒模式中并具有对主机和外部资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 Emscripten-SDK 或 WASI-SDK 的版本, WASM 运行时 (浏览器, NodeJS, wasmtime) 以及 Python 编译时旗标。WebAssembly, Emscripten 和 WASI 都是尚在不断演 化中的标准;某些特性例如网络可能会在未来被支持。 对于在浏览器上运行的 Python,用户可以考虑 的 TCP;请参阅 Emscripten Networking 了解详情。WASI snapshot preview 1 只允许来自现有文件描 述符的套接字。 • 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 • 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如, WASI 不允许具有绝对文件名的符号链接。 4 Chapter 1. 概述 CHAPTER20 码力 | 2253 页 | 11.81 MB | 10 月前3
The Zig Programming Language 0.11.0 Documentationresult is 3 47.2. WASI Zig's support for WebAssembly System Interface (WASI) is under active development. Example of using the standard library and reading command line arguments: wasi_args.zig 1 const {s}\n", .{ i, arg }); 11 } 12 } Shell $ zig build-exe wasi_args.zig -target wasm32-wasi Shell $ wasmtime wasi_args.wasm 123 hello 0: wasi_args.wasm 1: 123 2: hello A more interesting example would list of preopens from the runtime. This is now supported in the standard library via std.fs.wasi.PreopenList : wasi_preopens.zig 1 const std = @import("std"); 2 const fs = std.fs; 3 4 pub fn main() !void0 码力 | 238 页 | 7.80 MB | 1 年前3
Python 标准库参考指南 3.13 Reference, 发行版本 3.13.0 1.1.1 WebAssembly 平台 WebAssembly 平台 wasm32-emscripten (Emscripten) 和 wasm32-wasi (WASI) 分别提供了 POSIX API 的 一个子集。WebAssembly 运行时和浏览器都处于沙盒模式中并具有对主机和外部资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 Emscripten-SDK 或 WASI-SDK 的版本, WASM 运行时 (浏览器, NodeJS, wasmtime) 以及 Python 编译时旗标。WebAssembly, Emscripten 和 WASI 都是尚在不断演 化中的标准;某些特性例如网络可能会在未来被支持。 对于在浏览器上运行的 Python,用户可以考虑 的 TCP;请参阅 Emscripten Networking 了解详情。WASI snapshot preview 1 只允许来自现有文件描 述符的套接字。 • 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 • 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如, WASI 不允许具有绝对文件名的符号链接。 1.1.2 移动平台 Android0 码力 | 2246 页 | 11.74 MB | 10 月前3
Python 标准库参考指南 3.13 Reference, 发行版本 3.13.0 1.1.1 WebAssembly 平台 WebAssembly 平台 wasm32-emscripten (Emscripten) 和 wasm32-wasi (WASI) 分别提供了 POSIX API 的 一个子集。WebAssembly 运行时和浏览器都处于沙盒模式中并具有对主机和外部资源的受限访问权。任 何使用了进程、线程、网络、信号或其他形式的进程间通信 则会阻塞浏览器的事件循环。 Python 在 WebAssembly 平台上的特性与行为依赖于 Emscripten-SDK 或 WASI-SDK 的版本, WASM 运行时 (浏览器, NodeJS, wasmtime) 以及 Python 编译时旗标。WebAssembly, Emscripten 和 WASI 都是尚在不断演 化中的标准;某些特性例如网络可能会在未来被支持。 对于在浏览器上运行的 Python,用户可以考虑 的 TCP;请参阅 Emscripten Networking 了解详情。WASI snapshot preview 1 只允许来自现有文件描 述符的套接字。 • 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 • 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如, WASI 不允许具有绝对文件名的符号链接。 1.1.2 移动平台 Android0 码力 | 2242 页 | 11.73 MB | 10 月前3
The Zig Programming Language 0.12.0 DocumentationThe result is 3 WASI Zig's support for WebAssembly System Interface (WASI) is under active development. Example of using the standard library and reading command line arguments: wasi_args.zig const print("{}: {s}\n", .{ i, arg }); } } Shell $ zig build-exe wasi_args.zig -target wasm32-wasi Shell $ wasmtime wasi_args.wasm 123 hello 0: wasi_args.wasm 1: 123 2: hello A more interesting example would list of preopens from the runtime. This is now supported in the standard library via std.fs.wasi.Preopens : wasi_preopens.zig const std = @import("std"); const fs = std.fs; pub fn main() !void { var0 码力 | 241 页 | 7.37 MB | 1 年前3
共 34 条
- 1
- 2
- 3
- 4













