Code Monkey home page Code Monkey logo

awesome-wasm-runtimes's Introduction

Awesome WebAssembly Runtimes Awesome

This repo contains a list of virtual machines and tools that execute the WebAssembly(wasm) format and/or compile it to executable machine code :octocat:

Legend

πŸš€ - Active development
😴 - Unmaintained (been more than a year since last commit)

CONTENTS


aWsm is a compiler and runtime for compiling WebAssembly (Wasm) code into llvm bytecode, then into sandboxed binaries you can run on various platforms.

  • Languages written in

    Rust C
  • Compiler framework

    LLVM
  • Compilation / Execution modes

    AOT
  • Interoperability with other languages

    C
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS

A compiler from WebAssembly to native code, via the OCaml backend.

  • Languages written in

    OCaml
  • Compiler framework

    OCaml Compiler
  • Compilation / Execution modes

    AOT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS

EOS VM is designed from the ground up for the high demands of blockchain applications which require far more from a WebAssembly engine than those designed for web browsers or standards development.

  • Languages written in

    C++
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

Extism's goal is to make all software programmable, and is a flexible, embedded runtime to make it easy to extend your software with WebAssembly.

WASM runtime to develop server-side WebAssembly applications.

  • Languages written in

    JavaScript
  • Compiler framework

    NodeJS(V8)
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

Fizzy aims to be a fast, deterministic, and pedantic WebAssembly interpreter written in C++.

  • Languages written in

    C++
  • Compiler framework

    • N/A
  • Compilation / Execution modes

    Interpreter
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    WASI
  • Non-web standards

    WASI
  • Used by

    • N/A
  • Platforms supported

    Linux macOS

GraalWasm is a WebAssembly engine implemented in the GraalVM. It can interpret and compile WebAssembly programs in the binary format, or be embedded into other programs.

  • Languages written in

    Java
  • Compiler framework

    GraalVM
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    Java JVM Graal supported languages
  • Non-MVP features supported

  • Host APIs supported

    WASI
  • Non-web standards

    WASI
  • Used by

    • GraalVM JavaScript - A high performance implementation of the JavaScript programming language.
  • Platforms supported

    Linux macOS Windows

Happy New Moon with Report is an open-source implementation of WebAssembly written entirely in Java. It is used to run or test Web Assembly Modules (*.wasm) in Java.

  • Languages written in

    Java
  • Compiler framework

    • N/A
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    Java JVM languages
  • Non-MVP features supported

    Sign Extensions
  • Host APIs supported

    • N/A
  • Used by

    • N/A
  • Platforms supported

    JVM Linux macOS Windows

An AOT (ahead-of-time) compiler for WebAssembly that creates C compatible binaries, either as sandboxed plugins you can dynamically load, or as stand-alone executables that interface directly with the operating system.

  • Languages written in

    C++
  • Compiler framework

    LLVM
  • Compilation / Execution modes

    AOT JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    Threads Multiple Result and Block Parameters Name Section Bulk Memory Operations Sign Extension Instructions Non-trapping Conversion Instructions
  • Host APIs supported

    Custom
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

Life is a secure & fast WebAssembly VM built for decentralized applications, written in Go by Perlin Network.

  • Languages written in

    Go
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

Lucet is a native WebAssembly compiler and runtime. It is designed to safely execute untrusted WebAssembly programs inside your application.

NOTE: Lucet is now in maintenance mode. Work has been moved to wasmtime.

  • Languages written in

    Rust
  • Compiler framework

    Cranelift
  • Compilation / Execution modes

    AOT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    WASI
  • Non-web standards

    WASI
  • Used by

    • N/A
  • Platforms supported

    Linux

πŸš€ A high performance WebAssembly interpreter

  • Languages written in

    C
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    Python C/C++ Rust Go Zig Swift C#/.Net
  • Non-MVP features supported

    Multi-Value Bulk Memory Operations Sign-extension operators Non-trapping conversions Name Section
  • Host APIs supported

    WASI Custom
  • Non-web standards

    WASI Gas Metering
  • Used by

    • wasmcloud - A platform for writing portable business logic
    • Shareup - Fast, private sharing for everyone
    • WowCube - An nnovative console and the gaming platform
    • txiki.js -A small and powerful JavaScript runtime
  • Platforms supported

    Windows Linux
    (any arch)
    macOS
    (any arch)
    FreeBSD
    (any arch)
    Android OpenWRT SBC/MCU Arduino

