Releases: wasmerio/wasmer
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
0.1.2
Changelog
First version capable of running nginx
0.1.1
Changelog
- Implemented almost all the syscalls required to execute Nginx
- Added
self-update
command - Improved installer
- Recover properly from stack overflows
0.1.0
First working version of wasmer.