summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorHenry Gressmann <mail@henrygressmann.de>2024-08-29 15:11:55 +0200
committerHenry Gressmann <mail@henrygressmann.de>2024-08-29 15:11:55 +0200
commit5d4fc886d901467e77b236e60fb0339ed1c01864 (patch)
tree58693489ea14b388c5955ab34625aca4ef083f0f /README.md
parentc8c21f82b2c96936f06c4dabd786ad51dc9dd41d (diff)
feat: full multi-memory support
Signed-off-by: Henry Gressmann <mail@henrygressmann.de>
Diffstat (limited to 'README.md')
-rw-r--r--README.md48
1 files changed, 21 insertions, 27 deletions
diff --git a/README.md b/README.md
index be30cda..0cf8b66 100644
--- a/README.md
+++ b/README.md
@@ -14,41 +14,35 @@
- **Tiny**: TinyWasm is designed to be as small as possible without significantly compromising performance or functionality (< 4000 LLOC).
- **Portable**: TinyWasm runs on any platform that Rust can target, including `no_std`, with minimal external dependencies.
-- **Safe**: No unsafe code is used in the runtime (`rkyv` which uses unsafe code can be used for serialization, but it is optional).
+- **Safe**: No unsafe code is used in the runtime (`rkyv` which uses unsafe code can be used for serialization, but is optional).
## Status
-As of version `0.3.0`, TinyWasm successfully passes all the WebAssembly 1.0 tests in the [WebAssembly Test Suite](https://github.com/WebAssembly/testsuite). Work on the 2.0 tests is ongoing. This enables TinyWasm to run most WebAssembly programs, including executing TinyWasm itself compiled to WebAssembly (see [examples/wasm-rust.rs](./examples/wasm-rust.rs)). The results of the testsuites are available [here](https://github.com/explodingcamera/tinywasm/tree/main/crates/tinywasm/tests/generated).
-
-The API is still unstable and may change at any time, so you probably don't want to use it in production _yet_. TinyWasm isn't primarily designed for high performance; it focuses more on simplicity, size, and portability. Benchmarks are currently being reworked and will be available again soon.
-
-**Future Development**: The first major version will focus on improving the API and adding support for [WASI](https://wasi.dev/). While doing so, I also want to further simplify and reduce the codebase's size and improve the parser's performance.
+TinyWasm passes all WebAssembly MVP tests from the [WebAssembly core testsuite](https://github.com/WebAssembly/testsuite) and is able to run most WebAssembly programs. Additionally, the current 2.0 Draft is mostly supported, with the exception of Fixed-Width SIMD and Memory64/Multiple Memories. See the [Supported Proposals](#supported-proposals) section for more information.
## Supported Proposals
-| Proposal | Implementation Status | Version |
-| -------------------------------------------------------------------------------------------------------------------------- | --------------------- | ------- |
-| [**Mutable Globals**](https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md) | Fully implemented | 0.2.0 |
-| [**Multi-value**](https://github.com/WebAssembly/spec/blob/master/proposals/multi-value/Overview.md) | Fully implemented | 0.2.0 |
-| [**Sign-extension operators**](https://github.com/WebAssembly/spec/blob/master/proposals/sign-extension-ops/Overview.md) | Fully implemented | 0.2.0 |
-| [**Bulk Memory Operations**](https://github.com/WebAssembly/spec/blob/master/proposals/bulk-memory-operations/Overview.md) | Fully implemented | 0.4.0 |
-| [**Reference Types**](https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md) | Partially implemented | N/A |
-| [**Multiple Memories**](https://github.com/WebAssembly/multi-memory/blob/master/proposals/multi-memory/Overview.md) | Partially implemented | N/A |
-| [**Memory64**](https://github.com/WebAssembly/memory64/blob/master/proposals/memory64/Overview.md) | Partially implemented | N/A |
-
-## Usage
-
-TinyWasm can be used through the `tinywasm-cli` CLI tool or as a library in your Rust project. Documentation can be found [here](https://docs.rs/tinywasm).
+**Legend**\
+🌑 -- not available\
+🚧 -- in development / partialy supported\
+🟢 -- fully supported
-### Library
+| Proposal | Status | TinyWasm Version |
+| -------------------------------------------------------------------------------------------------------------------------- | ------ | ---------------- |
+| [**Mutable Globals**](https://github.com/WebAssembly/mutable-global/blob/master/proposals/mutable-global/Overview.md) | 🟢 | 0.2.0 |
+| [**Non-trapping float-to-int Conversion**](https://github.com/WebAssembly/nontrapping-float-to-int-conversions) | 🟢 | 0.2.0 |
+| [**Sign-extension operators**](https://github.com/WebAssembly/sign-extension-ops) | 🟢 | 0.2.0 |
+| [**Multi-value**](https://github.com/WebAssembly/spec/blob/master/proposals/multi-value/Overview.md) | 🟢 | 0.2.0 |
+| [**Bulk Memory Operations**](https://github.com/WebAssembly/spec/blob/master/proposals/bulk-memory-operations/Overview.md) | 🟢 | 0.4.0 |
+| [**Reference Types**](https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md) | 🟢 | 0.7.0 |
+| [**Multiple Memories**](https://github.com/WebAssembly/multi-memory/blob/master/proposals/multi-memory/Overview.md) | 🟢 | 0.8.0 |
+| [**Memory64**](https://github.com/WebAssembly/memory64/blob/master/proposals/memory64/Overview.md) | 🚧 | N/A |
+| [**Fixed-Width SIMD**](https://github.com/webassembly/simd) | 🌑 | N/A |
-```sh
-$ cargo add tinywasm
-```
-
-### CLI
+## Usage
-The CLI is mainly available for testing purposes, but can also be used to run WebAssembly programs.
+See the [examples](./examples) directory and [documentation](https://docs.rs/tinywasm) for more information on how to use TinyWasm.
+For testing purposes, you can also use the `tinywasm-cli` tool:
```sh
$ cargo install tinywasm-cli
@@ -78,7 +72,7 @@ Big thanks to the authors of the following projects, which have inspired and inf
- [wazero](https://wazero.io/) - a zero-dependency WebAssembly interpreter written in go
- [wain](https://github.com/rhysd/wain) - a zero-dependency WebAssembly interpreter written in Rust
-I encourage you to check these projects out if you're looking for a more mature and feature-complete WebAssembly interpreter.
+I encourage you to check these projects out if you're looking for more mature and feature-complete WebAssembly Runtimes.
## License