September 10th, 2024

Rust in Illumos

The article discusses the integration of Rust into the illumos operating system, highlighting development challenges, the need for community collaboration, and inviting contributions for userland tools and driver development.

Read original articleLink Icon
Rust in Illumos

The article discusses the integration of Rust programming language into the illumos operating system, highlighting the current state of development and the challenges faced. It emphasizes the need for collaboration between the Rust and illumos communities to facilitate this transition. The author notes that while there are no Rust drivers in upstream illumos yet, the Oxide fork is being used to develop Rust-based drivers, particularly for networking. The article also addresses the complexities of the Linux DRM API and the differences in development models between Linux and illumos. Additionally, it points out the lack of support for systems package managers in Rust, which complicates the software distribution process. The author expresses a desire for improved shared library support in Rust to better serve system packagers. Finally, the article invites Rust developers to contribute to the illumos community, particularly in userland tools and driver development.

- Rust is being integrated into illumos, with the Oxide fork currently developing Rust-based drivers.

- The article highlights the differences in development models between Linux and illumos, affecting Rust integration.

- There are challenges related to Rust's lack of support for systems package managers and shared libraries.

- The author encourages collaboration between Rust and illumos communities to facilitate smoother integration.

- Contributions from Rust developers are welcomed, particularly in userland tools and driver development.

Link Icon 7 comments
By @rtpg - 2 months
This article really comes at some of the crux of packaging pains for many languages. The "distro ships the software" idea is something so many modern language toolkits are pretty far away from (and, as someone constantly burned by Debian packaging choices, something I'm pretty happy with as well). But without a good answer, there's going to be frustration.

When distros are charging themselves with things like security, shared libraries do become a bit load bearing. And for users, the idea that you update some lib once instead of "number of software vendor" times is tempting! But as a software developer, I really really enjoy how I can ship a thing with exactly a certain set of versions, so it's almost an anti-feature to have a distro swap out functionality out from under me.

Of course there can be balances and degrees to this. But a part of me feels like the general trend of software packaging is leaning towards "you bundle one thing at a time", away from "you have a system running N things", and in that model I don't know where distro packagers are (at least for server software).

By @yjftsjthsd-h - 2 months
> The development model of illumos is different from Linux and thus there are no Rust drivers in upstream illumos yet. But that is to be expected for new things. In our model, we take the time to mature new tech in a fork, and for rust, the Oxide fork has taken that role. In there, we have several drivers for the Oxide Networking stack that are in rust. Based on that some experience could be gained.

Soft forks are also good, but doesn't illumos have a stable driver ABI, such that you could just make your drivers completely independently? I thought that was how it had ex. Nvidia drivers ( https://docs.openindiana.org/dev/graphics-stack/#nvidia )

By @fake-name - 2 months
> The Debian approach of putting everything into one system and only having one version of each dependency is not feasible for a huge international community of people that develop together but never meet.

I find this to be overbroad and incorrect in the larger case.

I want one version that has been reasonably tested for everything but the parts I'm developing or working with. Having just one version for everyone generally means it's probably going to work, and maybe even has been tested.

For my own stuff, I am happy to manage the dependencies myself, but moving away from the debian approach harms the system in general.

By @the8472 - 2 months
> Missing support for shared libraries

Well, rust does support shared libraries. Call things by their name: what distros want is for all libraries to have a stable ABI. And I guess some sort of segmentation that the source of one library doesn't bleed into the binary output of another, and I think the latter part is even more tricky than ABI stability. Generics are monomorphized in downstream crates (aren't C++ templates the same?), so I think you'd either have to ban generic functions and inlining from library APIs or do dependent-tree rebuilds anyway.

By @turtle_heck - 2 months
> for one would love to have people help me with the new Installer[0] and with the package Forge[1]

Those repos really need some basic high-level information about what they are and how they work, the Forge doesn't even have a README.

[0] https://github.com/Toasterson/illumos-installer

[1] https://github.com/toasterson/forge

By @4ad - 2 months
> The development model of illumos is different from Linux and thus there are no Rust drivers in upstream illumos yet. But that is to be expected for new things. In our model, we take the time to mature new tech in a fork, and for rust, the Oxide fork has taken that role.

This is silly. Virtually all illumos development is done by Oxide. There is no other upstream to speak of.

As far as I am concerned, illumos is Oxide.

Also, it's illumos, in lower case.