* Add Wasmtime-specific C API functions to return errors This commit adds new `wasmtime_*` symbols to the C API, many of which mirror the existing counterparts in the `wasm.h` header. These APIs are enhanced in a number of respects: * Detailed error information is now available through a `wasmtime_error_t`. Currently this only exposes one function which is to extract a string version of the error. * There is a distinction now between traps and errors during instantiation and function calling. Traps only happen if wasm traps, and errors can happen for things like runtime type errors when interacting with the API. * APIs have improved safety with respect to embedders where the lengths of arrays are now taken as explicit parameters rather than assumed from other parameters. * Handle trap updates * Update C examples * Fix memory.c compile on MSVC * Update test assertions * Refactor C slightly * Bare-bones .NET update * Remove bogus nul handling
6.4 KiB
Wasmtime Releases
0.16.0
Unreleased
Added
- The C API has a number of new
wasmtime_*functions which return error objects to get detailed error information when an API fails. #TODO
Changed
-
The
Func::callAPI has changed its error type fromTraptoanyhow::Errorto distinguish between wasm traps and runtiem violations (like the wrong number of parameters). #TODO -
A number of
wasmtime_linker_*andwasmtime_config_*C APIs have new type signatures which reflect returning errors. #TODO
0.15.0
Unreleased
0.14.0
Fixed
Fix build errors in wasi-common on Windows.
0.13.0
Released 2020-03-24.
Added
-
Lots of documentation of
wasmtimehas been updated. Be sure to check out the book and API documentation! -
All wasmtime example programs are now in a top-level
examplesdirectory and are available in both C and Rust. #1286 -
A
wasmtime::Linkertype was added to conveniently link link wasm modules together and create instances that reference one another. #1384 -
Wasmtime now has "jitdump" support enabled by default which allows profiling wasm code on linux. #1310
-
The
wasmtime::Callertype now exists as a first-class way to access the caller's exports, namely memory, when implementing host APIs. This can be the first argument of functions defined withFunc::neworFunc::wrapwhich allows easily implementing methods which take a pointer into wasm memory. Note that this only works for accessing the caller'sMemoryfor now and it must be exported. This will eventually be replaced with a more general-purpose mechanism like interface types. #1290 -
The bulk memory proposal has been fully implemented. #1264 #976
-
Virtual file support has been added to
wasi-common. #701 -
The C API has been enhanced with a Wasmtime-specific
wasmtime_wat2wasmto parse*.watfiles via the C API. #1206
Changed
-
The
wastandwasm2objstandalone binaries have been removed. They're available via thewasmtime wastandwasmtime wasm2objsubcommands. #1372 -
The
wasi-commoncrate now uses the newwigglecrate to auto-generate a trait which is implemented for the current wasi snapshot. #1202 -
Wasmtime no longer has a dependency on a C++ compiler. #1365
-
The
Func::wrapNAPIs have been consolidated into oneFunc::wrapAPI. #1363 -
The
Callabletrait has been removed and nowFunc::newtakes a closure directly. #1363 -
The Cranelift repository has been merged into the Wasmtime repository.
-
Support for interface types has been temporarily removed. #1292
-
The exit code of the
wasmtimeCLI has changed if the program traps. #1274 -
The
wasmtimeCLI now logs to stderr by default and the-dflag has been renamed to--log-to-file. #1266 -
Values cannot cross
Storeobjects, meaning you can't instantiate a module with values from different stores nor pass values from different stores into methods. #1016
0.12.0
Released 2020-02-26.
Added
-
Support for the WebAssembly text annotations proposal has been added. #998
-
An initial C API for instantiating WASI modules has been added. #977
-
A new suite of
Func::getNfunctions have been added to thewasmtimeAPI to call statically-known function signatures in a highly optimized fashion. #955 -
Initial support for profiling JIT code through perf jitdump has been added. #360
-
More CLI flags corresponding to proposed WebAssembly features have been added. #917
Changed
-
The
wasmtimeCLI as well as embedding API will optimize WebAssembly code by default now. #973 #988 -
The
verifierpass in Cranelift is now no longer run by default when using the embedding API. #882
Fixed
-
Code caching now accurately accounts for optimization levels, ensuring that if you ask for optimized code you're not accidentally handed unoptimized code from the cache. #974
-
Automated releases for tags should be up and running again, along with automatic publication of the
wasmtimePython package. #971