Changes required to bring in full WASIX support

- Implemented multi-threading for both JS and SYS, plus other WASIX implementations
- Added a longjmp capability required for bash and other WASIX implementations
- Added real signals to WASIX
- Added a stack unwinding and winding functionality
- Implemented memory forking which will be used for process forking
- Added the ability to fork the current process
- Added the vfork functionality
- Moved over to the WasiPipe implementation
- Added more syscalls needed for bash on WASIX
- Ported wasmer-os into wasmer
- Added a union file system and the character devices
- Moved the cursors to the file handles rather than the file so that they are multithread safe and can handle concurrent IO
- Reimplemented the poll_oneoff functionality to support full ASYNC
- Added support for mapping directories in the host file system into WASIX sandbox file systems
- Implemented fully ASYNC sockets and emulated ASYNC files
- Made the file locks more granular to allow for concurrent poll and accept operations
- Fixed a race condition on the event notifications
This commit is contained in:
John Sharratt's Shared Account
2022-08-18 10:11:38 +10:00
committed by Christoph Herzog
parent 39f988a6f6
commit 572ea3e9cd
167 changed files with 19982 additions and 6481 deletions

View File

@@ -196,7 +196,7 @@ import_object.define("env", "host_function", host_function);
let instance = Instance::new(&mut store, &module, &import_object).expect("Could not instantiate module.");
```
For WASI, don't forget to initialize the `WasiEnv` (it will import the memory)
For WASI, don't forget to initialize it
```rust
let mut wasi_env = WasiState::new("hello").finalize()?;