This is a prototype task scheduler, written in Rust, that is driven by an abstract event loop, along with the beginnings of an I/O interface for translating asynchronous I/O to synchronous I/O via scheduler context switches. It is part of issue #4419.
It is not ready to merge, but this is an opportunity to review and discuss.
While I am primarily interested in proving the integration of I/O with the scheduler, this is also written with a number of other goals in mind:
- Replacing C++ code with Rust
- Clean up stack management (#2044, #4479, #4480)
- Supporting the work stealing algorithm (#3095)
- Providing scheduling operations for different scenarios, some that avoid memory synchronization.