11 releases (3 stable)
1.0.2 | Feb 5, 2021 |
---|---|
1.0.1 | Jan 13, 2021 |
1.0.0-rc1 | Dec 23, 2020 |
1.0.0-alpha5 | Nov 6, 2020 |
1.0.0-alpha01.0 | Aug 15, 2020 |
#1631 in WebAssembly
753 downloads per month
Used in 2 crates
1MB
18K
SLoC
wasmer-engine-native
The Wasmer Native engine is usable with any compiler implementation
based on wasmer-compiler
that is able to emit
Position-independent Code (PIC).
After the compiler generates the machine code for the functions, the
Native engine generates a shared object file and links it via
dlsym
so it can be usable by the wasmer
API.
This allows Wasmer to achieve blazing fast native startup times.
Note: you can find a full working example using the Native engine here.
Difference with wasmer-engine-jit
The Native Engine and JIT engine mainly differ on how the Modules are loaded/stored. Using the same compilers, both will have the same runtime speed.
However, the Native engine uses the Operating System shared library loader (via dlopen
)
and as such is able to achieve a much faster startup time when deserializing a serialized
Module.
Requirements
The wasmer-engine-native
crate requires a linker available on your
system to generate the shared object file.
We recommend having gcc
or clang
installed.
Note: when cross-compiling to other targets,
clang
will be the default command used for compiling.
You can install LLVM (that provides clang
) easily on your
Debian-like system via this command:
bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"
Or in macOS:
brew install llvm
Or via any of the pre-built binaries that LLVM offers.
Dependencies
~9–19MB
~293K SLoC