Motor is a WebAssembly runtime, which aims for secure and efficient execution of WebAssembly programs

  • Languages written in

    Rust
  • Compiler framework

    Dynasm
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS

A python implementation of the WebAssembly interpreter

  • Languages written in

    Python
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

A small demo of Web Assembly's potential outside of browsers

  • Languages written in

    Rust
  • Compiler framework

    Wasmi Cranelift
  • Compilation / Execution modes

    Interpreted JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

WebAssembly engine in Scala

  • Languages written in

    Scala
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

VMIR is a standalone library written in C that can parse and execute WebAssembly and LLVM Bitcode files

  • Languages written in

    C
  • Compiler framework

    LLVM
  • Compilation / Execution modes

    Interpreted JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
    • N/A
  • Platforms supported

    Linux macOS Windows

A Minimal WebAssembly interpreter written in C.

  • Languages written in

    C
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

Wagon is a WebAssembly-based interpreter in Go, for Go.

  • Languages written in

    Go
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

A WebAssembly runtime written in Swift.

  • Languages written in

    Swift
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS

WebAssembly interpreter in RPython.

  • Languages written in

    RPython
  • Compiler framework

    RPython
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

A lightweight, high-performance, and extensible WebAssembly runtime for cloud native, edge, and decentralized applications. Project under CNCF.

  • Languages written in

    C++
  • Compiler framework

    LLVM
  • Compilation / Execution modes

    Interpreter AOT
  • Interoperability with other languages

    Solidity Rust C/C++ Go/TinyGo JavaScript Python Grain Swift Zig Ruby
  • Non-MVP features supported

    Bulk Memory Operations SIMD Multi-Memory Multi-Value Reference Types Sign Extension Instructions Non-Trapping Float-to-Int Conversions Mutable Global
  • Host APIs supported

    WASI Networking Socket TensorFlow Command Interface Image Processing
  • Non-web standards

    WASI Gas Metering Ethereum Environment Interface Oasis Substrate
  • Used by

  • Platforms supported

    Linux macOS Windows Android OpenHarmony seL4 RTOS

Wasmer is a standalone WebAssembly runtime for running WebAssembly outside of the browser, supporting WASI and Emscripten.

  • Languages written in

    Rust C++
  • Compiler framework

    Singlepass Cranelift (Default) LLVM
  • Compilation / Execution modes

    JIT AOT
  • Interoperability with other languages

    Rust PHP C C++ Python Go PHP Java Ruby Postgres C#/.Net Elixir R D Swift
  • Non-MVP features supported

    Threads SIMD Multi Value returns Name Section Bulk Memory Operations Sign Extension Instructions
  • Host APIs supported

    Emscripten WASI
  • Non-web standards

    WASI wasm-c-api
  • Used by

  • Platforms supported

    Linux (x64, aarch64, x86) macOS (x64, arm64) Windows (x64, x86) FreeBSD (x64) Android

A Wasm interpreter.

  • Languages written in

    Rust
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    Mutable Globals Sign-extension operators Non-trapping conversions Multi-Value Bulk Memory Operations Reference Types Tail Calls Extended Const
  • Host APIs supported

    • N/A
  • Non-web standards

    WASI
  • Used by

    Substrate smoldot Ayaka Game Engine
  • Platforms supported

    Linux macOS Windows WebAssembly

A WebAssembly Runtime and Compiler based on LLVM.

  • Languages written in

    Rust
  • Compiler framework

    LLVM
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    macOS

wasmrt is a runtime built for native execution of WebAssembly modules (virtualized at first, eventually JIT).

  • Languages written in

    C++
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

Wasmtime is a standalone wasm-only runtime for WebAssembly, using the Cranelift JIT

  • Languages written in

    Rust
  • Compiler framework

    Cranelift
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    Python
  • Non-MVP features supported

    Interface types
  • Host APIs supported

    WASI
  • Non-web standards

    WASI wasm-c-api
  • Used by

    • Wasmi: an efficient WebAssembly interpreter that is used by Substrate, a next-generation framework for blockchain innovation.
  • Platforms supported

    Linux macOS Windows

An unofficial standalone WebAssembly process virtual machine

  • Languages written in

    C++
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

WebAssembly Virtual Machine, which aim to fit embedded systems.

  • Languages written in

    Rust
  • Compiler framework

    Life
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

WebAssembly Virtual Machine, which aim to fit embedded systems.

  • Languages written in

    C++ Python
  • Compiler framework

    LLVM
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    Threads SIMD Multiple Result and Block Parameters Exception Handling Name Section Reference Types Bulk Memory Operations Sign Extension Instructions
  • Host APIs supported

    WASI Emscripten WAVIX
  • Non-web standards

    • WASI
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

