WebAssembly 简介 - 陈思衡(unreachable) WebAssembly 介绍 ## WASI 简介 WebAssembly System Interface (简称 WASI),它定义了一组 WASM 模块可以调用的系统调用接口。WASI 的目的是让 WASM 模块可以访问底层系统的功能,比如文件系统、网络等。这使得 WASM 可以作为一个更广泛的运行时,不仅仅局限于浏览器环境。WASI 当前定义了一组 POSIX 兼容的系统调用,让 兼容的系统调用,让 WASM 模块可以访问文件系统。未来 WASI 还会加入更多系统接口,为 WASM 提供更广泛的系统访问能力。 ## 😍 ## WASI 简介 ## WASI 实例 WASI 的本质就是一套 host 提供的 function。与开发者自行提供的 host function 相比,WASI 在 Rust 被内置在 std 中。 fn main() { println("Hello "Hello, WASI").unwrap(); } ### src/main.rs (type $i64_i32_i32_i32 (func (param i64 i32 i32) (result i32))) (import "wasi_snapshot_preview1" "fd_write" (func $wasi::lib_general0 码力 | 24 页 | 773.46 KB | 2 年前3
05-MoonBit 编程语言(WASM 技术)服务端应用展望以及对Kubernetes生态的影响Web 前端应用实际接受 • 有后端应用潜力,但更多具体疑问仍待解答 - 问题集中在扩展特性(features)、外部语言接口(FFI)、操作系统界面(system interfaces 或 WASI)上 ## WASM 后端应用先驱 ## wasmCloud  • WASI (WebAssembly System Interface) - 用于允许 WASM 代码调用操作系统的能力(stdout、socket 这些) • 目前处在 0.2 预览版 - 功能缺口和争议都很大 Sign In Sign up Explore / wasmedge/example-wasi-http  ## wasmedge/example-wasi-http Sponsored OSS ☆1 By WasmEdge · Updated0 码力 | 30 页 | 3.41 MB | 1 年前3
夏歌-使用Rust构建LLM应用of AI hardware and extensibility of AI models. ## 我们能不能直接用 Rust • 训练 WASI-NN spec WasmEdge 已经支持 Pytorch、TensorFlow Lite 推理 WASI-NN 2.0 AI 应用相关的工具 比如 Langchain # Rewrite it in Rust 为什么要用 Rust? ![ = "0.4" 19 tokio_wasi = { version = "1.25.1", features = ["macros", "rt"] } 20 anyhow = "1" 21 base64 = "0.21.0" 22 http_req_wasi = "0.10.2" 基于 ChatGPT serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.93" tokio_wasi = { version = "1.25.1", features = ["macros", "rt"] } anyhow = "1"0 码力 | 36 页 | 38.31 MB | 2 年前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 码力 | 2399 页 | 11.19 MB | 1 年前3
Python 标准库参考指南 3.12 glibc 2.27 以上版本。 #### 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,用户可以考虑 WebSockets 的 TCP;请参阅 Emscripten Networking 了解详情。WASI snapshot preview 1 只允许来自现有文件描述符的套接字。 • 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 - 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如,WASI 不允许具有绝对文件名的符号链接。 ## 内置函数 Python 解释器内置0 码力 | 2253 页 | 11.81 MB | 1 年前3
Python 标准库参考指南 3.12 glibc 2.27 以上版本。 #### 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,用户可以考虑 WebSockets 的 TCP;请参阅 Emscripten Networking 了解详情。WASI snapshot preview 1 只允许来自现有文件描述符的套接字。 • 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 - 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如,WASI 不允许具有绝对文件名的符号链接。 ## 内置函数 Python 解释器内置0 码力 | 2253 页 | 11.81 MB | 1 年前3
Python 标准库参考指南 3.13 glibc 2.27 以上版本。 #### 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,用户可以考虑 WebSockets 的 TCP;请参阅 Emscripten Networking 了解详情。WASI snapshot preview 1 只允许来自现有文件描述符的套接字。 • 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 - 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如,WASI 不允许具有绝对文件名的符号链接。 #### 1.1.2 移动平台 Android0 码力 | 2246 页 | 11.74 MB | 1 年前3
Python 标准库参考指南 3.13 以上版本和 glibc 2.27 以上版本。 ## 1.1.1 WebAssembly 平台 WebAssembly平台wasm32-emscripten(Emscripten)和wasm32-wasi(WASI)分别提供了POSIX API的一个子集。WebAssembly运行时和浏览器都处于沙盒模式中并具有对主机和外部资源的受限访问权。任何使用了进程、线程、网络、信号或其他形式的进程间通信(IPC 会阻塞浏览器的事件循环。 Python在WebAssembly平台上的特性与行为依赖于Emscripten-SDK或WASI-SDK的版本,WASM运行时 (浏览器,NodeJS,wasmtime)以及Python编译时旗标。WebAssembly,Emscripten和WASI都是尚在不断演化中的标准;某些特性例如网络可能会在未来被支持。 对于在浏览器上运行的Python,用户可以考虑Pyo ckets的TCP;请参阅Emscripten Networking了解详情。WASI snapshot preview1只允许来自现有文件描述符的套接字。 - 某些函数是不执行任何操作的空壳或是始终返回硬编码的值。 - 有关文件描述符、文件访问权、文件所有权和链接的函数均受到限制并且不支持某些操作。例如,WASI不允许具有绝对文件名的符号链接。 ## 1.1.2 移动平台 Android0 码力 | 2242 页 | 11.73 MB | 1 年前3
The Zig Programming Language 0.12.0 Documentationresult 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 {0 码力 | 241 页 | 7.37 MB | 2 年前3
The Zig Programming Language 0.11.0 Documentationzig build-lib math.zig -target wasm32-freestanding -dynamic -rdynamic $ zig build-exe wasi_args.zig -target wasm32-wasi test.js const fs = require('fs'); const source = fs.readFileSync("/math 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 const { std.debug.print("{}: {s}\n", {i, arg}); } } Shell $ wasmtime wasi_args.wasm 123 hello 0: wasi_args.wasm 1: 123 2: hello A more interesting example would be extracting the list of0 码力 | 238 页 | 7.80 MB | 2 年前3
共 41 条
- 1
- 2
- 3
- 4
- 5













