R eaders in the US who are on the lookout for a Linux machine could do a lot worse than hit up Denver-based System76 and grab one of its fine desktops or laptops. Nope, this isn’t an advertorial, this is just fact. We’ve been impressed by System76’s efforts ever since it launched its first machines in the mid-naughties. We’d recommend them to UK readers too, but transatlantic shipping is a little pricey. Oh, and the reference to the 1776
American Revolution twinges our governmentmandated nationalistic sensitivities a tad, too.
Be that as it may, System76 has also been shipping its own Linux distribution since 2017. And it’s not just for its hardware too – it works great on other PCs. Far from being just another Ubuntu spin, Pop!_OS runs a different bootloader, uses its own shell (dubbed COSMIC, for Computer Operating System Main Interface Components), and even has its own power scheduler. Which makes it ideal for laptops.
Okay Michael, tell us about Aliasing XOR mutability, ownership models, and er, that other thing you said. “Aliasing XOR mutability means that a value may either be lent with multiple read-only references, or lent with a single mutable reference,” explains Michael. “It also means that you can’t pass ownership of a value while it’s being actively referenced. This is technically a best practice to follow regardless of what programming language that you use, but it wasn’t possible to verify at compile time until Rust.
We hit up System76 software engineer and Pop!_OS maintainer Michael Murphy to discuss the latest Pop release, a bug that hit the social media big time and the challenges faced by Gnome-based distros that don’t want to look like Gnome. And not content with all that activity, System76 is big into the Rust programming language. So much that the company is making a new Rust-powered desktop. We’re sure you want to hear about it just as much as we do. So read on...
“The ownership model in Rust simply declares that any variable passed by value into a function is transferring ownership of the value to that function. This means that you can’t use a variable again after it’s been passed into a function. This is very useful for API authors because they can ensure that a value that should be used once is consumed on use. Type markers are another interesting compile-time mechanism to prevent misuse of values in APIs. The compiler uses these to prevent misuse of values being moved or shared across threads. This makes developing multi-threaded applications much easier.