* Basic changes for RISC-V support
* RISC-V in compiler LLVM
* RISC-V support in dylib engine
* RISC-V support in universal engine
* Various small fixes
* [RISCV] LLVM-riscv working, with some ignored tests to be worked on later
* Update rustc to 4.65 (1.64 has some issue with riscv64 target)
* Fixed some (new) Linting issues
* Updated Cargo.toml and remove split-debuginfo for Windows build
* Removed profile.dev from Cargo.toml as it cannot be per platform (breaks Windows). split-debug info is now the default value
* Enable Cranelift compiler for RISCV
* Update crates and fixed all the new clippy errors
* Taken review remarks into account
* Removed change from deny.toml, it's not needed anymore
* Added some more comment about llvm abi hack
* Added doc about current state of RISCV support
* Fixed (newer) linter
---------
Co-authored-by: Toru Nayuki <tnayuki@icloud.com>
This commit extracts changes to core libraries made in the WASIX branch.
It is not reasonable to extract the partial commit history, so this is
just a batch commit.
The history will make a bit more sense again if we decide to merge the
WASIX branch with full commit history.
This uses the [corosensei](https://crates.io/crates/corosensei) crate to
run Wasm code on a separate stack from the main thread stack.
In trap handlers for stack overflows and memory out of bounds accesses,
we can now check whether we are executing on the Wasm stack and reset
execution back to the main thread stack when returning from the trap
handler.
When Wasm code needs to perform an operation which may modify internal
data structures (e.g. growing a memory) then execution must switch back
to the main thread stack using on_host_stack. This is necessary to avoid
leaving internal data structure in an inconsistent state when a stack
overflow happens.
In the future, this can also be used to suspend execution of a Wasm
module (#1127) by modeling it as an async function call.
Fixes#2757Fixes#2562