Skip to content

Commit

Permalink
feat: v0.7.0 (#13)
Browse files Browse the repository at this point in the history
* Remove all unsafe code
* Refactor interpreter loop
* Optimize Call-frames
* Remove unnecessary reference counter data from store

---------

Signed-off-by: Henry Gressmann <[email protected]>
  • Loading branch information
explodingcamera authored May 15, 2024
1 parent e771c6d commit d9cdd0b
Show file tree
Hide file tree
Showing 33 changed files with 1,615 additions and 994 deletions.
5 changes: 5 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,8 @@ test-wast="test --package tinywasm --test test-wast -- --enable "
test-wast-release="test --package tinywasm --test test-wast --release -- --enable "
generate-charts="run --package scripts --bin generate-charts --release"
benchmark="bench -p benchmarks --bench"

# # enable for linux perf
# [target.x86_64-unknown-linux-gnu]
# linker="/usr/bin/clang"
# rustflags=["-Clink-arg=-fuse-ld=lld", "-Clink-arg=-Wl,--no-rosegment"]
9 changes: 4 additions & 5 deletions BENCHMARKS.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Benchmark results

All benchmarks are run on a Ryzen 7 5800X with 32GB of RAM on Linux 6.6.
WebAssembly files are optimized using [wasm-opt](https://github.com/WebAssembly/binaryen),
WebAssembly files are optimized using [wasm-opt](https://github.com/WebAssembly/binaryen) (with the `--O3` flag)
and the benchmark code is available in the `crates/benchmarks` folder.

These are mainly preliminary benchmarks, and I will be rewriting the benchmarks to be more accurate and to test more features in the future.
Expand All @@ -20,7 +20,6 @@ All WebAssembly files are compiled with the following settings:

All runtimes are compiled with the following settings:

- `unsafe` features are enabled.
- `opt-level` is set to 3, `lto` is set to `thin`, `codegen-units` is set to 1.
- No CPU-specific optimizations are used as AVX2 can reduce performance by more than 50% on some CPUs.

Expand All @@ -34,9 +33,9 @@ All runtimes are compiled with the following settings:

| Benchmark | Native | TinyWasm | Wasmi | Wasmer (Single Pass) |
| ------------ | -------- | ---------- | --------- | -------------------- |
| `fib` | `0ms` | ` 19.09µs` | `18.53µs` | ` 48.09µs` |
| `fib-rec` | `0.27ms` | ` 22.22ms` | ` 4.96ms` | ` 0.47ms` |
| `argon2id` | `0.53ms` | ` 86.42ms` | `46.36ms` | ` 4.82ms` |
| `fib` | `0ms` | ` 18.70µs` | `18.53µs` | ` 48.09µs` |
| `fib-rec` | `0.27ms` | ` 16.02ms` | ` 4.96ms` | ` 0.47ms` |
| `argon2id` | `0.53ms` | ` 80.54ms` | `46.36ms` | ` 4.82ms` |
| `selfhosted` | `0.05ms` | ` 7.26ms` | ` 6.51ms` | `446.48ms` |

### Fib
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.7.0] - 2024-05-15

**All Commits**: https://github.com/explodingcamera/tinywasm/compare/v0.6.0...v0.7.0

### Changed

- Remove all unsafe code
- Refactor interpreter loop
- Optimize Call-frames
- Remove unnecessary reference counter data from store

## [0.6.1] - 2024-05-10

**All Commits**: https://github.com/explodingcamera/tinywasm/compare/v0.6.0...v0.6.1
Expand Down
Loading

0 comments on commit d9cdd0b

Please sign in to comment.