{"id":13626179,"url":"https://github.com/mewz-project/wasker","last_synced_at":"2025-04-03T15:09:04.093Z","repository":{"id":214485007,"uuid":"736513194","full_name":"mewz-project/wasker","owner":"mewz-project","description":"WebAssembly AoT compiler for your favorite Operating System","archived":false,"fork":false,"pushed_at":"2024-10-01T07:33:58.000Z","size":1135,"stargazers_count":272,"open_issues_count":19,"forks_count":17,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-27T14:11:38.337Z","etag":null,"topics":["compiler","llvm","rust","wasm","webassembly"],"latest_commit_sha":null,"homepage":"","language":"WebAssembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mewz-project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-12-28T05:38:49.000Z","updated_at":"2025-03-20T11:26:38.000Z","dependencies_parsed_at":"2024-03-26T09:25:25.889Z","dependency_job_id":"d7362b30-73c6-4f17-826f-fa399593d9c5","html_url":"https://github.com/mewz-project/wasker","commit_stats":null,"previous_names":["mewz-project/wasker"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewz-project%2Fwasker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewz-project%2Fwasker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewz-project%2Fwasker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mewz-project%2Fwasker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mewz-project","download_url":"https://codeload.github.com/mewz-project/wasker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247024150,"owners_count":20870940,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["compiler","llvm","rust","wasm","webassembly"],"created_at":"2024-08-01T21:02:12.304Z","updated_at":"2025-04-03T15:09:04.068Z","avatar_url":"https://github.com/mewz-project.png","language":"WebAssembly","funding_links":[],"categories":["WebAssembly"],"sub_categories":[],"readme":"[![CI](https://github.com/mewz-project/wasker/actions/workflows/ci.yaml/badge.svg)](https://github.com/mewz-project/wasker/actions/workflows/ci.yaml)\n\n![Wasker_logo](./doc/assets/wasker.png \"Wasker_logo\")\n\n# Wasker\n\nWasker is a WebAssembly compiler.\nWasker compiles Wasm binary into ELF format binary.　\nCurrently, Wasker supports WASI preview 1.\n\n![Wasker_architecture](./doc/assets/wasker_architecture.png \"Wasker_architecture\")\n\n## What's new with Wasker\n\nThere are already software tools that compile Wasm to native binaries.\n\nWhat's new with Wasker is, Wasker generates an **OS-independent** ELF file where WASI calls from Wasm applications remain **unresolved**.\n\nThis unresolved feature allows Wasker's output ELF file to be **linked with WASI implementations provided by various operating systems**, enabling each OS to execute Wasm applications.\n\nWasker empowers your favorite OS to serve as a Wasm runtime!\n\n![demo](./doc/assets/wasker.gif)\n\n\n# Quick Start\n\n## Step1: Install Wasker\n```\ncurl -sSfL https://github.com/mewz-project/wasker/releases/download/v0.1.1/wasker-0.1.1-linux-$(uname -m)-gnu.tar.gz | tar -xzvC /usr/bin/ wasker\n```\n\n## Step2: Create Wasm binary\nCreate any Wasm binary.\n### example1\nPlease refer [examples](./examples) for building Wasm from Rust and Go. \n\n```\ngit clone https://github.com/mewz-project/wasker.git\ncd examples/rust\nrustup target add wasm32-wasi\ncargo build --target wasm32-wasi\n```\n### example2\nWe also provide a pre-build simple Wasm binary.\n```\ngit clone https://github.com/mewz-project/wasker.git\nls helloworld.wat\n```\n\n## Step3: Run Wasker to compile Wasm\n### example1\n```\n$ wasker examples/rust/target/wasm32-wasi/debug/rust.wasm\n[2024-03-19T12:10:20Z INFO  wasker::compiler] input: examples/rust/target/wasm32-wasi/debug/rust.wasm\n[2024-03-19T12:10:20Z INFO  wasker::compiler] write to ./wasm.ll\n[2024-03-19T12:10:20Z INFO  wasker::compiler] write to ./wasm.o, it may take a while\n[2024-03-19T12:10:21Z INFO  wasker::compiler] Compile success\n```\n\n### example2\n```\nwasker helloworld.wat\n```\n\n## Step4: Run compiled Wasm\n\nELF file generated by Wasker is OS-independent: WASI calls from Wasm applications remain unresolved.\n\nPlease write your own WASI wrapper for your favorite OS to be linked with Wasker output.\n\nHere, we'll show a [tiny example](./examples/wasi-wrapper/c/wasi-wrapper-linux.c) of running Wasker output on Linux.\n\nLink Wasker output and WASI wapper for Linux\n```\ngcc -no-pie ./examples/wasi-wrapper/c/wasi-wrapper-linux.c ./wasm.o -o hello\n```\n\nRun!!\n```\n./hello\n```\n\nAlso please check [Mewz](https://github.com/Mewz-project/Mewz.git), a unikernel OS which has WASI interface. \nELF file generated by Wasker can be executed on Mewz without any modification.\n\n\n\n# Development\nWasker compiler is based on LLVM (LLVM 15 currently).\n\n\n## Option1 : Use Devcontainer\nYou can try Wasker on browser via Devcontainer.\n\n## Option2 : Build from source\n\nThe `wasker` binary distributed in Quick Start is dynamically linked with GNU libc (support for musl is planned for the future).\nIf pre-build binaries don't work on your system, please build from source.\n\n### Clone repository\n```\ngit clone git@github.com:mewz-project/wasker.git\ncd Wasker\n```\n\n### Install LLVM locally\nThe commands are a little different because you need an LLVM binary built for your architecture.\n#### AMD64\n```\nmkdir -p dependencies/llvm\nwget https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4.tar.xz -O /tmp/llvm-15.0.0.tar.xz\ntar -xvf /tmp/llvm-15.0.0.tar.xz -C dependencies/llvm\nexport LLVM_SYS_150_PREFIX=$PWD/dependencies/llvm/clang+llvm-15.0.0-x86_64-linux-gnu-rhel-8.4\n```\n\n#### AArch64\n```\nmkdir -p dependencies/llvm\nwget https://github.com/llvm/llvm-project/releases/download/llvmorg-15.0.0/clang+llvm-15.0.0-aarch64-linux-gnu.tar.xz -O /tmp/llvm-15.0.0.tar.xz\ntar -xvf /tmp/llvm-15.0.0.tar.xz -C dependencies/llvm\nexport LLVM_SYS_150_PREFIX=$PWD/dependencies/llvm/clang+llvm-15.0.0-aarch64-linux-gnu\n```\n\n### Run Wasker\n```\ncargo run helloworld.wat\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmewz-project%2Fwasker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmewz-project%2Fwasker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmewz-project%2Fwasker/lists"}