Skip to content

UlteSoft/uwvm2

uwvm2 logo

Ultimate WebAssembly Virtual Machine 2

Important

This project is currently only developer stable

Introduction

Ultimate WebAssembly Virtual Machine 2

Features

WASM Feature Extensions

Most wasm standards are supported. See feature.md. For detailed changes in each WebAssembly release, see wasm-release.md.

Supports multiple platforms

Supports over 100 triplet platforms, including DOS series, POSIX series, Windows 9x series, Windows NT series, and the Host C Library Series. Supports interpretation execution (INT), just-in-time compilation (JIT), and tiered compilation (TC). See support.md for details.

Runtime execution backends

UWVM2 includes multiple runtime execution backends (interpreter and in-memory compilation components). See runtime compiler documentation. For the u2 interpreter (“register-ring stack-top cache”) architecture, see u2 interpreter documentation.

High-performance, secure, and highly scalable standard parser

High-performance, spec-compliant WebAssembly binary parser built on concept-oriented C++26 with SIMD-aware design and extensive fuzzing for safety and robustness. See readme.md for details.

WASI host extensions

WebAssembly System Interface Preview 1 (WASI P1) host bindings for wasm32-wasip1 and wasm64-wasip1 targets, built on the same cross-platform runtime as UWVM2 and exposing file-system and related services to WebAssembly modules. See imported/readme.md for details.

Plugin-facing host APIs

Preload modules (dynamic libraries / weak-symbol plugins) can consume a stable host-side API for linear-memory access, and can now optionally consume the UWVM2 WASI Preview 1 host API as well. The WASI table is disabled by default and must be explicitly enabled from the command line.

Flexible linear memory models

uwvm2 provides three host-side models for implementing WebAssembly linear memory (mmap-based, multi-threaded allocator-based, and single-thread allocator-based backends), allowing efficient execution on platforms with or without virtual memory support. See readme.md for a detailed description.

Commandline interface

  • Get version information
$ uwvm --version
  • Get a list of commands
$ uwvm --help
  • Running uwvm2 virtual machine
$ uwvm <param0> <param1> ... --run <wasm> <argv1> <argv2> ...
  • WASI mount dir (wasip1)
$ uwvm --wasip1-mount-dir <wasi dir> <system dir> ... --run ...
  • Expose WASI Preview 1 to preload plugins
$ uwvm --wasm-expose-wasip1-host-api --wasm-register-dl <plugin> <module> --run ...

How to build

  • Windows (aka. unknown-windows-msvc). See windows.md
  • MinGW (aka. unknown-windows-gnu, unknown-w64-mingw32). See mingw.md
  • Linux (aka. unknown-linux-unknown). See linux.md
  • Darwin (aka. unknown-apple-darwin). See darwin.md
  • FreeBSD (aka. unknown-freebsd(Version)). See freebsd.md
  • WASM-WASI (self-hosting) (aka. [wasm32|wasm64]-[wasip1|wasip2]-(threads)). See wasm-wasi.md
  • Other platforms: See how-to-build

Support / Donations

If you find this project useful, you can support its development with a crypto donation.

Bitcoin (BTC)

Network: Bitcoin – Taproot

bc1psltm5phekeym6996g2ng0cxmhwdfaug93srmfmhllszyv6qxrcls7mjg3s

Ethereum (ETH)

Network: Ethereum Mainnet

0x4E4b1D2Ee93366c1Dd058ba2226202531C4ccaE4

USDT

Network: BNB Smart Chain (BEP20)

0x4E4b1D2Ee93366c1Dd058ba2226202531C4ccaE4

⚠️ Please ensure you select the correct network when sending funds to avoid loss of assets.

Thank you for supporting this project!

Releases

No releases published

Packages

 
 
 

Contributors