- #1263 Changed the behavior of some WASI syscalls to now handle preopened directories more properly. Changed default
--debug
logging to only show Wasmer-related messages. - #1217 Polymorphic host functions based on dynamic trampoline generation.
- #1252 Allow
/
in wasi--mapdir
wasm path. - #1212 Add support for GDB JIT debugging:
- Add
--generate-debug-info
and-g
flags towasmer run
to generate debug information during compilation. The debug info is passed via the GDB JIT interface to a debugger to allow source-level debugging of Wasm files. Currently only available on clif-backend. - Break public middleware APIs: there is now a
source_loc
parameter that should be passed through if applicable. - Break compiler trait methods such as
feed_local
,feed_event
as well asModuleCodeGenerator::finalize
.
- Add
- #1245 Use Ubuntu 16.04 in CI so that we use an earlier version of GLIBC.
- #1234 Check for unused excluded spectest failures.
- #1232
wasmer-interface-types
has a WAT decoder.
- #1233 Improved Wasmer C API release artifacts.
- #1216
wasmer-interface-types
receives a binary encoder. - #1228 Singlepass cleanup: Resolve several FIXMEs and remove protect_unix.
- #1218 Enable Cranelift verifier in debug mode. Fix bug with table indices being the wrong type.
- #787 New crate
wasmer-interface-types
to implement WebAssembly Interface Types. - #1213 Fixed WASI
fdstat
to detectisatty
properly. - #1192 Use
ExceptionCode
for error representation. - #1191 Fix singlepass miscompilation on
Operator::CallIndirect
. - #1180 Fix compilation for target
x86_64-unknown-linux-musl
. - #1170 Improve the WasiFs builder API with convenience methods for overriding stdin, stdout, and stderr as well as a new sub-builder for controlling the permissions and properties of preopened directories. Also breaks that implementations of
WasiFile
must beSend
-- please file an issue if this change causes you any issues. - #1161 Require imported functions to be
Send
. This is a breaking change that fixes a soundness issue in the API. - #1140 Use
blake3
as default hashing algorithm for caching. - #1129 Standard exception types for singlepass backend.
- Fix bug in wapm related to the
package.wasmer_extra_flags
entry in the manifest
Special thanks to @repi and @srenatus for their contributions!
- #1153 Added Wasmex, an Elixir language integration, to the README
- #1133 New
wasmer_trap
function in the C API, to properly error from within a host function - #1147 Remove
log
andtrace
macros fromwasmer-runtime-core
, removedebug
andtrace
features fromwasmer-*
crates, use thelog
crate for logging and usefern
in the Wasmer CLI binary to output log messages. Colorized output will be enabled automatically if printing to a terminal, to force colorization on or off, set theWASMER_COLOR
environment variable totrue
orfalse
. - #1128 Fix a crash when a host function is missing and the
allow_missing_functions
flag is enabled - #1099 Remove
backend::Backend
fromwasmer_runtime_core
- #1097 Move inline breakpoint outside of runtime backend
- #1095 Update to cranelift 0.52.
- #1092 Add
get_utf8_string_with_nul
toWasmPtr
to read nul-terminated strings from memory. - #1071 Add support for non-trapping float-to-int conversions, enabled by default.
Special thanks to @ethanfrey, @AdamSLevy, @Jasper-Bekkers, @srenatus for their contributions!
- #1078 Increase the maximum number of parameters
Func
can take - #1062 Expose some opt-in Emscripten functions to the C API
- #1032 Change the signature of the Emscripten
abort
function to work with Emscripten 1.38.30 - #1060 Test the capi with all the backends
- #1069 Add function
get_memory_and_data
toCtx
to help prevent undefined behavior and mutable aliasing. It allows accessing memory while borrowing data mutably for theCtx
lifetime. This new function is now being used inwasmer-wasi
. - #1058 Fix minor panic issue when
wasmer::compile_with
called with llvm backend. - #858 Minor panic fix when wasmer binary with
loader
option run a module without exported_start
function. - #1056 Improved
--invoke
args parsing (supportingi32
,i64
,f32
andf32
) in Wasmer CLI - #1054 Improve
--invoke
output in Wasmer CLI - #1053 For RuntimeError and breakpoints, use Box<Any + Send> instead of Box.
- #1052 Fix minor panic and improve Error handling in singlepass backend.
- #1050 Attach C & C++ headers to releases.
- #1033 Set cranelift backend as default compiler backend again, require at least one backend to be enabled for Wasmer CLI
- #1044 Enable AArch64 support in the LLVM backend.
- #1030 Ability to generate
ImportObject
for a specific version WASI version with the C API. - #1028 Introduce strict/non-strict modes for
get_wasi_version
- #1029 Add the “floating”
WasiVersion::Latest
version. - #1006 Fix minor panic issue when
wasmer::compile_with
called with llvm backend - #1009 Enable LLVM verifier for all tests, add new llvm-backend-tests crate.
- #1022 Add caching support for Singlepass backend.
- #1004 Add the Auto backend to enable to adapt backend usage depending on wasm file executed.
- #1068 Various cleanups for the singlepass backend on AArch64.
- #713 Add AArch64 support for singlepass.
- #995 Detect when a global is read without being initialized (emit a proper error instead of panicking)
- #996 Refactored spectests, emtests and wasitests to use default compiler logic
- #992 Updates WAPM version to 0.4.1, fix arguments issue introduced in #990
- #990 Default wasmer CLI to
run
. Wasmer will now attempt to parse unrecognized command line options as if they were applied to the run command:wasmer mywasm.wasm --dir=.
now works! - #987 Fix
runtime-c-api
header files when compiled by gnuc. - #957 Change the meaning of
wasmer_wasi::is_wasi_module
to detect any type of WASI module, add support for new wasi snapshot_preview1 - #934 Simplify float expressions in the LLVM backend.
- #968 Added
--invoke
option to the command - #964 Enable cross-compilation for specific target
- #971 In LLVM backend, use unaligned loads and stores for non-atomic accesses to wasmer memory.
- #960 Fix
runtime-c-api
header files when compiled by clang. - #925 Host functions can be closures with a captured environment.
- #917 Host functions (aka imported functions) may not have
&mut vm::Ctx
as first argument, i.e. the presence of the&mut vm::Ctx
argument is optional. - #915 All backends share the same definition of
Trampoline
(defined inwasmer-runtime-core
).
- #952 Use C preprocessor to properly hide trampoline functions on Windows and non-x86_64 targets.
Special thanks to @newpavlov and @Maxgy for their contributions!
- #942 Deny missing docs in runtime core and add missing docs
- #939 Fix bug causing attempts to append to files with WASI to delete the contents of the file
- #940 Update supported Rust version to 1.38+
- #923 Fix memory leak in the C API caused by an incorrect cast in
wasmer_trampoline_buffer_destroy
- #921 In LLVM backend, annotate all memory accesses with TBAA metadata.
- #883 Allow floating point operations to have arbitrary inputs, even including SNaNs.
- #856 Expose methods in the runtime C API to get a WASI import object
Special thanks to @alocquet for their contributions!
- #898 State tracking is now disabled by default in the LLVM backend. It can be enabled with
--track-state
. - #861 Add descriptions to
unimplemented!
macro in various places - #897 Removes special casing of stdin, stdout, and stderr in WASI. Closing these files now works. Removes
stdin
,stdout
, andstderr
fromWasiFS
, replaced by the methodsstdout
,stdout_mut
, and so on. - #863 Fix min and max for cases involving NaN and negative zero when using the LLVM backend.
Special thanks to @jdanford for their contributions!
- #850 New
WasiStateBuilder
API. small, add misc. breaking changes to existing API (for example, changing the preopen dirs arg onwasi::generate_import_object
fromVec<String>
toVec<Pathbuf>
) - #852 Make minor grammar/capitalization fixes to README.md
- #841 Slightly improve rustdoc documentation and small updates to outdated info in readme files
- #836 Update Cranelift fork version to
0.44.0
- #839 Change supported version to stable Rust 1.37+
- #834 Fix panic when unwraping
wasmer
arguments - #835 Add parallel execution example (independent instances created from the same
ImportObject
andModule
run with rayon) - #834 Fix panic when parsing numerical arguments for no-ABI targets run with the wasmer binary
- #833 Add doc example of using ImportObject's new
maybe_with_namespace
method - #832 Delete unused runtime ABI
- #809 Fix bugs leading to panics in
LocalBacking
. - #831 Add support for atomic operations, excluding wait and notify, to singlepass.
- #822 Update Cranelift fork version to
0.43.1
- #829 Fix deps on
make bench-*
commands; benchmarks don't compile other backends now - #807 Implement Send for
Instance
, breaking change onImportObject
, remove methodget_namespace
replaced withwith_namespace
andmaybe_with_namespace
- #817 Add document for tracking features across backends and language integrations, [docs/feature_matrix.md]
- #823 Improved Emscripten / WASI integration
- #821 Remove patch version on most deps Cargo manifests. This gives Wasmer library users more control over which versions of the deps they use.
- #820 Remove null-pointer checks in
WasmPtr
from runtime-core, re-add them in Emscripten - #803 Add method to
Ctx
to invoke functions by theirTableIndex
- #790 Fix flaky test failure with LLVM, switch to large code model.
- #788 Use union merge on the changelog file.
- #785 Include Apache license file for spectests.
- #786 In the LLVM backend, lower atomic wasm operations to atomic machine instructions.
- #784 Fix help string for wasmer run.
Special thanks to @YaronWittenstein @penberg for their contributions.
- #776 Allow WASI preopened fds to be closed
- #774 Add more methods to the
WasiFile
trait - #772 #770 Handle more internal failures by passing back errors
- #756 Allow NULL parameter and 0 arity in
wasmer_export_func_call
C API - #747 Return error instead of panicking on traps when using the Wasmer binary
- #741 Add validate Wasm fuzz target
- #733 Remove dependency on compiler backends for
middleware-common
- #732 #731 WASI bug fixes and improvements
- #726 Add serialization and deserialization for Wasi State
- #716 Improve portability of install script
- #714 Add Code of Conduct
- #708 Remove unconditional dependency on Cranelift in the C API
- #703 Fix compilation on AArch64 Linux
- #702 Add SharedMemory to Wasmer. Add
--enable-threads
flag, add partial implementation of atomics to LLVM backend. - #698 #690 #687 Fix panics in Emscripten
- #689 Replace
wasmer_runtime_code::memory::Atomic
withstd::sync::atomic
atomics, changing its interface - #680 #673 #669 #660 #659 Misc. runtime and singlepass fixes
- #677 #675 #674 LLVM backend fixes and improvements
- #671 Implement fs polling in
wasi::poll_oneoff
for Unix-like platforms - #656 Move CI to Azure Pipelines
- #650 Implement
wasi::path_rename
, improve WASI FS public api, and allow open files to exist even when the underlying file is deleted - #643 Implement
wasi::path_symlink
and improve WASI FS public api IO error reporting - #608 Implement wasi syscalls
fd_allocate
,fd_sync
,fd_pread
,path_link
,path_filestat_set_times
; update WASI fs API in a WIP way; reduce coupling of WASI code to host filesystem; make debug messages from WASI more readable; improve rights-checking when calling syscalls; implement reference counting on inodes; misc bug fixes and improvements - #616 Create the import object separately from instance instantiation in
runtime-c-api
- #620 Replace one
throw()
withnoexcept
in llvm backend - #618 Implement
InternalEvent::Breakpoint
in the llvm backend to allow metering in llvm - #615 Eliminate
FunctionEnvironment
construction infeed_event()
speeding up to 70% of compilation in clif - #609 Update dependencies
- #602 C api extract instance context from instance
- #590 Error visibility changes in wasmer-c-api
- #589 Make
wasmer_byte_array
fieldspublic
in wasmer-c-api
- #603 Update Wapm-cli, bump version numbers
- #595 Add unstable public API for interfacing with the WASI file system in plugin-like usecases
- #598 LLVM Backend is now supported in Windows
- #599 Fix llvm backend failures in fat spec tests and simd_binaryen spec test.
- #579 Fix bug in caching with LLVM and Singlepass backends.
Add
default-backend-singlepass
,default-backend-llvm
, anddefault-backend-cranelift
features towasmer-runtime
to control thedefault_compiler()
function (this is a breaking change). Addcompiler_for_backend
function inwasmer-runtime
- #561 Call the
data_finalizer
field on theCtx
- #576 fix
Drop
of uninitCtx
- #542 Add SIMD support to Wasmer (LLVM backend only)
- Updates LLVM to version 8.0
- #575 Prepare for release; update wapm to 0.3.6
- #555 WASI filesystem rewrite. Major improvements
- adds virtual root showing all preopened directories
- improved sandboxing and code-reuse
- symlinks work in a lot more situations
- many misc. improvements to most syscalls touching the filesystem
- #565 Update wapm and bump version to 0.5.6
- #563 Improve wasi testing infrastructure
- fixes arg parsing from comments & fixes the mapdir test to have the native code doing the same thing as the WASI code
- makes wasitests-generate output stdout/stderr by default & adds function to print stdout and stderr for a command if it fails
- compiles wasm with size optimizations & strips generated wasm with wasm-strip
- #554 Finish implementation of
wasi::fd_seek
, fix bug in filestat - #550 Fix singlepass compilation error with
imul
instruction
- #541 Fix dependency graph by making separate test crates; ABI implementations should not depend on compilers. Add Cranelift fork as git submodule of clif-backend
- #537 Add hidden flag (
--cache-key
) to use prehashed key into the compiled wasm cache and change compiler backend-specific caching to use directories - #536
Update cache to use compiler backend name in cache key
- #529 Updates the Wasm Interface library, which is used by wapm, with bug fixes and error message improvements
- #523 Update wapm version to fix bug related to signed packages in the global namespace and locally-stored public keys
- #516 Add workaround for singlepass miscompilation on GetLocal
- #521 Update Wapm-cli, bump version numbers
- #518 Update Cranelift and WasmParser
- #514 #519 Improved Emscripten network related calls, added a null check to
WasmPtr
- #515 Improved Emscripten dyncalls
- #513 Fix emscripten lseek implementation.
- #510 Simplify construction of floating point constants in LLVM backend. Fix LLVM assertion failure due to definition of %ctx.
- #508 Update wapm version, includes bug fixes
- #471 Added missing functions to run Python. Improved Emscripten bindings
- #494 Remove deprecated type aliases from libc in the runtime C API
- #493
wasmer_module_instantiate
has better error messages in the runtime C API - #474 Set the install name of the dylib to
@rpath
- #490 Add MiddlewareChain and StreamingCompiler to runtime
- #487 Fix stack offset check in singlepass backend
- #450 Added Metering
- #481 Added context trampoline into runtime
- #484 Fix bugs in emscripten socket syscalls
- #476 Fix bug with wasi::environ_get, fix off by one error in wasi::environ_sizes_get
- #470 Add mapdir support to Emscripten, implement getdents for Unix
- #467
wasmer_instantiate
returns better error messages in the runtime C API - #463 Fix bug in WASI path_open allowing one level above preopened dir to be accessed
- #461 Prevent passing negative lengths in various places in the runtime C API
- #459 Add monotonic and real time clocks for wasi on windows
- #447 Add trace macro (
--features trace
) for more verbose debug statements - #451 Add
--mapdir=src:dest
flag to rename host directories in the guest context - #457 Implement file metadata for WASI, fix bugs in WASI clock code for Unix platforms
- #416 Remote code loading framework
- #449 Fix bugs: opening host files in filestat and opening with write permissions unconditionally in path_open
- #442 Misc. WASI FS fixes and implement readdir
- #440 Fix type mismatch between
wasmer_instance_call
andwasmer_export_func_*_arity
functions in the runtime C API. - #269 Add better runtime docs
- #432 Fix returned value of
wasmer_last_error_message
in the runtime C API - #429 Get wasi::path_filestat_get working for some programs; misc. minor WASI FS improvements
- #413 Update LLVM backend to use new parser codegen traits
- #426 Update wapm-cli submodule, bump version to 0.4.1
- #422 Improved Emscripten functions to run optipng and pngquant compiled to wasm
- #409 Improved Emscripten functions to run JavascriptCore compiled to wasm
- #399 Add example of using a plugin extended from WASI
- #397 Fix WASI fs abstraction to work on Windows
- #390 Pin released wapm version and add it as a git submodule
- #408 Add images to windows installer and update installer to add wapm bin directory to path
- #383 Hook up wasi exit code to wasmer cli.
- #382 Improve error message on
--backend
flag to only suggest currently enabled backends - #381 Allow retrieving propagated user errors.
- #379 Fix small return types from imported functions.
- #371 Add more Debug impl for WASI types
- #368 Fix issue with write buffering
- #343 Implement preopened files for WASI and fix aligment issue when accessing WASI memory
- #367 Add caching support to the LLVM backend.
- #366 Remove
UserTrapper
trait to fix #365. - #348 Refactor internal runtime
↔️ backend abstraction. - #355 Misc changes to
Cargo.toml
s for publishing - #352 Bump version numbers to 0.3.0
- #351 Add hidden option to specify wasm program name (can be used to improve error messages)
- #350 Enforce that CHANGELOG.md is updated through CI.
- #349 Add CHANGELOG.md.
- #276 #288 #344 Use new singlepass backend (with the
--backend=singlepass
when running Wasmer) - #338 Actually catch traps/panics/etc when using a typed func.
- #325 Fixed func_index in debug mode
- #323 Add validate subcommand to validate Wasm files
- #321 Upgrade to Cranelift 0.3.0
- #319 Add Export and GlobalDescriptor to Runtime API
- #310 Cleanup warnings
- #299 #300 #301 #303 #304 #305 #306 #307 Add support for WASI 🎉
- #286 Add extend to imports
- #278 Add versioning to cache
- #250 Setup bors