* 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>
We already depend on `tempfile`, which also provides temp dir
functionality.
This gets rid of a cargo-deny error due to a race condition in
remove_dir_all, which is a dependency of the removed "tempdir" crate.
Also bumps the minimum tempfile version in Cargo.toml files to be
consistent.
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.
The Universal type was essentially a builder of engines that's given a
compiler backend and creates an Engine with .engine() method. The name
was not clear.
Since there's one engine now, it doesn't make sense to initialize a
`Store` with the engine specifically. It's an extra redundant step for
the API user.
- Split functionality out of WasiEnv so that it can support multi-threading
- Added methods to the VFS File Trait that supporting polling
- Implemented basic time functionality for WASI
- Incorported a yield callback for when WASI processes idle
- Improved the error handling on WASI IO calls
- Reduce the verbose logging on some critical WASI calls (write/read)
- Implemented the missing poll functionality for WASI processes
- Moved the syspoll functionality behind a feature flag to default to WASI method
- Refactored the thread sleeping functionality for WASI processes
- Fixed the files system benchmark which was not compiling
- Modified the file system trait so that it is SYNC and thus can handle multiple threads
- Removed the large mutex around filesystem state and implemented granular locks instead
(this is needed to fix a deadlock scenario on the terminal)
- Split the inodes object apart from the state to fix the deadlock scenario.
- Few minor fixes to some warnings when not using certain features
- Sleeping will now call a callback that can be used by the runtime operator when
a WASI thread goes to sleep (for instance to do other work)
- Fixed a bug where paths that exist on the real file system are leaking into VFS
- Timing functions now properly return a time precision on WASI
- Some improved macros for error handling within syscalls (wasi_try_ok!)
- Refactored the remove_directory WASI function which was not working properly
- Refactored the unlink WASI function which was not working properly
- Refactored the poll WASI function which was not working properly
- Updates some of the tests to make them compile again
- Rewrote the OutputCapturer so that it does leak into the internals