- #1401 Make breaking change to
RuntimeError
:RuntimeError
is now more explicit about its possible error values allowing for better insight into why a call into Wasm failed. - #1382 Refactored test infranstructure (part 2)
- #1380 Refactored test infranstructure (part 1)
- #1357 Refactored bin commands into separate files
- #1331 Implement the
record
type and instrutions for WIT - #1345 Adding ARM testing in Azure Pipelines
- #1335 Change mutability of
memory
toconst
inwasmer_memory_data_length
in the C API - #1329 New numbers and strings instructions for WIT
- #1332 Add option to
CompilerConfig
to force compiler IR verification off even whendebug_assertions
are enabled. This can be used to make debug builds faster, which may be important if you're creating a library that wraps Wasmer and depend on the speed of debug builds. - #1320 Change
custom_sections
field inModuleInfo
to be more standards compliant by allowing multiple custom sections with the same name. To get the old behavior with the new API, you can add.last().unwrap()
to accesses. For example,module_info.custom_sections["custom_section_name"].last().unwrap()
. - #1313 Add new high-level public API through
wasmer
crate. Includes many updates including:- Minor improvement:
imports!
macro now handles no trailing comma as well as a trailing comma in namespaces and between namespaces. - New methods on
Module
:exports
,imports
, andcustom_sections
. - New way to get exports from an instance with
let func_name: Func<i32, i64> = instance.exports.get("func_name");
. - Improved
Table
APIs includingset
which now allows setting functions directly. TODO: update this more ifTable::get
gets made public in this PR - TODO: finish the list of changes here
- Minor improvement:
- #1303 NaN canonicalization for singlepass backend.
- #1292 Experimental Support for Android (x86_64 and AArch64)
- #1305 Handle panics from DynamicFunc.
- #1301 Update supported stable Rust version to 1.41.1.
- #1300 Add support for multiple versions of WASI tests: wasitests now test all versions of WASI.
- #1285 Greatly improve errors in
wasmer-interface-types
- #1283 Workaround for floating point arguments and return values in
DynamicFunc
s.
- #1294 Fix bug related to system calls in WASI that rely on reading from WasmPtrs as arrays of length 0.
WasmPtr
will now succeed on length 0 arrays again.
- #1291 Fix installation packaging script to package the
wax
command.
- #1286 Updated Windows Wasmer icons. Add wax
- #1284 Implement string and memory instructions in
wasmer-interface-types
- #1272 Fix off-by-one error bug when accessing memory with a
WasmPtr
that contains the last valid byte of memory. Also changes the behavior ofWasmPtr<T, Array>
with a length of 0 andWasmPtr<T>
wherestd::mem::size_of::<T>()
is 0 to always returnNone
- #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