Wasm3 Versions Save

🚀 A fast WebAssembly interpreter and the most universal WASM runtime

v0.5.0

2 years ago

Awesome updates

New in Wasm3 v0.5.0

  • Multi-Value support ( #23 by @soundandform, @vshymanskyy )
    • Switched to WebAssembly opam-1.1.1 spec tests by default
    • General interpreter refinement and bugfix
  • Bulk memory ops: mem.copy & mem.fill
  • Support Apple M1
  • Continuous fuzzing via OSS-Fuzz
    • Improved security
    • Fixed memory leaks, parse errors, etc.
    • Stack overflow detection in EvaluateExpression
  • Extended API:
    • Globals access: m3_FindGlobal, m3_SetGlobal, m3_GetGlobal, m3_GetGlobalType
    • m3_InjectFunction for dynamic wasm interpretation
  • Option to limit accessible memory: d_m3MaxLinearMemoryPages
  • WASI:
    • Improved wasi_snapshot_preview1 support + wasi_unstable compatibility layer
    • Fixed memory layout of several structures, improved security, etc.
  • Added wasm3-strace prebuilt binary for Win64

Python integration

  • PyWasm3 moved to a separate repo
    • Added a lot of shiny, PyGame-based examples :grin:
    • Gas Metering support
    • Multi-Value support, see example usage

New and updated docs

SWUbanner


👉 If you like Wasm3, please give us a GitHub star! 🌟

v0.4.9

3 years ago
  • Structured WebAssembly/WASI tracing.
  • Backtrace recording on traps (by @t-veor).
  • Support exported functions with multiple names (by @atdrendel)
  • Support recursive m3_Call invocation. I.e. calling exported function from within imported function callback.
  • pywasm3 Python module is released. See some colorful examples 😎
  • New API:
    • Exported function signature introspection: m3_GetArgCount, m3_GetRetCount, m3_GetArgType, m3_GetRetType
    • Introspection of imported functions (see IM3ImportContext _ctx argument)
    • Calls with raw arguments, instead of strings: m3_CallV, m3_CallVL, m3_Call
    • Warning: m3_CallWithArgs renamed to m3_CallArgv
    • Get return values: m3_GetResultsV, m3_GetResultsVL, m3_GetResults
    • Get backtrace: m3_GetBacktrace
    • Helpers: m3_GetFunctionName, m3_GetModuleName, m3_GetFunctionModule, m3_GetModuleRuntime
    • m3_RunStart can (optionally) be used to force the dynamic module initialization.
  • Build system:
    • Add BUILD_NATIVE flag (ON by default).
    • Remove d_m3LogOutput, USE_HUMAN_FRIENDLY_ARGS, and other misleading flags.
    • ESP32-C3 support
    • Raspberry Pi Pico (RP2040) support
  • WASI:
    • Improved security via m3ApiCheckMem
    • Whence fixes (by @sinkingsugar)
    • Cosmopolitan Libc support (by @jart)
  • Fix some memory leaks, parse errors, etc.
  • Updated docs

👉 If you like Wasm3, please give us a GitHub star! 🌟

v0.4.8

3 years ago
  • Cosmopolitan build, single file that supports 6 operating systems! Download wasm3-cosmopolitan.com below.
  • Static/dynamic NoFloat modes (integer-only wasm subset)
  • "strace" mode (see d_m3EnableStrace)
  • Update uvwasi to version 0.0.11
  • RawFunction unified/extended with RawFunctionEx
  • Multi-value module parsing
  • MinGW support
  • Python bindings
  • Lots of bugfixes, memory usage improvements, infrastructure updates

v0.4.7

3 years ago
  • Critical interpreter improvements, diagnostics - @soundandform
  • Reduced native and WASM stack usage #5 - @soundandform
  • Eliminated d_m3MaxNumFunctionArgs (now dynamic) - @soundandform
  • Switch to wasm-core-testsuite to v1.1 #44 - @vshymanskyy
  • uvwasi integration - @cjihrig , @vshymanskyy
  • Big-Endian systems support, including WASI #125 - @vshymanskyy
  • Full self-hosting, including WASI #8 - @vshymanskyy
  • QEMU-based CI testing on multiple platforms - @vshymanskyy
  • Allow multi-byte opcodes. Implement saturated conversions proposal - @vshymanskyy, @MaxGraey
  • Add C++ wrappers - by @igrr
  • Improve iOS example - by @MaxGraey
  • Dynamic native functions - by @ltearno
  • wasm-trace support - by @vshymanskyy
  • Added WasmBoy and WasmSynth demos
  • SparkFun Artemis support
  • Major cleanup, improved documentation (recommended devices, diagnostics, ..), etc.

v0.4.6

4 years ago
  • ⚠️ Critical interpreter bugfixes :beetle: - thanks @kgdev and @soundandform
  • Make the source directory usable as a CMake library - @igrr
  • Make headers compatible with C++
  • Post-MVP feature: Sign-extension opcodes - by @abalkin
  • Add support for Teensy devices
  • Remove arduino_blink example (now has a separate repo)
  • Restructure docs
  • Update benchmark results

v0.4.5

4 years ago
  • iOS support :iphone: - @vshymanskyy
  • ESP32: Add AssemblyScript, Rust and TinyGo blink examples - @vshymanskyy
  • m3.h now deprecated, please use wasm3.h
  • m3_GetMemory API
  • WASI: return exit code on proc_exit call (#59) - @kanaka
  • Increased d_m3MaxNumFunctionArgs to 31
  • Many bugfixes :beetle:

Wasm3 can now be used as a library for:

C/C++ GoLang Rust Arduino, PlatformIO, Particle

Cheers :smile:

v0.4.2

4 years ago

This is the initial version of wasm3 - by @soundandform and @vshymanskyy