bytecodealliance/wasmtime

GitHub: bytecodealliance/wasmtime

一款轻量、安全且符合标准的WebAssembly独立运行时,支持多语言嵌入和沙箱隔离执行。

Stars: 17663 | Forks: 1634

wasmtime

WebAssembly 的独立运行时

Bytecode Alliance 项目

build status zulip chat supported rustc stable Documentation Status

指南 | 贡献 | 网站 | 聊天

## 安装 可以使用一个小型的安装脚本在 Linux 和 macOS 上(本地)安装 Wasmtime CLI: ``` curl https://wasmtime.dev/install.sh -sSf | bash ``` 此脚本安装到 `$WASMTIME_HOME`(默认为 `$HOME/.wasmtime`),可执行文件放置在 `$WASMTIME_HOME/bin` 中。 运行上述安装脚本后,请按照屏幕上的说明操作。 Windows 用户或其他感兴趣的用户可以直接从 [GitHub Releases](https://github.com/bytecodealliance/wasmtime/releases) 页面下载安装程序和二进制文件。 有关更多安装选项,请参阅 [在线书籍 CLI 安装页面](https://docs.wasmtime.dev/cli-install.html)。 有关 Wasmtime 当前支持版本的文档可以在 [在线书籍文档](https://docs.wasmtime.dev/stability-release.html#current-versions) 中找到。 ## 示例 如果您已经[安装了 Rust 编译器](https://www.rust-lang.org/tools/install),那么您可以编写一些 Rust 源代码: ``` fn main() { println!("Hello, world!"); } ``` 并使用以下命令将其编译为 WebAssembly 组件: ``` rustup target add wasm32-wasip2 rustc hello.rs --target wasm32-wasip2 ``` 编译完成后,您可以运行您的组件: ``` wasmtime hello.wasm ``` 您应该会看到以下输出: ``` Hello, world! ``` (注意:请确保您按照上述官方说明使用 [`rustup`][rustup] 方法安装了 Rust,并且系统中没有通过其他方式(例如系统包管理器)安装 Rust 工具链的副本。否则,`rustup target add...` 命令可能无法为正确的 Rust 副本安装目标。) ## 功能特性 * **快速**。Wasmtime 构建在优化的 [Cranelift] 代码生成器之上,可在运行时或提前快速生成高质量的机器代码。Wasmtime 针对高效的实例化、嵌入器和 wasm 之间的低开销调用以及并发实例的可扩展性进行了优化。 * **[安全]**。Wasmtime 的开发非常注重正确性和安全性。建立在 Rust 的运行时安全保证之上,每个 Wasmtime 功能都通过 [RFC 流程] 经过仔细的审查和考虑。一旦功能设计并实现,它们将接受由 [Google's OSS Fuzz] 捐赠的 24/7 模糊测试。随着功能稳定,它们成为[发布][release policy]的一部分,当出现问题时,我们制定了明确的[安全策略][security policy]来快速缓解和修补任何问题。我们遵循深度防御的最佳实践,并针对 Spectre 等问题集成保护和缓解措施。最后,我们正在通过与学术研究人员合作,正式验证 Wasmtime 和 Cranelift 的关键部分,以此推动最先进技术的发展。 * **[可配置]**。Wasmtime 使用合理的默认值,但也可以进行配置,以对 CPU 和内存消耗等内容提供更细粒度的控制。无论您是想在微型环境中还是在具有许多并发实例的大型服务器上运行 Wasmtime,我们都能满足您的需求。 * **[WASI]**。Wasmtime 支持通过 [WASI 标准](https://wasi.dev) 提供的一组丰富的 API 与宿主环境进行交互。 * **[符合标准]**。Wasmtime 通过了 [官方 WebAssembly 测试套件](https://github.com/WebAssembly/testsuite),实现了 [官方 wasm C API](https://github.com/WebAssembly/wasm-c-api),并且也实现了 [WebAssembly 的未来提案](https://github.com/WebAssembly/proposals)。Wasmtime 开发人员也始终密切参与 WebAssembly 标准化过程。 ## 语言支持 您可以通过实现的嵌入,从多种不同的语言使用 Wasmtime。 Bytecode Alliance 支持的语言: * **[Rust]** - [`wasmtime` crate] * **[C]** - [`wasm.h`、`wasi.h` 和 `wasmtime.h` 头文件][c-headers],[CMake](crates/c-api/CMakeLists.txt) * **C++** - [`wasmtime.hh` 头文件][c-headers] * **[Python]** - [`wasmtime` PyPI 包] * **[.NET]** - [`Wasmtime` NuGet 包] * **[Go]** - [`wasmtime-go` 仓库] * **[Ruby]** - [`wasmtime` gem] 社区支持的语言: * **[Elixir]** - [`wasmex` hex 包] * **Perl** - [`Wasm` Perl 包的 `Wasm::Wasmtime`] ## 文档 [📚 在此阅读 Wasmtime 指南! 📚][guide] [wasmtime 指南][guide] 是了解 Wasmtime 能为您做什么或帮助您解答有关 Wasmtime 问题的最佳起点。如果您有兴趣为 Wasmtime 做出贡献,[它也可以帮您做到这一点][contributing]! 这是 Wasmtime。
标签:AI工具, Bytecode Alliance, CLI, JIT, NIDS, Rust, WASI, Wasm, Wasmtime, WebAssembly, WiFi技术, 可视化界面, 后端开发, 安全, 容器化, 沙箱, 生成式AI安全, 系统编程, 编译器, 网络流量审计, 虚拟机, 超时处理, 边缘计算, 运行时, 通知系统