Rust, the alternative systems language that’s in development at Mozilla where they are using it to create Servo, a next generation browser, has just hit a huge milestone and entered into some turbulent territory. The runtime system for Rust, including a task scheduler written in C++, has now been replaced by a runtime written in Rust. Brian Anderson on the explained with a mailing list post that this was part of a huge rewrite of how Rust is going to handle I/O using libuv and stopping tasks that are blocked on I/O from blocking other tasks. The long-term aim is to make I/O very scalable in Rust. The task scheduler was in the way though so, they’ve redone that in Rust removing all the foreign function interfaces and making something that will be a lot easier to maintain and enhance.
But as with all big changes, there are ramifications. The work will need to be completed, the IO system fully implemented, regressions deregressed, performance pulled up to previous speeds and bugs fixed. Anderson details the work that is going to be done in his posting and covers what is already in progress saying he expects it to “validate Rust in the domains it’s aiming for: concurrent and systems programming”.