Git Product home page Git Product logo

wavix's Introduction

BSD license GitHub repo Discord Azure Build Status

WAVM

Getting Started | Building WAVM from Source | Exploring the WAVM source

WAVM is a WebAssembly virtual machine, designed for use in non-browser applications.

Fast

WAVM uses LLVM to compile WebAssembly code to machine code with close to native performance. It can even beat native performance in some cases, thanks to the ability to generate machine code tuned for the exact CPU that is running the code.

WAVM also leverages virtual memory and signal handlers to execute WebAssembly's bounds-checked memory accesses at the same cost as a native, unchecked memory access.

Safe

WAVM prevents WebAssembly code from accessing state outside of WebAssembly virtual machine*, or calling native code that you do not explicitly link with the WebAssembly module.

* WAVM is vulnerable to some side-channel attacks, such as Spectre variant 2. WAVM may add further mitigations for specific side-channel attacks, but it's impractical to guard against all such attacks. You should use another form of isolation, such as OS processes, to protect sensitive data from untrusted WebAssembly code.

WebAssembly 1.0+

WAVM fully supports WebAssembly 1.0, plus many proposed extensions to it:

Portable

WAVM is written in portable C/C++, with a small amount of architecture-specific assembly and LLVM IR generation code.

WAVM is tested on and fully supports X86-64 Windows, MacOS, and Linux. It is designed to run on any POSIX-compatible system, but is not routinely tested on other systems.

Support for AArch64 is a work-in-progress. WAVM mostly works on AArch64 Linux, but with some known bugs with handling WebAssembly stack overflow and partially out-of-bounds stores.

WAVM's runtime requires a 64-bit virtual address space, and so is not portable to 32-bit hosts. However, WAVM's assembler and disassembler work on 32-bit hosts.

Portability Matrix

wavix's People

Contributors

andrewscheidecker avatar shillaker 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

Watchers

 avatar  avatar  avatar  avatar

wavix's Issues

wasm-ld: error: unable to find library -lc++

Hi Andrew,

I am trying to build the project in a Ubuntu 18.04 Docker container. Following the README, the compilation fails with this error. Any ideas? Thanks!

-- Install configuration: "RelWithDebInfo"
-- Installing: /root/wavix-build/host/lib/clang/8.0.0/lib/wavix/libclang_rt.builtins-wasm32.a

@@@BUILD_STEP libcxxabi@@@
subprocess.check_call(`cmake -G Ninja /root/Wavix/libcxxabi -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=/root/wavix-build/host/wavix_toolchain.cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=YES -DLIBCXXABI_LIBCXX_PATH=/root/Wav\
ix/libcxx -DLIBCXXABI_LIBCXX_INCLUDES=/root/Wavix/libcxx/include -DLIBCXXABI_ENABLE_STATIC=ON -DLIBCXXABI_ENABLE_SHARED=OFF -DLIBCXXABI_ENABLE_THREADS=ON -DLIBCXXABI_SYSROOT=/root/wavix-build/sys -DLIBCXXABI_USE_COMPILER_RT=ON -DCM\
AKE_INSTALL_PREFIX=/root/wavix-build/sys`, cwd=`/root/wavix-build/libcxxabi`)
-- The CXX compiler identification is Clang 8.0.0
-- The C compiler identification is Clang 8.0.0
-- Check for working CXX compiler: /root/wavix-build/host/bin/clang++
-- Check for working CXX compiler: /root/wavix-build/host/bin/clang++ -- broken
CMake Error at /usr/share/cmake-3.10/Modules/CMakeTestCXXCompiler.cmake:45 (message):
  The C++ compiler

    "/root/wavix-build/host/bin/clang++"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /root/wavix-build/libcxxabi/CMakeFiles/CMakeTmp

    Run Build Command:"/usr/bin/ninja" "cmTC_0116a"
    [1/2] Building CXX object CMakeFiles/cmTC_0116a.dir/testCXXCompiler.cxx.o                                                                                                                                                           
    [2/2] Linking CXX executable cmTC_0116a
    FAILED: cmTC_0116a
    : && /root/wavix-build/host/bin/clang++ --target=wasm32-unknown-wavix --sysroot=/root/wavix-build/host/../sys     CMakeFiles/cmTC_0116a.dir/testCXXCompiler.cxx.o  -o cmTC_0116a   && :
    wasm-ld: error: unable to find library -lc++
    wasm-ld: error: unable to find library -lc++abi
    clang-8: error: lld command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.




  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:21 (project)```

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.