1069: Add fn for splitting borrow of memory & data in Ctx, use in WASI r=MarkMcCaskey a=MarkMcCaskey
Fixes a soundness issue / some undefined behavior
# Review
- [ ] Add a short description of the the change to the CHANGELOG.md file
Co-authored-by: Mark McCaskey <mark@wasmer.io>
Co-authored-by: Mark McCaskey <5770194+markmccaskey@users.noreply.github.com>
1032: Fix abort signature in emscripten ABI r=MarkMcCaskey a=MarkMcCaskey
Needs tests; this is preventing python on wapm from working
Co-authored-by: Mark McCaskey <mark@wasmer.io>
1059: Add doc comments for WASI FD associated constants r=MarkMcCaskey a=MarkMcCaskey
I want to try out something I'm going to call "daily docs" where I write documentation for one thing every day
Co-authored-by: Mark McCaskey <mark@wasmer.io>
1042: Make regression test work in release builds too. r=nlewycky a=nlewycky
Fix this regression test to detect the bug it was looking for in release builds too.
This bug triggered an assertion failure in debug, and by examining the pre-opt IR, we can check for the bug in release mode too.
Co-authored-by: Nick Lewycky <nick@wasmer.io>
709: new feature flag: `deterministic` r=MarkMcCaskey a=YaronWittenstein
The motivation for the PR is for introducing a new feature flag called `deterministic`.
When `deterministic` will be enabled (turned-off by default) it'll guarantee deterministic
execution of wasm programs across different hardware/circumstances.
This is critical for Blockchain projects that require execution to be deterministic
in order to reach a consensus of the state transition of each smart-contract transaction.
Co-authored-by: Yaron Wittenstein <yaron.wittenstein@gmail.com>
Co-authored-by: Yaron Wittenstein <yaronwittenstein@users.noreply.github.com>
Co-authored-by: Mark McCaskey <5770194+markmccaskey@users.noreply.github.com>
Co-authored-by: Mark McCaskey <mark@wasmer.io>
When the version has type `Version`, we expect the user to give a
valid `Version` variant. Since the `Version` is basically a `uint8_t`,
the user is able to pass everything she wants, which can create an
undefined behavior on the Rust side.
To avoid such situation, the version has now type `c_uchar` (`unsigned
char` or `uint8_t` on C side —on most platforms). Then the `From`
trait is implemented on `Version`. In case the value is unbound,
`Version::Unknown` is returned.