Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implementation of WASIX and a fully networking for Web Assembly #2941

Merged
merged 9 commits into from
Jun 15, 2022

Conversation

epilys
Copy link
Contributor

@epilys epilys commented Jun 8, 2022

  • Introduced the virtual BUS interface used for RPC between web assembly apps
  • Introduced the virtual networking interface used to implement networking
    for web assembly apps
  • Implemented a local implementation of the virtual networking
    (available behind the feature toggle 'host-net' on the 'wasi' package)
  • Fixed up some of the examples from the wasmer3 branch
  • Refactored the WASI implementations so they support wasm64-wasi
  • WASIX is behind its own namespaces for both 32bit and 64bit implementations

Original PR by @john-sharratt #2930

@epilys epilys added this to the v3.0 milestone Jun 8, 2022
@epilys epilys requested a review from syrusakbary as a code owner June 8, 2022 12:02
@epilys epilys self-assigned this Jun 8, 2022
…wser

- 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
@epilys
Copy link
Contributor Author

epilys commented Jun 15, 2022

bors r+

bors bot added a commit that referenced this pull request Jun 15, 2022
2941:  Implementation of WASIX and a fully networking for Web Assembly r=epilys a=epilys

- Introduced the virtual BUS interface used for RPC between web assembly apps
- Introduced the virtual networking interface used to implement networking
  for web assembly apps
- Implemented a local implementation of the virtual networking
  (available behind the feature toggle 'host-net' on the 'wasi' package)
- Fixed up some of the examples from the wasmer3 branch
- Refactored the WASI implementations so they support wasm64-wasi
- WASIX is behind its own namespaces for both 32bit and 64bit implementations

Original PR by `@john-sharratt` #2930

Co-authored-by: Johnathan Sharratt <[email protected]>
Co-authored-by: John Sharratt's Shared Account <[email protected]>
Co-authored-by: ptitSeb <[email protected]>
@epilys
Copy link
Contributor Author

epilys commented Jun 15, 2022

bors r-

@bors
Copy link
Contributor

bors bot commented Jun 15, 2022

Canceled.

john-sharratt and others added 8 commits June 15, 2022 19:24
…Assembly

- Introduced the virtual BUS interface used for RPC between web assembly apps
- Introduced the virtual networking interface used to implement networking
  for web assembly apps
- Implemented a local implementation of the virtual networking
  (available behind the feature toggle 'host-net' on the 'wasi' package)
- Fixed up some of the examples from the wasmer3 branch
- Refactored the WASI implementations so they support wasm64-wasi
- WASIX is behind its own namespaces for both 32bit and 64bit implementations
- Fixed the wasi_pipes unit test which was using internals that are no longer exposed - instead made the pipes clonable
And converted the WASI js test into a generic stdio test that works for
both sys and js versions of wasmer (also fixed the tests)
@epilys
Copy link
Contributor Author

epilys commented Jun 15, 2022

bors r+

@bors
Copy link
Contributor

bors bot commented Jun 15, 2022

Build succeeded:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants