🚀Wasmer is a fast and secure WebAssembly runtime that enables super lightweight containers to run anywhere

Overview

Wasmer is a fast and secure WebAssembly runtime that enables super lightweight containers to run anywhere: from Desktop to the Cloud, Edge and IoT devices.

This document is also available in: 🇨🇳 中 文 -Chinese 🇪🇸 Español-Spanish 🇫🇷 Français-French 🇯🇵 日本 語 -Japanese.

Features

  • Secure by default. No file, network, or environment access, unless explicitly enabled.
  • Supports WASI and Emscripten out of the box.
  • Fast. Run WebAssembly at near-native speeds.
  • Embeddable in multiple programming languages
  • Compliant with latest WebAssembly Proposals (SIMD, Reference Types, Threads, ...)

Install

Wasmer CLI ships as a single executable with no dependencies.

curl https://get.wasmer.io -sSfL | sh
Other installation options (Powershell, Brew, Cargo, ...)

Wasmer can be installed from various package managers. Choose the one that fits best for your environment:

  • Powershell (Windows)

    iwr https://win.wasmer.io -useb | iex
  • Homebrew (macOS, Linux)

    brew install wasmer
  • Scoop (Windows)

    scoop install wasmer
  • Chocolatey (windows)

    choco install wasmer
  • Cargo

    Note: All the available features are described in the wasmer-cli crate docs

    cargo install wasmer-cli

Looking for more installation options? See the wasmer-install repository to learn more!

Quickstart

You can start by running QuickJS, a small and embeddable Javascript engine compiled as a WebAssembly module (qjs.wasm):

const i = 1 + 2; qjs > console.log("hello " + i); hello 3 ">
$ wasmer qjs.wasm
QuickJS - Type "\h" for help
qjs > const i = 1 + 2;
qjs > console.log("hello " + i);
hello 3

Here is what you can do next:

📦 Language Integrations

The Wasmer runtime can be used as a library embedded in different languages, so you can use WebAssembly anywhere.

Language Package Documentation
Rust logo Rust wasmer Rust crate Learn
C logo C/C++ wasmer.h header Learn
C# logo C# WasmerSharp NuGet package Learn
D logo D wasmer Dub package Learn
Python logo Python wasmer PyPI package Learn
JS logo Javascript @wasmerio NPM packages Learn
Go logo Go wasmer Go package Learn
PHP logo PHP wasm PECL package Learn
Ruby logo Ruby wasmer Ruby Gem Learn
Java logo Java wasmer/wasmer-jni Bintray package Learn
Elixir logo Elixir wasmex hex package Learn
R logo R no published package Learn
Postgres logo Postgres no published package Learn
Swift no published package
Zig logo Zig no published package
Dart logo Dart no published package

👋   Missing a language?

Contribute

We appreciate your help! 💜

Check our docs on how to build Wasmer from source or test your changes.

Community

Wasmer has an amazing community of developers and contributors. Welcome, please join us! 👋

Comments
  • chore: Build Wasmer on musl

    chore: Build Wasmer on musl

    This patch adds a specific build for musl. Currently, it will only support JIT engine.

    I also changes the workflow definition a bit so we don't depend on the OS name but rather on the environment ID which is our convention.

    Closes #1482 Closes #1766

    Description

    Review

    • [ ] Add a short description of the the change to the CHANGELOG.md file
    opened by jubianchi 108
  • Add cache back via sccache

    Add cache back via sccache

    Description

    This PR aims to improve compilation times by caching via sccache. We are using paritytech's sccache as is more updated than mozilla's one.

    I considered other options such as:

    • Using Github Actions cache for target: discarded because the limit is 5Gb and given the multiple OSs used, in my local folder a clean cache is ~700Mb (just with cranelift)... estimated ~1-2Gb with all compilers included.
    1.0 
    opened by syrusakbary 52
  • Improve test framework and execution speed

    Improve test framework and execution speed

    Description

    This PR focuses on improving the speed that we run the tests:

    • [x] Unified C API tests. No more recompilation will be needed for testing different compilers. We bundle all in one object and test based on a environment variable TEST
    • [x] Simplified Rust tests so only one compilation is needed. Not counting compilation time, here are the new testing times:
      • Building times:
        • test crates: ~3 mins
        • capi: ~2 mins
      • Singlepass: cargo test --features singlepass
        • jit: 3 seconds (170 passed; 0 failed; 342 ignored;)
      • Cranelift: cargo test --features cranelift
        • jit: 25 seconds (232 passed; 2 failed; 24 ignored; 0 measured; 258 filtered out;)
        • native: 12 minutes (256 passed, 2 failed; 24. ignored)
      • LLVM cargo test --features llvm
        • jit: 42 seconds (238 passed; 0 failed; 18 ignored; 0 measured; 256 filtered out)
        • native: (haven't go through everything yet)
      • CAPI: make test-capi. Total ~4 min.
        • singlepass+jit:
        • cranelift+jit
        • cranelift+native
        • llvm+jit
        • llvm+native
    • [x] Refactored a bit ignores.txt, now it is possible to target multiple features at the same time (OS, chipset, engine, compiler, ...) (small caveat: tests have to be "namespaced" because of some proc_macro2 issues with Span and source_file().

    If I had to guess I think we are going to see at least a 80% improvement on test times, and a much nicer way of testing (just with cargo). There are around 1-3secs on build time that will be increased from the macros I created but the tradeoff is great.

    You now want to tests all the simd tests for the llvm compiler at the same time (both engines)? No problem:

    cargo test --features llvm --tests -- simd
    

    You want to run absolutely all the tests with all compilers and engines at the same time? (excluding package tests and c-api of course). No prob:

    cargo test --features singlepass,cranelift,llvm
    

    Also, do you want to test the capi in all compilers and engines at the same time? Wait no more:

    make test-capi
    

    Review

    • [ ] Add a short description of the change to the CHANGELOG.md file
    🎉 enhancement 🧪 tests 🤖 bot 
    opened by syrusakbary 50
  • Rkyv read native artifact from archive

    Rkyv read native artifact from archive

    Description

    As mentioned in #2180, load a native artifact is slow because of deserialization ModuleMetadata. This draft PR show how fast it can be when serialize it archive to a [u8] that can be directly read back and interprete as nested struct/HashMap/PrimaryMap without a deserialization. Run

    cargo bench -p wasmer-cache --features singlepass
    

    from root dir, will see a lot of timeing in the end:

    ...
    3.447994ms // bincode::deserialize
    rkyv 22ns
    rkyv deser 386.539µs
    

    This PR use a forked rkyv, for impl rkyv traits on PrimaryMap and IndexMap. TODO:

    • [x] in fork rkyv, impl rkyv traits on IndexMap is not guanranteed keep indexmap's order, just a quick hack to see timing (reuse ArchivedHashMap). need to impl a real ArchivedIndexMap
    • ~[ ] replace each use of ModuleMetadata and children to ArchivedModuleMetadata or something like:~
    enum ModuleMetadataWrap {
        Original(ModuleMetadata),
        Archived(ArchivedModuleMetadata)
    }
    

    ~and field access to ModuleMetadataWrap method calls~

    • [x] rkyv deserialize is not as fast as rkyv archive, but fast enough and advantage is minimum change to wasmer's struct field access code, so I plan to use rkyv deserialize
    • [x] add a test to ensure rkyv does deserialize correctly. I added assert to see deserialized obj is Eq to original, need to turn it to a unit test.
    • [x] move impl rkyv::* for PrimaryMap/IndexMap inside this PR, instead of using a fork of rkyv, using a remote-derive technique

    Review

    • [ ] Add a short description of the the change to the CHANGELOG.md file
    opened by ailisp 45
  • [WIP] Setup LLVM automatically for LLVM backend (Mac OS/Linux)

    [WIP] Setup LLVM automatically for LLVM backend (Mac OS/Linux)

    Setup LLVM automatically for LLVM backend. It now supports Mac OS and Linux.

    Description

    Port the code from https://github.com/wasmerio/wasmer/pull/353. I created a new PR because the code in the master branch has changed a lot since the previous PR made.

    The automatic installing is enabled the following conditions:

    • The system LLVM doesn't exist.
    • Your environment is Mac OS or Linux.
    • Internet connection exists.
    • The flag to disable installing isn't set.
      • LLVM_SYS_80_DISABLE_INSTALL=1 cargo run can disable to install LLVM.
    🎉 enhancement 📦 lib-compiler-llvm 
    opened by d0iasm 41
  • iOS Support - via .dylib & Headless Runtime

    iOS Support - via .dylib & Headless Runtime

    Description

    This PR makes some fairly simple changes to feature flags so that forks originally intended *-apple-darwin now work for both aarch64-apple-ios/x86_64-apple-ios.

    Review

    • [ ] Add a short description of the change to the CHANGELOG.md file
    🎉 enhancement :apple: platform-darwin 📦 lib-engine-dylib 
    opened by NathHorrigan 40
  • Make musl test a container job

    Make musl test a container job

    The purpose of this PR is to speed up our CI by speeding up the slowest step. Rather than running docker as part of this process, we just run this entire job in the alpine container. I'm hoping this will recover a significant amount of performance.

    Review

    • [ ] Add a short description of the change to the CHANGELOG.md file
    opened by MarkMcCaskey 40
  • Move integration tests to `tests` dir in workspace root

    Move integration tests to `tests` dir in workspace root

    Reorganizing some of our tests.

    Still tests left to migrate and a few bugs to fix.

    Review

    • [ ] Add a short description of the the change to the CHANGELOG.md file
    📦 lib-compiler-cranelift 📦 lib-emscripten 📦 lib-deprecated 🧪 tests 📦 lib-compiler-llvm 📦 lib-wasi ⏱ metering 
    opened by MarkMcCaskey 37
  • Replacement for trampolines in C API

    Replacement for trampolines in C API

    In an earlier version of the C API the trampoline functions were marked as deprecated. Now it seems they've been deleted, and I can't find their replacement. The deprecation message mentioned exposing DynamicFunc::new to the C API. Any word on that?

    Is it possible/advisable to use wasmer_import_func_new directly? The documentation for that function isn't very clear, so I'm not sure how my imported function maps to the void (*func)(void *data).

    ❓ question 
    opened by liamappelbe 36
  • Test cross compilation in CI

    Test cross compilation in CI

    Work in progress, we don't assert on the output at all, just testing to see if this will work in CI

    Review

    • [ ] Add a short description of the the change to the CHANGELOG.md file
    opened by MarkMcCaskey 35
  • feat(makefile) Simplify the prelude + `build-capi` includes all available compilers

    feat(makefile) Simplify the prelude + `build-capi` includes all available compilers

    Description

    This PR contains 2 parts. Don't be afraid, it's very small changes, and it's easy to follow.

    How to Review

    I recommend to review the PR patch by patch, it's way simpler than reading the final diff. Note that the matrix (the table in the Makefile documentation) is updated patch after patch, so this part should ideally be reviewed in the final diff.

    The final Makefile is here, https://github.com/Hywan/wasmer/blob/feat-c-api-build-lib-with-all-compilers-and-engines/Makefile, and it's even easier to read now.

    Part 1, The Matrix

    The set of patches writes a matrix: platform x architecture x compiler x engine x libc, and for each combination, says if it's supported or not.

    This set of patches updates the “prelude” of the Makefile to make it clearler and easier to read, regarding the matrix.

    1. adb7c59, This patch removes the UNAME_S and ARCH variables. It replaces them with IS_WINDOWS, IS_LINUX, IS_DARWIN, IS_AMD64, and IS_AARCH64 variables. It makes the code easier to read and simpler to maintain.

      This patch also documents the large matrix of platform x architecture x compiler x engine x lib support.

    2. 659bdb0, This patch removes a possible duplication of the llvm value inside the compilers variable if both LLVM 10 and 11 are available.

      This patch also checks for LLVM 11 before LLVM 10.

    3. 7b38752, This patch moves all the assignments of compilers in the same place for the sake of clarity.

    4. 006c653, This patch renames the test_compilers_engines variable to compilers_engines. We can use this variable for test purposes, but more importantly, it defines all the pair (compiler, engine), make it that clear.

      I've decided to separate this patch from the followings to facilitate the review.

    5. 67a1dfe, This patch handles the (cranelift, *) pairs in a single place.

    6. f3c729d, This patch handles the (llvm, *) pairs in a single place.

    7. 1054e51, This patch handles the (singlepass, *) pairs in a single place.

    8. 07e48b4 , This patch adds the HAS_<compiler> variables, it makes the code easier to read.

    9. 06d543a, 660daba, 95dcb04, 6721769, and 62c7889 are small improvements.

    10. 0a0b7f8, This patch introduces ENABLE_<compiler> variables, that can be overriden by the user to force to enable or to disable a compiler. They replace the HAS_<compiler> variables.

    Part 2, libwasmer includes all available compilers

    1. 387a753, This patch updates the build-capi rule to no longer uses Cranelift by default, but to include/enable all the available compilers.

    2. f846a0d, This patch explains test-capi with a little bit more details.

      This patch also introduces the test-capi-all rule. Why? test-capi will continue to build and to test the C API with a single compiler enabled, so that it's the default one that will be used by the tests. But we also want to test the libwasmer we are giving to the users! That's what test-capi-all does. Notice that the test-capi rule depends test-capi-all, so we don't need to update the CI.

    Closes https://github.com/wasmerio/wasmer/pull/2063

    Review

    • [x] Add a short description of the the change to the CHANGELOG.md file
    📦 lib-c-api 🧪 tests 📚 documentation 🤖 bot 
    opened by Hywan 33
  • [SINGLEPASS] Added a special case on SSE4.2 backend when dst == src1

    [SINGLEPASS] Added a special case on SSE4.2 backend when dst == src1

    Description

    Singlepass SSE4.2 backend have to convert 3-ways AVX operator to 2-ways SSE operator. Some cases where dst == src1 were not handled and would panic. This should fix those cases

    For ticket #3461

    opened by ptitSeb 0
  • panic (left != right) left: XMM3,  right: XMM3'

    panic (left != right) left: XMM3, right: XMM3'

    Describe the bug

    I run a simple instance of WASM compiled using singlepass using the following features :

        const FEATURES: Features = Features {
            threads: false,
            reference_types: false,
            simd: false,           
            bulk_memory: true,     
            multi_value: false,   
            tail_call: false,      
            module_linking: false, 
            multi_memory: false,   
            memory64: false,      
            exceptions: false,
            relaxed_simd: false,
            extended_const: false,
        };
    

    Steps to reproduce

    I'm having an error on a VPS where I have this information about the CPU :

    ***@***.***:~# cat /proc/cpuinfo
    processor       : 0
    vendor_id       : AuthenticAMD
    cpu family      : 6
    model           : 13
    model name      : QEMU Virtual CPU version 2.5+
    stepping        : 3
    microcode       : 0x1000065
    cpu MHz         : 1996.230
    cache size      : 512 KB
    physical id     : 0
    siblings        : 8
    core id         : 0
    cpu cores       : 8
    apicid          : 0
    initial apicid  : 0
    fpu             : yes
    fpu_exception   : yes
    cpuid level     : 13
    wp              : yes
    flags           : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm nopl cpuid tsc_known_freq pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 x2apic popcnt aes xsave rdrand hypervisor lahf_lm cmp_legacy abm 3dnowprefetch ssbd ibpb vmmcall arch_capabilities
    bugs            : fxsave_leak sysret_ss_attrs null_seg spectre_v1 spectre_v2 spec_store_bypass
    bogomips        : 3992.46
    TLB size        : 1024 4K pages
    clflush size    : 64
    cache_alignment : 64
    address sizes   : 40 bits physical, 48 bits virtual
    ...
    

    Expected behavior

    Run without error

    Actual behavior

    thread '' panicked at 'assertion failed: (left != right)
     left: XMM3,
     right: XMM3', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/wasmer-compiler-singlepass-3.1.0/src/emitter_x64.rs:1752:40
    

    Additional context

    I'm sorry I can't provide source that I'm using as it's part of a big project. I assume it's an error with the CPU architecture but if you can give me details it could be great.

    opened by AurelienFT 4
  • Cross-compiling from Windows to Windows doesn't work

    Cross-compiling from Windows to Windows doesn't work

    This is a followup for https://github.com/wasmerio/wasmer/pull/3430 - currently the test_cross_compile_python_windows and test_wasmer_create_exe_pirita_works don't work on windows when compiling from Windows to Windows:

    x86_64-windows-gnu target cranelift                                                                                                                                                                                   
    Error: linking failed with: stdout: Compiler: cranelift                                                                                                                                                               
    Target: x86_64-unknown-windows-gnu                                                                                                                                                                                    
    Format: Symbols                                                                                                                                                                                                       
    Using path `C:\Users\felix\wasmer\package\cache\wasmer-windows-gnu64\lib\libwasmer.a` as libwasmer path.                                                                                                              
                                                                                                                                                                                                                          
                                                                                                                                                                                                                          
    stderr: C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.10.0\zig.exe clang C:\Users\felix\AppData\Local\Temp\.tmpnAprtL\wasmer_main.c -fno-caret-diagnostics -target x86_64-unknown-windows-gnu -nostdinc
     -fno-spell-checking -isystem C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.10.0\lib\include -isystem C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.10.0\lib\libc\include\x86_64-windows
    -gnu -isystem C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.10.0\lib\libc\include\generic-mingw -isystem C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.10.0\lib\libc\include\x86_64-wind
    ows-any -isystem C:\ProgramData\chocolatey\lib\zig\tools\zig-windows-x86_64-0.10.0\lib\libc\include\any-windows-any -Xclang -target-cpu -Xclang x86-64 -Xclang -target-feature -Xclang -16bit-mode -Xclang -target-fea
    ture -Xclang -32bit-mode -Xclang -target-feature -Xclang -3dnow -Xclang -target-feature -Xclang -3dnowa -Xclang -target-feature -Xclang +64bit -Xclang -target-feature -Xclang -adx -Xclang -target-feature -Xclang -a
    es -Xclang -target-feature -Xclang -amx-bf16 -Xclang -target-feature -Xclang -amx-int8 -Xclang -target-feature -Xclang -amx-tile -Xclang -target-feature -Xclang -avx -Xclang -target-feature -Xclang -avx2 -Xclang -t
    arget-feature -Xclang -avx512bf16 -Xclang -target-feature -Xclang -avx512bitalg -Xclang -target-feature -Xclang -avx512bw -Xclang -target-feature -Xclang -avx512cd -Xclang -target-feature -Xclang -avx512dq -Xclang 
    -target-feature -Xclang -avx512er -Xclang -target-feature -Xclang -avx512f -Xclang -target-feature -Xclang -avx512fp16 -Xclang -target-feature -Xclang -avx512ifma -Xclang -target-feature -Xclang -avx512pf -Xclang -
    target-feature -Xclang -avx512vbmi -Xclang -target-feature -Xclang -avx512vbmi2 -Xclang -target-feature -Xclang -avx512vl -Xclang -target-feature -Xclang -avx512vnni -Xclang -target-feature -Xclang -avx512vp2inters
    ect -Xclang -target-feature -Xclang -avx512vpopcntdq -Xclang -target-feature -Xclang -avxvnni -Xclang -target-feature -Xclang -bmi -Xclang -target-feature -Xclang -bmi2 -Xclang -target-feature -Xclang -branchfusion
     -Xclang -target-feature -Xclang -cldemote -Xclang -target-feature -Xclang -clflushopt -Xclang -target-feature -Xclang -clwb -Xclang -target-feature -Xclang -clzero -Xclang -target-feature -Xclang +cmov -Xclang -ta
    rget-feature -Xclang -crc32 -Xclang -target-feature -Xclang -cx16 -Xclang -target-feature -Xclang +cx8 -Xclang -target-feature -Xclang -enqcmd -Xclang -target-feature -Xclang -ermsb -Xclang -target-feature -Xclang 
    -f16c -Xclang -target-feature -Xclang -false-deps-getmant -Xclang -target-feature -Xclang -false-deps-lzcnt-tzcnt -Xclang -target-feature -Xclang -false-deps-mulc -Xclang -target-feature -Xclang -false-deps-mullq -
    Xclang -target-feature -Xclang -false-deps-perm -Xclang -target-feature -Xclang -false-deps-popcnt -Xclang -target-feature -Xclang -false-deps-range -Xclang -target-feature -Xclang -fast-11bytenop -Xclang -target-f
    eature -Xclang -fast-15bytenop -Xclang -target-feature -Xclang -fast-7bytenop -Xclang -target-feature -Xclang -fast-bextr -Xclang -target-feature -Xclang -fast-gather -Xclang -target-feature -Xclang -fast-hops -Xcl
    ang -target-feature -Xclang -fast-lzcnt -Xclang -target-feature -Xclang -fast-movbe -Xclang -target-feature -Xclang -fast-scalar-fsqrt -Xclang -target-feature -Xclang -fast-scalar-shift-masks -Xclang -target-featur
    e -Xclang -fast-shld-rotate -Xclang -target-feature -Xclang -fast-variable-crosslane-shuffle -Xclang -target-feature -Xclang -fast-variable-perlane-shuffle -Xclang -target-feature -Xclang -fast-vector-fsqrt -Xclang
     -target-feature -Xclang -fast-vector-shift-masks -Xclang -target-feature -Xclang -fma -Xclang -target-feature -Xclang -fma4 -Xclang -target-feature -Xclang -fsgsbase -Xclang -target-feature -Xclang -fsrm -Xclang -
    target-feature -Xclang +fxsr -Xclang -target-feature -Xclang -gfni -Xclang -target-feature -Xclang -harden-sls-ijmp -Xclang -target-feature -Xclang -harden-sls-ret -Xclang -target-feature -Xclang -hreset -Xclang -t
    arget-feature -Xclang -idivl-to-divb -Xclang -target-feature -Xclang +idivq-to-divl -Xclang -target-feature -Xclang -invpcid -Xclang -target-feature -Xclang -kl -Xclang -target-feature -Xclang -lea-sp -Xclang -targ
    et-feature -Xclang -lea-uses-ag -Xclang -target-feature -Xclang -lvi-cfi -Xclang -target-feature -Xclang -lvi-load-hardening -Xclang -target-feature -Xclang -lwp -Xclang -target-feature -Xclang -lzcnt -Xclang -targ
    et-feature -Xclang +macrofusion -Xclang -target-feature -Xclang +mmx -Xclang -target-feature -Xclang -movbe -Xclang -target-feature -Xclang -movdir64b -Xclang -target-feature -Xclang -movdiri -Xclang -target-featur
    e -Xclang -mwaitx -Xclang -target-feature -Xclang +nopl -Xclang -target-feature -Xclang -pad-short-functions -Xclang -target-feature -Xclang -pclmul -Xclang -target-feature -Xclang -pconfig -Xclang -target-feature 
    -Xclang -pku -Xclang -target-feature -Xclang -popcnt -Xclang -target-feature -Xclang -prefer-128-bit -Xclang -target-feature -Xclang -prefer-256-bit -Xclang -target-feature -Xclang -prefer-mask-registers -Xclang -t
    arget-feature -Xclang -prefetchwt1 -Xclang -target-feature -Xclang -prfchw -Xclang -target-feature -Xclang -ptwrite -Xclang -target-feature -Xclang -rdpid -Xclang -target-feature -Xclang -rdpru -Xclang -target-feat
    ure -Xclang -rdrnd -Xclang -target-feature -Xclang -rdseed -Xclang -target-feature -Xclang -retpoline -Xclang -target-feature -Xclang -retpoline-external-thunk -Xclang -target-feature -Xclang -retpoline-indirect-br
    anches -Xclang -target-feature -Xclang -retpoline-indirect-calls -Xclang -target-feature -Xclang -rtm -Xclang -target-feature -Xclang -sahf -Xclang -target-feature -Xclang -sbb-dep-breaking -Xclang -target-feature 
    -Xclang -serialize -Xclang -target-feature -Xclang -seses -Xclang -target-feature -Xclang -sgx -Xclang -target-feature -Xclang -sha -Xclang -target-feature -Xclang -shstk -Xclang -target-feature -Xclang +slow-3ops-
    lea -Xclang -target-feature -Xclang +slow-incdec -Xclang -target-feature -Xclang -slow-lea -Xclang -target-feature -Xclang -slow-pmaddwd -Xclang -target-feature -Xclang -slow-pmulld -Xclang -target-feature -Xclang 
    -slow-shld -Xclang -target-feature -Xclang -slow-two-mem-ops -Xclang -target-feature -Xclang -slow-unaligned-mem-16 -Xclang -target-feature -Xclang -slow-unaligned-mem-32 -Xclang -target-feature -Xclang -soft-float
     -Xclang -target-feature -Xclang +sse -Xclang -target-feature -Xclang +sse2 -Xclang -target-feature -Xclang -sse3 -Xclang -target-feature -Xclang -sse4.1 -Xclang -target-feature -Xclang -sse4.2 -Xclang -target-feat
    ure -Xclang -sse4a -Xclang -target-feature -Xclang -sse-unaligned-mem -Xclang -target-feature -Xclang -ssse3 -Xclang -target-feature -Xclang -tagged-globals -Xclang -target-feature -Xclang -tbm -Xclang -target-feat
    ure -Xclang -tsxldtrk -Xclang -target-feature -Xclang -uintr -Xclang -target-feature -Xclang -use-glm-div-sqrt-costs -Xclang -target-feature -Xclang -use-slm-arith-costs -Xclang -target-feature -Xclang -vaes -Xclan
    g -target-feature -Xclang -vpclmulqdq -Xclang -target-feature -Xclang +vzeroupper -Xclang -target-feature -Xclang -waitpkg -Xclang -target-feature -Xclang -wbnoinvd -Xclang -target-feature -Xclang -widekl -Xclang -
    target-feature -Xclang +x87 -Xclang -target-feature -Xclang -xop -Xclang -target-feature -Xclang -xsave -Xclang -target-feature -Xclang -xsavec -Xclang -target-feature -Xclang -xsaveopt -Xclang -target-feature -Xcl
    ang -xsaves -Wno-pragma-pack -mred-zone -fomit-frame-pointer -fno-stack-protector -DNDEBUG -O2 -funwind-tables -gcodeview -MD -MV -MF C:\Users\felix\AppData\Local\zig\tmp\dfff3e6a2243a970-wasmer_main.obj.d -I C:\Us
    ers\felix\AppData\Local\Temp\.tmpnAprtL\include -I C:\Users\felix\wasmer\package\cache\wasmer-windows-gnu64\include -c -o C:\Users\felix\AppData\Local\zig\tmp\dfff3e6a2243a970-wasmer_main.obj                       
    lld-link -ERRORLIMIT:0 -NOLOGO -DEBUG -STACK:16777216 -MACHINE:X64 -INCLUDE:_tls_index -OUT:C:\Users\felix\AppData\Local\Temp\.tmpnAprtL\wasmer_main.exe -IMPLIB:C:\Users\felix\AppData\Local\Temp\.tmpnAprtL\wasmer_m
    ain.lib C:\Users\felix\AppData\Local\Temp\.tmpnAprtL\atoms\python.o C:\Users\felix\AppData\Local\Temp\.tmpnAprtL\volumes\volume.o C:\Users\felix\wasmer\package\cache\wasmer-windows-gnu64\lib\libwasmer.a C:\Users\fe
    lix\wasmer\package\cache\wasmer-windows-gnu64\winsdk\ADVAPI32.lib C:\Users\felix\wasmer\package\cache\wasmer-windows-gnu64\winsdk\BCRYPT.lib C:\Users\felix\wasmer\package\cache\wasmer-windows-gnu64\winsdk\KERNEL32.
    lib C:\Users\felix\wasmer\package\cache\wasmer-windows-gnu64\winsdk\USERENV.lib C:\Users\felix\wasmer\package\cache\wasmer-windows-gnu64\winsdk\WS2_32.lib C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e3610
    18b5fe54\wasmer_main.obj -lldmingw -ALTERNATENAME:__image_base__=__ImageBase C:\Users\felix\AppData\Local\zig\o\48af5ddab4e8f997dfa4c14ea5005f82\crt2.obj C:\Users\felix\AppData\Local\zig\o\0445965f49d5fd2da2727960e
    32d1404\mingw32.lib C:\Users\felix\AppData\Local\zig\o\a16c0e115e5585a30924c2a45c58da05\mingwex.lib C:\Users\felix\AppData\Local\zig\o\04affbc1f98d63d3d2fe0f0213885f2d\msvcrt-os.lib C:\Users\felix\AppData\Local\zig
    \o\87704c2a3ef1dfd645a38c6de082b066\advapi32.lib C:\Users\felix\AppData\Local\zig\o\6ea6398988874157b543ec6c0e760526\kernel32.lib C:\Users\felix\AppData\Local\zig\o\8869aaaa26f9fd370718fc79c7c92455\msvcrt.lib C:\Us
    ers\felix\AppData\Local\zig\o\e0ca1e17029bc7872ac3d7daefc7095f\ntdll.lib C:\Users\felix\AppData\Local\zig\o\3c86093ac61037d31eaf8b0439a7a5b7\shell32.lib C:\Users\felix\AppData\Local\zig\o\d420b3033236ebc77d00e7d4dc
    aa6457\user32.lib                                                                                                                                                                                                     
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_module_deserialize (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.13
    .rcgu.o)) [LNK4217]                                                                                                                                                                                                   
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_config_new (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.13.rcgu.o)
    ) [LNK4217]                                                                                                                                                                                                           
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_engine_new_with_config (defined in libwasmer.a(wasmer.wasmer.427e55a0-cg
    u.13.rcgu.o)) [LNK4217]                                                                                                                                                                                               
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_store_new (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.13.rcgu.o))
     [LNK4217]                                                                                                                                                                                                            
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_instance_new (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.14.rcgu.
    o)) [LNK4217]                                                                                                                                                                                                         
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_instance_exports (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.14.r
    cgu.o)) [LNK4217]                                                                                                                                                                                                     
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_extern_as_memory (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.8.rc
    gu.o)) [LNK4217]                                                                                                                                                                                                      
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_func_call (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.10.rcgu.o))
     [LNK4217]                                                                                                                                                                                                            
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_trap_message (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.8.rcgu.o
    )) [LNK4217]                                                                                                                                                                                                          
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_trap_delete (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.8.rcgu.o)
    ) [LNK4217]                                                                                                                                                                                                           
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_extern_vec_delete (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.8.r
    cgu.o)) [LNK4217]                                                                                                                                                                                                     
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_instance_delete (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.14.rc
    gu.o)) [LNK4217]                                                                                                                                                                                                      
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_module_delete (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.13.rcgu
    .o)) [LNK4217]                                                                                                                                                                                                        
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_store_delete (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.13.rcgu.
    o)) [LNK4217]                                                                                                                                                                                                         
    lld-link: warning: C:\Users\felix\AppData\Local\zig\o\8ba359527eaab204f49e361018b5fe54\wasmer_main.obj: locally defined symbol imported: wasm_engine_delete (defined in libwasmer.a(wasmer.wasmer.427e55a0-cgu.13.rcgu
    .o)) [LNK4217]                                                                                                                                                                                                        
    lld-link: error: undefined symbol: _Unwind_Resume                                                                                                                                                                     
    >>> referenced by libwasmer.a(wasmer.wasmer.427e55a0-cgu.9.rcgu.o):(_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::fold::h1c21c71bff7c2815)                  
    >>> referenced by libwasmer.a(wasmer.wasmer.427e55a0-cgu.9.rcgu.o):(_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::fold::h4c08e499252a78ba)                  
    >>> referenced by libwasmer.a(wasmer.wasmer.427e55a0-cgu.9.rcgu.o):(_$LT$core..iter..adapters..map..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::fold::h6f15da45ac2d474f)                  
    >>> referenced 6485 more times                                                                                                                                                                                        
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_GetTextRelBase                                                                                                                                                             
    >>> referenced by library\panic_unwind\src/gcc.rs:311                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h120afaf66be0f181)                            
    >>> referenced by library\panic_unwind\src/gcc.rs:311                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::find_eh_action::_$u7b$$u7b$closure$u7d$$u7d$::h5cbee68fbb2e54a5)                             
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_GetDataRelBase                                                                                                                                                             
    >>> referenced by library\panic_unwind\src/gcc.rs:312                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h46860d7ddd1c529e)                            
    >>> referenced by library\panic_unwind\src/gcc.rs:312                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::find_eh_action::_$u7b$$u7b$closure$u7d$$u7d$::h9dfe4c779f0c2792)                             
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_DeleteException                                                                                                                                                            
    >>> referenced by library\panic_unwind\src/gcc.rs:78                                                                                                                                                                  
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(__rust_panic_cleanup)                                                                                                
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_RaiseException                                                                                                                                                             
    >>> referenced by library\panic_unwind\src/gcc.rs:62                                                                                                                                                                  
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(__rust_start_panic)                                                                                                  
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_GetLanguageSpecificData                                                                                                                                                    
    >>> referenced by library\panic_unwind\src/gcc.rs:303                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::rust_eh_personality_impl::hb352fbd3e44c33d1)                                                 
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_GetIPInfo                                                                                                                                                                  
    >>> referenced by library\panic_unwind\src/gcc.rs:305                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::rust_eh_personality_impl::hb352fbd3e44c33d1)                                                 
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_GetRegionStart                                                                                                                                                             
    >>> referenced by library\panic_unwind\src/gcc.rs:310                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::rust_eh_personality_impl::hb352fbd3e44c33d1)                                                 
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_SetGR                                                                                                                                                                      
    >>> referenced by library\panic_unwind\src/gcc.rs:254                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::rust_eh_personality_impl::hb352fbd3e44c33d1)                                                 
    >>> referenced by library\panic_unwind\src/gcc.rs:256                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::rust_eh_personality_impl::hb352fbd3e44c33d1)                                                 
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _Unwind_SetIP                                                                                                                                                                      
    >>> referenced by library\panic_unwind\src/gcc.rs:257                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(panic_unwind::real_imp::rust_eh_personality_impl::hb352fbd3e44c33d1)                                                 
                                                                                                                                                                                                                          
    lld-link: error: undefined symbol: _GCC_specific_handler                                                                                                                                                              
    >>> referenced by library\panic_unwind\src/gcc.rs:276                                                                                                                                                                 
    >>>               libwasmer.a(panic_unwind-abcb1ca87a57a92a.panic_unwind.6f51e6e7-cgu.0.rcgu.o):(rust_eh_personality)                                                                                                 
    error: could not copy from C:\Users\felix\AppData\Local\Temp\.tmpnAprtL\wasmer_main.exe to C:\Users\felix\AppData\Local\Temp\.tmp7g3Pvd\x86_64-windows-gnu-python: The system cannot find the file specified. (os erro
    r 2)                                                                                                                                                                                                                                                                                                                                                                                                                                   
    

    This is because zig cannot build libunwind / libcxxabi on Windows when adding -lunwind to zig build-exe:

    error(compilation): clang failed with stderr: zig: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
    zig: warning: argument unused during compilation: '-nostdinc++' [-Wunused-command-line-argument]
    In file included from C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/cxa_aux_runtime.cpp:14:
    In file included from C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxx\include/typeinfo:76:
    C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\include/vcruntime_typeinfo.h:121:13: error: target of using declaration conflicts with declaration already in scope
    C:\Program Files (x86)\Microsoft Visual Studio\[2019](https://github.com/wasmerio/wasmer/actions/runs/3824129197/jobs/6506132267#step:12:2020)\Enterprise\VC\Tools\MSVC\14.29.30133\include/vcruntime_typeinfo.h:69:7: note: target of using declaration
    C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\include/cxxabi.h:30:27: note: conflicting declaration
    
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/stdlib_typeinfo.cpp:1:1: unable to build C object: clang exited with code 1
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/stdlib_new_delete.cpp:1:1: unable to build C object: clang exited with code 1
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/stdlib_exception.cpp:1:1: unable to build C object: clang exited with code 1
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/stdlib_stdexcept.cpp:1:1: unable to build C object: clang exited with code 1
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/cxa_handlers.cpp:1:1: unable to build C object: clang exited with code 1
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/cxa_guard.cpp:1:1: unable to build C object: clang exited with code 1
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/cxa_exception.cpp:1:1: unable to build C object: clang exited with code 1
    error(compilation): C:\hostedtoolcache\windows\zig\zig-windows-x86_64-0.10.0\x64\lib\libcxxabi\src/cxa_aux_runtime.cpp:1:1: unable to build C object: clang exited with code 1
    error: unable to build libunwind: BuildingLibCObjectFailed
    error: unable to build libcxxabi: BuildingLibCObjectFailed
    

    We could work around this if we build windows-gnu/libwasmer.a without any panicking / unwinding support, in order to do this, you'd have to use:

    RUSTFLAGS=-Cpanic=abort 
    cargo +nightly build --release 
    -Zbuild-std=std,panic_abort  
    -Zbuild-std-features=panic_immediate_abort 
    --target x86_64-pc-windows-gnu 
    --manifest-path lib/c-api/Cargo.toml 
    --no-default-features 
    --features wat,compiler,wasi,middlewares,webc_runner 
    --features cranelift,singlepass,wasmer-artifact-create,static-artifact-create,wasmer-artifact-load,static-artifact-load
    

    ... and then specify it with:

    ./target/release/wasmer create-exe ./lib/c-api/examples/assets/qjs.wasm 
    -o ./js.exe 
    --target x86_64-windows-gnu 
    --use-wasmer-release https://github.com/wasmerio/wasmer/files/10337786/wasmer-gnu64-2.tar.gz
    
    opened by fschutt 0
  • Improve WASM Workload Testing Workflow

    Improve WASM Workload Testing Workflow

    Currently it is somewhat cumbersome to add new Webassembly tests.

    We should:

    • Improve the workflow for adding Rust tests that compile to WASM

    • Improve the workflow for adding WAT tests

    • Document the process for adding and running new tests

    🧪 tests priority-medium build-system 
    opened by theduke 0
  • Merge test.yaml and build.yaml

    Merge test.yaml and build.yaml

    In order to release a new version, we currently still use the old build.yaml file, which has the same steps as in the test.yaml file, except for the last "release" step, which is missing from test.yaml. The build.yaml is a lot slower than the test.yaml (45 minutes vs 20 minutes).

    We should merge them into one workflow and copy the release step to the test.yaml.

    🎉 enhancement 
    opened by fschutt 0
  • Implement a function to return the error code of a wasi_trap_t

    Implement a function to return the error code of a wasi_trap_t

    Currently if we call wasm_func_call on the _start function, we need to have a way to check whether the exit code exited with 0, as it's currently the case for WASI.

    own wasm_trap_t *trap = wasm_func_call(start_function, &args, &results);
    

    This should be done in the 3.2.0-beta release so that we can link to the new API in the 3.2.0 release.

    🎉 enhancement 📦 lib-c-api priority-medium 
    opened by fschutt 0
Releases(v3.1.0)
Owner
Wasmer
Wasmer ❤️ Open Source
Wasmer
A template project to demonstrate how to run WebAssembly functions as sidecar microservices in dapr

Demo and tutorials Live Demo | Tutorial article | Tutorial video 1. Introduction DAPR is a portable, event-driven runtime that makes it easy for any d

Second State 184 Dec 29, 2022
WebAssembly to Lua translator, with runtime

This is a WIP (read: absolutely not ready for serious work) tool for translating WebAssembly into Lua. Support is specifically for LuaJIT, with the se

null 43 Dec 31, 2022
Wasmtime - Standalone JIT-style runtime for WebAssembly, using Cranelift

wasmtime A standalone runtime for WebAssembly A Bytecode Alliance project Guide | Contributing | Website | Chat Installation The Wasmtime CLI can be i

Bytecode Alliance 11.1k Jan 2, 2023
Standalone JIT-style runtime for WebAssembly, using Cranelift

wasmtime A standalone runtime for WebAssembly A Bytecode Alliance project Guide | Contributing | Website | Chat Installation The Wasmtime CLI can be i

Bytecode Alliance 11.1k Dec 31, 2022
Lunatic is an Erlang-inspired runtime for WebAssembly

Lunatic is a universal runtime for fast, robust and scalable server-side applications. It's inspired by Erlang and can be used from any language that

Lunatic 3.7k Jan 9, 2023
Client for integrating private analytics in fast and reliable libraries and apps using Rust and WebAssembly

TelemetryDeck Client Client for integrating private analytics in fast and reliable libraries and apps using Rust and WebAssembly The library provides

Konstantin 2 Apr 20, 2022
A console and web-based Gomoku written in Rust and WebAssembly

?? rust-gomoku A console and web-based Gomoku written in Rust and WebAssembly Getting started with cargo & npm Install required program, run # install

namkyu1999 2 Jan 4, 2022
darkforest is a console and web-based Roguelike written in Rust and WebAssembly.

darkforest darkforest is a console and web-based Roguelike written in Rust and WebAssembly. Key Features TBA Quick Start TBA How To Contribute Contrib

Chris Ohk 5 Oct 5, 2021
Lumen - A new compiler and runtime for BEAM languages

An alternative BEAM implementation, designed for WebAssembly

Lumen 3.1k Dec 26, 2022
Simple file sharing with client-side encryption, powered by Rust and WebAssembly

Hako Simple file sharing with client-side encryption, powered by Rust and WebAssembly Not feature-packed, but basic functionalities are just working.

Jaehyeon Park 30 Nov 25, 2022
A handy calculator, based on Rust and WebAssembly.

qubit ?? Visit Website To Use Calculator Example ?? Visit Website To Use Calculator 2 + 2

Abhimanyu Sharma 55 Dec 26, 2022
Rust WebGL2 wrapper with a focus on making high-performance WebAssembly graphics code easier to write and maintain

Limelight Limelight is a WebGL2 wrapper with a focus on making high-performance WebAssembly graphics code easier to write and maintain. demo.mov live

drifting in space 27 Dec 30, 2022
Compiler infrastructure and toolchain library for WebAssembly

Binaryen Binaryen is a compiler and toolchain infrastructure library for WebAssembly, written in C++. It aims to make compiling to WebAssembly easy, f

WebAssembly 6.1k Dec 30, 2022
Zaplib is an open-source library for speeding up web applications using Rust and WebAssembly.

⚡ Zaplib Zaplib is an open-source library for speeding up web applications using Rust and WebAssembly. It lets you write high-performance code in Rust

Zaplib 1.2k Jan 5, 2023
A template for kick starting a Rust and WebAssembly project using wasm-pack.

A template for kick starting a Rust and WebAssembly project using wasm-pack.

Haoxi Tan 1 Feb 14, 2022
Rust-based WebAssembly bindings to read and write Apache Parquet files

parquet-wasm WebAssembly bindings to read and write the Parquet format to Apache Arrow. This is designed to be used alongside a JavaScript Arrow imple

Kyle Barron 103 Dec 25, 2022
A simple Rust and WebAssembly real-time implementation of the Vigénere Cipher utilizing the Sycamore reactive library.

WebAssembly Vigenère Cipher A simple Rust and WebAssembly real-time implementation of the Vigenère Cipher utilizing the Sycamore reactive library, Tru

Rodrigo Santiago 6 Oct 11, 2022
An experimental Dapr SDK in Rust. It is designed to run in WasmEdge applications.

Dapr SDK for WebAssembly Written in Rust, the dapr_sdk_wasi crate can be compiled into WebAssembly and runs in the WasmEdge Runtime. Introduction | Ho

Second State 18 Jan 3, 2023
Wasm runtime written in Rust

Wasm runtime written in Rust

Teppei Fukuda 1 Oct 29, 2021