Releases: wasmerio/wasmer
0.5.1
0.5.0
This version of Wasmer ships with a much more stable version of WASI, supporting environment variables and directory mapping. It also ships with wapm
0.3.0 that includes support for package signing and contracts.
Apart of the fixes we improved the Emscripten integration, that now is able to run python
and openssl
.
Changeleog
- #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
0.4.2
This version of Wasmer ships with multiple WASI improvements, fixes on the C-API integration and the first iteration of our refactor of different backends (singlepass and LLVM).
This version also ships with a kernel loader that is able to run WebAssembly on the kernel, more info here.
Changelog
- #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
0.4.1
Changelog
- #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
0.4.0 (wasmer + wapm)
Wasmer now ships with wapm 🎉.
WAPM is a Package Manager for WebAssembly that will improve your experience for installing, using and publishing WebAssembly modules. Here's a video showcasing it: https://www.youtube.com/watch?v=qDRcHIBFu0c
Apart of shipping with wapm, the stability of the runtime has been improved significantly and support for WASI is more mature.
Changelog
- #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.
0.3.0
Wasmer now supports WASI 🎉.
The emscripten implementation has improved vastly, and now Wasmer can run PHP, SQLite and Lua (check them on the examples dir on this repo)
The wasmer
CLI now ships with three different backends: Singlepass (fast compilation), Cranelift (default) and LLVM (fast runtime). You can try it with wasmer run --backend=singlepass ...
We also improved the APIs and shipped tons of bug fixes and improvements.
Changelog
- Use new singlepass backend (with the
--backend=singlepass
when running Wasmer) #276 #288 #344 - Actually catch traps/panics/etc when using a typed func. #338
- Fixed func_index in debug mode #325
- Add validate subcommand to validate Wasm files #323
- Upgrade to Cranelift 0.3.0 #321
- Add Export and GlobalDescriptor to Runtime API #319
- Cleanup warnings #310
- Add support for WASI 🎉 #299 #300 #301 #303 #304 #305 #306 #307
- Add extend to imports #286
- Add versioning to cache #278
- Setup bors #250
Emscripten
- Allow resize_heap to grow heap in emscripten #335
- Fix lstat64; heap size; and stat #332
- Implement strftime #330
- Improved syscalls #329 #328 #326 #289 #285
- Add more stubs for pthreading, exceptions, and some invokes #314
- Auto generate null funcs #295
- Added support for symbol maps to improve debugging #294
- Fix arg passing to getcwd sys call #292
- Fix alignment check on pointer #291
Runtime C API
- Split lib.rs into modules #312
- Implement
wasmer_export_to_memory
function #296 - Mirror the debug and llvm features #280
- Implement
wasmer_module_serialize
andwasmer_module_deserialize
#271 - Add an API to update
vm::Ctx.data
#261 - Fix the imports length #260
- Fix C API table/global/memory imports #227
Docs
0.2.1
0.2.0
The version 0.2.0 moves the WebAssembly wasmer
runtime forward making it more stable, with a more mature API and preparing the software to be ready in production environments.
It also accelerates the startup time when running a WebAssembly module by an order of magnitude.
This version also ships with experimental Windows support (all WebAssembly spectests pass, emscripting bindings are on the works).
Changelog
- Completely refactored our codebase, moving the runtime, Cranelift backend and emscripten into it's own isolated libs #80
- Added Cache #134 #198 #200, so WebAssembly compiled modules can be loaded much faster (100x speedup on compile time)
- Added integration tests #109 #91
- Improved support for Windows #51 #94 #143 #144 #138 #175
- Improved function signature checks #155
- Improved imports API #120 #130
- Naive short circuiting implementation for user panics and results #167
- Improved traps support #103
- Use parallel compilation for cranelift backend #209
- Improved debug #61 #67 #129 #204
- Added benchmark runner #201
Breaking changes
The breaking changes affect mainly to other libraries that were depending in any of the crates for embedding Wasmer in their systems.
You can check an example PR with all the changes included here: https://github.com/wasmerio/wasmer-rust-example/pull/5/files
Summary:
- Now the imported functions take
Ctx
as first argument instead of the last one #171
// Previous (0.1.x)
fn print_num(n: i32, ctx: &mut vm::Ctx) {
println!("print_num({})", n);
}
// Now (>= 0.2.0)
fn print_num(ctx: &mut vm::Ctx, n: i32) {
println!("print_num({})", n);
}
- The imported function in
imports!
should use now thefunc!
macro.
// Previous (0.1.x)
let import_object = imports! {
"env" => {
"print_num" => print_num<[i32] -> []>,
},
};
// Now (>= 0.2.0)
let import_object = imports! {
"env" => {
// The func! macro will automatically detect the signature
"print_num" => func!(print_num),
},
};
- Access to memory slices is now safe
// Previous (0.1.x)
let memory = ctx.memory(0);
let str_slice = &memory[ptr as usize..(ptr + len) as usize];
// Now (>= 0.2.0)
let memory = ctx.memory(0);
let str_slice: Vec<_> = memory.view()[ptr as usize..(ptr + len) as usize].iter().map(|cell| cell.get()).collect();
Other
- Published
wasmer-emscripten
0.2.0 crate - Published
wasmer-runtime
0.2.0 crate - Published
wasmer-clif-backend
0.2.0 crate
0.1.4
Merge pull request #52 from wasmerio/fix/emscripten-env Fix support for env vars (put, set, unset)
0.1.3
Merge pull request #53 from wasmerio/feature/run-lua-wasm Running Lua