5 ms·
Fun projects of varying ambitiousness that comes to mind: - Write a Rust garbage collector in Rust, hell, rewrite the Rust runtime in Rust. - Do a Linux kerne
by kryptiskt 13y ago
Fun projects of varying ambitiousness that comes to mind:
- Write a Rust garbage collector in Rust, hell, rewrite the Rust runtime in Rust.
- Do a Linux kernel module.
- Or a bootloader.
- Or an entire OS.
This is a great demonstration. It's one thing to know that something can be done, seeing a concrete example is invaluable.
And now I'm kind of itching to write that bootloader.
- dbaupp 13y ago> - Write a Rust garbage collector in Rust, hell, rewrite the Rust runtime in Rust. The runtime is currently being rewritten to Rust[1], and the GC-in-Rust is almost complete[2] (as far as I understand it). [1]: Work in progress: https://github.com/mozilla/rust/tree/incoming/src/libstd/rt https://github.com/mozilla/rust/tree/incoming/src/libstd/rt [2]: https://github.com/graydon/rust/tree/gc https://github.com/graydon/rust/tree/gc
- pjmlp 13y agoCompulsory link, http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf
- pcwalton 13y agoWe're already doing the first item, as dbuapp mentioned. Actually, we aren't doing it for fun—we're fine with keeping along some C++ for practicality's sake if it's working and we have higher-priority things to do, but the performance of the old scheduler is not where we need it to be, and a rewrite of much of the scheduling code was necessary. Doing it in Rust made sense from a safety and integration standpoint. Early I/O performance numbers for the new scheduler are quite encouraging. (Nothing to post yet, as we need to do more measurements before we can definitively talk about performance, but you can find numbers in the issue tracker if you're curious.)
- pvnick 13y agoOut of curiosity, what are you working on that the performance requirements necessitate rewriting a bunch of the scheduling code? Great job btw!
- pcwalton 13y agoIntegrating the I/O main loop with the scheduler and work stealing. The new architecture is designed for work stealing, so tasks easily migrate between threads on a demand driven basis to achieve optimum CPU usage. It also allows us to play a bunch of tricks with channel communication that have improved performance of message sends dramatically and pave the way to removing all the locks.