Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bytecodealliance/wasmtime
A fast and secure runtime for WebAssembly
https://github.com/bytecodealliance/wasmtime
aot cranelift jit runtime rust sandbox standalone wasi wasm wasmtime webassembly
Last synced: 3 days ago
JSON representation
A fast and secure runtime for WebAssembly
- Host: GitHub
- URL: https://github.com/bytecodealliance/wasmtime
- Owner: bytecodealliance
- License: apache-2.0
- Created: 2017-08-29T14:01:55.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T17:10:31.000Z (about 1 month ago)
- Last Synced: 2024-10-29T20:27:33.764Z (about 1 month ago)
- Topics: aot, cranelift, jit, runtime, rust, sandbox, standalone, wasi, wasm, wasmtime, webassembly
- Language: Rust
- Homepage: https://wasmtime.dev/
- Size: 103 MB
- Stars: 15,338
- Watchers: 176
- Forks: 1,299
- Open Issues: 739
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: CODEOWNERS
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-ccamel - bytecodealliance/wasmtime - A fast and secure runtime for WebAssembly (Rust)
- awesome-rust - bytecodealliance/wasmtime
- awesome-repositories - bytecodealliance/wasmtime - A fast and secure runtime for WebAssembly (Rust)
- awesome-rust-zh - wasmtime - 独立Wasm JIT运行时
- awesome-rust-cn - bytecodealliance/wasmtime
- awesome-list - wasmtime - style runtime for WebAssembly, using Cranelift | bytecodealliance | 5788 | (Rust)
- StarryDivineSky - bytecodealliance/wasmtime
- awesome-fe-resources - wasmtime
- awesome-hacking-lists - bytecodealliance/wasmtime - A fast and secure runtime for WebAssembly (Rust)
- my-awesome - bytecodealliance/wasmtime - 12 star:15.5k fork:1.3k A lightweight WebAssembly runtime that is fast, secure, and standards-compliant (Rust)
- awesome-rust-list - wasmtime
- awesome-rust-list - wasmtime
README
wasmtime
A standalone runtime for
WebAssembly
A Bytecode Alliance project
Guide
|
Contributing
|
Website
|
Chat
## Installation
The Wasmtime CLI can be installed on Linux and macOS (locally) with a small install
script:```sh
curl https://wasmtime.dev/install.sh -sSf | bash
```
This script installs into `$WASMTIME_HOME` (defaults to `$HOME/.wasmtime`), and executable is placed in `$WASMTIME_HOME/bin`.Windows or otherwise interested users can download installers and
binaries directly from the [GitHub
Releases](https://github.com/bytecodealliance/wasmtime/releases) page.## Example
If you've got the [Rust compiler
installed](https://www.rust-lang.org/tools/install) then you can take some Rust
source code:```rust
fn main() {
println!("Hello, world!");
}
```and compile/run it with:
```sh
$ rustup target add wasm32-wasip1
$ rustc hello.rs --target wasm32-wasip1
$ wasmtime hello.wasm
Hello, world!
```(Note: make sure you installed Rust using the `rustup` method in the official
instructions above, and do not have a copy of the Rust toolchain installed on
your system in some other way as well (e.g. the system package manager). Otherwise, the `rustup target add...`
command may not install the target for the correct copy of Rust.)## Features
* **Fast**. Wasmtime is built on the optimizing [Cranelift] code generator to
quickly generate high-quality machine code either at runtime or
ahead-of-time. Wasmtime is optimized for efficient instantiation, low-overhead
calls between the embedder and wasm, and scalability of concurrent instances.* **[Secure]**. Wasmtime's development is strongly focused on correctness and
security. Building on top of Rust's runtime safety guarantees, each Wasmtime
feature goes through careful review and consideration via an [RFC
process]. Once features are designed and implemented, they undergo 24/7
fuzzing donated by [Google's OSS Fuzz]. As features stabilize they become part
of a [release][release policy], and when things go wrong we have a
well-defined [security policy] in place to quickly mitigate and patch any
issues. We follow best practices for defense-in-depth and integrate
protections and mitigations for issues like Spectre. Finally, we're working to
push the state-of-the-art by collaborating with academic researchers to
formally verify critical parts of Wasmtime and Cranelift.* **[Configurable]**. Wasmtime uses sensible defaults, but can also be
configured to provide more fine-grained control over things like CPU and
memory consumption. Whether you want to run Wasmtime in a tiny environment or
on massive servers with many concurrent instances, we've got you covered.* **[WASI]**. Wasmtime supports a rich set of APIs for interacting with the host
environment through the [WASI standard](https://wasi.dev).* **[Standards Compliant]**. Wasmtime passes the [official WebAssembly test
suite](https://github.com/WebAssembly/testsuite), implements the [official C
API of wasm](https://github.com/WebAssembly/wasm-c-api), and implements
[future proposals to WebAssembly](https://github.com/WebAssembly/proposals) as
well. Wasmtime developers are intimately engaged with the WebAssembly
standards process all along the way too.[Wasmtime]: https://github.com/bytecodealliance/wasmtime
[Cranelift]: https://cranelift.dev/
[Google's OSS Fuzz]: https://google.github.io/oss-fuzz/
[security policy]: https://bytecodealliance.org/security
[RFC process]: https://github.com/bytecodealliance/rfcs
[release policy]: https://docs.wasmtime.dev/stability-release.html
[Secure]: https://docs.wasmtime.dev/security.html
[Configurable]: https://docs.rs/wasmtime/latest/wasmtime/struct.Config.html
[WASI]: https://docs.rs/wasmtime-wasi/latest/wasmtime_wasi/
[Standards Compliant]: https://docs.wasmtime.dev/stability-tiers.html## Language Support
You can use Wasmtime from a variety of different languages through embeddings of
the implementation.Languages supported by the Bytecode Alliance:
* **[Rust]** - the [`wasmtime` crate]
* **[C]** - the [`wasm.h`, `wasi.h`, and `wasmtime.h` headers][c-headers], [CMake](crates/c-api/CMakeLists.txt) or [`wasmtime` Conan package]
* **C++** - the [`wasmtime-cpp` repository][wasmtime-cpp] or use [`wasmtime-cpp` Conan package]
* **[Python]** - the [`wasmtime` PyPI package]
* **[.NET]** - the [`Wasmtime` NuGet package]
* **[Go]** - the [`wasmtime-go` repository]
* **[Ruby]** - the [`wasmtime` gem]Languages supported by the community:
* **[Elixir]** - the [`wasmex` hex package]
* **Perl** - the [`Wasm` Perl package's `Wasm::Wasmtime`][Rust]: https://bytecodealliance.github.io/wasmtime/lang-rust.html
[C]: https://bytecodealliance.github.io/wasmtime/lang-c.html
[`wasmtime` crate]: https://crates.io/crates/wasmtime
[c-headers]: https://bytecodealliance.github.io/wasmtime/c-api/
[Python]: https://bytecodealliance.github.io/wasmtime/lang-python.html
[`wasmtime` PyPI package]: https://pypi.org/project/wasmtime/
[.NET]: https://bytecodealliance.github.io/wasmtime/lang-dotnet.html
[`Wasmtime` NuGet package]: https://www.nuget.org/packages/Wasmtime
[Go]: https://bytecodealliance.github.io/wasmtime/lang-go.html
[`wasmtime-go` repository]: https://pkg.go.dev/github.com/bytecodealliance/wasmtime-go
[wasmtime-cpp]: https://github.com/bytecodealliance/wasmtime-cpp
[`wasmtime` Conan package]: https://conan.io/center/wasmtime
[`wasmtime-cpp` Conan package]: https://conan.io/center/wasmtime-cpp
[Ruby]: https://bytecodealliance.github.io/wasmtime/lang-ruby.html
[`wasmtime` gem]: https://rubygems.org/gems/wasmtime
[Elixir]: https://docs.wasmtime.dev/lang-elixir.html
[`wasmex` hex package]: https://hex.pm/packages/wasmex
[`Wasm` Perl package's `Wasm::Wasmtime`]: https://metacpan.org/pod/Wasm::Wasmtime## Documentation
[📚 Read the Wasmtime guide here! 📚][guide]
The [wasmtime guide][guide] is the best starting point to learn about what
Wasmtime can do for you or help answer your questions about Wasmtime. If you're
curious in contributing to Wasmtime, [it can also help you do
that][contributing]![contributing]: https://bytecodealliance.github.io/wasmtime/contributing.html
[guide]: https://bytecodealliance.github.io/wasmtime---
It's Wasmtime.