news
Operating Systems: The High-level OS Challenge and Rust Packaging Model and Rust Packaging Model GNU Guix
-
Adolfo Ochagavía ☛ The high-level OS challenge
Since I got into programming, I’ve regularly seen operating-systems tutorials and implementation guides pass by. They always leave a lingering desire behind them, an echo of the well-known siren song: “when are you going to create your toy operating system?” Inevitably, time passes and the desire fades, till the next tutorial shows up and the cycle repeats.
Today I’m breaking the cycle. I’m setting a challenge for myself, and I’m publishing it for the sake of the many curious souls who’d welcome a starting point for their OS adventures. Are you one of them? Jump aboard, fellow traveler!
-
GNU ☛ GNU Guix: A New Rust Packaging Model
If you've ever struggled with Rust packaging, here's some good news!
We have changed to a simplified Rust packaging model that is easier to automate and allows for modification, replacement and deletion of dependencies at the same time. The new model will significantly reduce our Rust packaging time and will help us to improve both package availability and quality.
Those changes are currently on the
rust-team
branch, slated to be merged in the coming weeks.How good is the news? Migration of our current Rust package collection, 150+ applications with 3600+ dependency libraries, only took two weeks, all by one person! :)
See #387, if you want to track the current progress and give feedback. I'll request merging the
rust-team
branch when the pull request is merged. After merging the branch, a news entry will be issued forguix pull
.Upcoming changes
The previous packaging model for Rust in Guix would map one crate (Rust package) to one Guix package. This seemed to make sense but there's a fundamental mismatch here: while Guix packages—from applications like GIMP and Inkscape to C libraries like GnuTLS and Nettle—are meant to be compiled independently, Rust applications are meant to be compiled as a single unit together with all the crates they depend on, recursively. That mismatch meant that Guix would build each crate independently, but that build output was of no use at all.