Giter Club home page Giter Club logo

mewz's Introduction

Mewz

Mewz is a unikernel designed specifically for running Wasm applications and compatible with WASI.

What's new with Mewz

There are now various Wasm runtimes, but they operate on general-purpose operating systems such as Linux or Windows.

Mewz is a specialized kernel designed for running Wasm. Mewz runs a single Wasm application within the kernel by linking it together during the build process with the Wasm application. (A kernel configured in this manner is commonly referred to as a unikernel.) In this way, Mewz provides the minimal required features and environment for executing Wasm.

Quick Start

There are some example programs. Please check out examples.

Option1: Docker

We prepare for a Docker image that has a environment for running Mewz.

curl -o helloworld.wat https://raw.githubusercontent.com/Mewz-project/Wasker/main/helloworld.wat
docker run -v .:/volume ghcr.io/mewz-project/mewz helloworld.wat

This image internally run Wasker, build Mewz, and run it on QEMU.

Option2: Dev Container

You can use Dev Container on GitHub Codespaces or your local VSCode.

To start Codespaces,

  • Click Code -> Codespaces -> New codespace on this repository page.
  • Wait for a while, then you can see VSCode on browser.
  • Open terminal on VSCode
# On the Dev Container
git submodule update --init
curl -o helloworld.wat https://raw.githubusercontent.com/Mewz-project/Wasker/main/helloworld.wat
wasker helloworld.wat
zig build -Dapp-obj=wasm.o run

Option3: Build from source

Compile a Wasm file into a native object file, using Wasker. Follow the instruction here.

Then, build Mewz and run it on QEMU with the following commands.

zig build -Dapp-obj=<path to the object file generated by Wasker> run

To use file systems, specify the directory by -Ddir=<path to dir>.

Warning

This option makes an archive of the directory by tar and attach it to QEMU.

Note

QEMU's port 1234 is mapped to localhost:1234.

Current Status

Feature Status
WASI Preview 1 In Progress: Partial Implementation (Please refer to mewz-project#1)
Socket โœ… (WasmEdge Compatible)
Component Model Not yet
File System On memory, read only
Network โœ…

mewz's People

Contributors

saza-ku avatar

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.