基于 WebAssembly 的运行时与 CLI,用于在轻量、安全的沙箱中运行应用和 AI 智能体代码。
bytecodealliance/wasmtime
基于 Cranelift 代码生成器的独立 WebAssembly 运行时,支持 WASI 并提供多语言嵌入接口。
- Star
- 18,744
- Fork
- 1,879
- 未关闭 Issue
- 888
- 最近提交
- 5小时前
这是什么?
Wasmtime 是一个独立的 WebAssembly 运行时。WebAssembly 是一种可移植的二进制格式,可在浏览器内外运行代码。你可以通过命令行 wasmtime CLI 直接运行 WebAssembly 组件,也可以通过 Rust crate 或 C、C++、Python、.NET、Go、Ruby 等语言的绑定将其嵌入应用中。
它使用 Cranelift 代码生成器,既支持运行时即时编译,也支持提前编译。项目提供 CPU 和内存占用的配置选项,并实现了 WASI 接口,使客户程序能够访问文件等宿主环境资源。项目通过了官方 WebAssembly 测试套件,并实现了官方 wasm C API。
Wasmtime 由 Bytecode Alliance 维护,使用 Rust 编写。
核心功能
- 01使用 Cranelift 代码生成器,支持运行时编译和提前编译。
- 02提供 WASI 接口,让 WebAssembly 程序访问宿主环境资源。
- 03可配置 CPU 和内存的使用方式。
- 04附带命令行工具,可直接运行 WebAssembly 组件。
- 05提供 Rust、C、C++、Python、.NET、Go、Ruby 等语言的嵌入绑定。
适用场景
- 在命令行中运行 WebAssembly 组件。
- 在 Rust 或 C 应用中嵌入沙箱化的 WebAssembly 运行时。
- 通过基于 WASI 的宿主接口执行不可信的插件代码。
快速上手
- 1
使用官方安装脚本或从发布页面安装 Wasmtime CLI
- 2
为 Rust 添加 WebAssembly WASI 编译目标
rustup target add wasm32-wasip2 - 3
将 Rust 的 Hello World 程序编译为 WebAssembly 组件
rustc hello.rs --target wasm32-wasip2 - 4
使用 Wasmtime 运行编译好的组件
wasmtime hello.wasm
使用前须知
- 一键安装脚本的文档仅覆盖 Linux 和 macOS;Windows 用户需要从发布页面下载。
标签
常见问题
- wasmtime 是什么?
- 基于 Cranelift 代码生成器的独立 WebAssembly 运行时,支持 WASI 并提供多语言嵌入接口。 Wasmtime 是一个独立的 WebAssembly 运行时。WebAssembly 是一种可移植的二进制格式,可在浏览器内外运行代码。你可以通过命令行 wasmtime CLI 直接运行 WebAssembly 组件,也可以通过 Rust crate 或 C、C++、Python、.NET、Go、Ruby 等语言的绑定将其嵌入应用中。
- wasmtime 可以免费使用吗?用的什么许可证?
- wasmtime 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- wasmtime 还在维护吗?
- 活跃维护中。wasmtime 最近一次提交是在 2026年10月21日。
- wasmtime 适合用来做什么?
- 在命令行中运行 WebAssembly 组件。 在 Rust 或 C 应用中嵌入沙箱化的 WebAssembly 运行时。 通过基于 WASI 的宿主接口执行不可信的插件代码。
- wasmtime 怎么安装和运行?
- 使用官方安装脚本或从发布页面安装 Wasmtime CLI 为 Rust 添加 WebAssembly WASI 编译目标: rustup target add wasm32-wasip2 将 Rust 的 Hello World 程序编译为 WebAssembly 组件: rustc hello.rs --target wasm32-wasip2 使用 Wasmtime 运行编译好的组件: wasmtime hello.wasm
- 在哪里获取 wasmtime?
- 源代码和安装说明在 GitHub 上:https://github.com/bytecodealliance/wasmtime
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
用 Rust 编写的 Python 3 解释器,不依赖 CPython 绑定,支持 WebAssembly 与嵌入 Rust 应用。
基于 LLVM 的 Go 编译器,面向微控制器、WebAssembly 和命令行工具。
一个实验性的编译器,可将 TypeScript/JavaScript 编译为原生可执行文件或 WebAssembly,运行时无需 Node.js。
将 C 和 C++ 代码编译为 WebAssembly,使其可在浏览器、Node.js 等环境运行的编译工具链。
一种类 TypeScript 的语言及编译器,可将带类型的 TypeScript 变体编译为 WebAssembly 模块。