An experimental, minimal toolkit and runtime on top of node to produce and run WebAssembly modules

  • Languages written in

    JavaScript
  • Compiler framework

    NodeJS(V8)
  • Compilation / Execution modes

    JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

WebAssembly Micro Runtime (WAMR) is a standalone WebAssembly (WASM) runtime with small footprint

A tiny and efficient WebAssembly virtual machine.

  • Languages written in

    C++
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    • N/A
  • Host APIs supported

    • N/A
  • Non-web standards

    • N/A
  • Used by

    • N/A
  • Platforms supported

    Linux macOS Windows

wazero is a WebAssembly 1.0 and 2.0 spec compliant runtime written in Go, with zero platform dependencies.

  • Languages written in

    Go
  • Compiler framework

    Custom
  • Compilation / Execution modes

    Interpreted JIT
  • Interoperability with other languages

    • N/A
  • Non-MVP features supported

    Bulk Memory Operations Import/Export of Mutable Globals Sign-extension operators Multi-Value Returns Name Section Non-trapping float-to-int conversions Reference Types SIMD
  • Host APIs supported

    AssemblyScript WASI
  • Non-web standards

    WASI
  • Used by

    • dapr - APIs that simplify microservice connectivity
    • trivy - vulnerability/misconfiguration/secret scanner for containers and other artifacts
    • wapc-go - WebAssembly Host Runtime for waPC-compliant modules
  • Platforms supported

    FreeBSD (amd64) Linux (amd64, arm64, riscv64) macOs (amd64) Windows (amd64)

License

CC0

To the extent possible under law, Steve Akinyemi has waived all copyright and related or neighboring rights to this work.

awesome-wasm-runtimes's People

Contributors

alabulei1 avatar appcypher avatar axic avatar becavalier avatar beriberikix avatar codefromthecrypt avatar elmato avatar equal-l2 avatar erikmcclure avatar fishjd avatar iemejia avatar indolering avatar kanaka avatar kfessel avatar kogai avatar kripken avatar lf- avatar maxgraey avatar nilslice avatar others avatar proppy avatar ricogit avatar robbepop avatar syrusakbary avatar takahser avatar tusf avatar vshymanskyy avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

awesome-wasm-runtimes's Issues

Popularity/Stars for Referenced Repos

Would be nice to add a github stars badge (and maybe issues, etc) for each of the referenced github projects... this would allow someone to at least have some understanding of where a project stands in terms of popularity.

AFAIK, Wasmer is one of the most popular, along with Node, but knowing what's out there would be nice.

pywasm

add pywasm:
https://github.com/mohanson/pywasm

Languages written in
Python

Compiler framework
N/A

Compilation / Execution modes
Interpreted

Interoperability with other languages
N/A

Non-MVP features supported
?

Host APIs supported
?

Non-web standards
?

Used by
?

Platforms supported
Linux macOS Windows

More Information Please?

It would be nice to see, at a glance

  • Whether the VM is an interpreter or a compiler
  • Supported CPU (if JIT/AOT compile)

Add aWsm

Love the list.

I've been gathering info on runtimes and noticed that this one isn't listed yet:
https://github.com/gwsystems/aWsm

It seems to be under very active development. Note that I am not affiliated with the project.

Lucet in Maintence Mode

Hello,
I've noticed that Lucet is listed as maintained which is technically correct, but its README suggests moving to wasmtime. I think it could be helpful to add a note at the Lucet section to inform users about the maintenance notice.

Since mid 2020, the Lucet team has been focusing our efforts on the Wasmtime project. Wasmtime now has support for all of the features that previously only Lucet had, such as ahead-of-time (AOT) compilation and a pooling userfaultfd-based memory allocator.
We encourage all new projects to use Wasmtime, and existing Lucet users to transition to Wasmtime.

Add pwart

https://github.com/partic2/pwart

A lightweight WebAssembly JIT compiler and runtime , powered by sljit.

Languages written in

C

Compiler framework

SLJIT

Compilation / Execution modes

JIT

Interoperability with other languages

N/A

Non-MVP features supported

Bulk Memory Operations/Multi-Memory/Multi-Value/Reference Types/Sign Extension Instructions/Non-Trapping Float-to-Int Conversions/Mutable Global/Memory64
(partly support)

Host APIs supported

WASI/Custom

Non-web standards

N/A
Used by

N/A
Platforms supported

Linux/Windows /Android

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.