This Month in Rust OSDev: March 2026
Welcome to a new issue of "This Month in Rust OSDev". In these posts, we give a regular overview of notable changes in the Rust operating system development ecosystem.
This series is openly developed on GitHub. Feel free to open pull requests there with content you would like to see in the next issue. If you find some issues on this page, please report them by creating an issue or using our comment form at the bottom of this page.
Please submit interesting posts and projects for the next issue on Zulip or via a PR on GitHub.
Disclaimer: Automated scripts and AI assistance were used for collecting and categorizing links. Everything was proofread and checked manually and there were many manual tweaks.Announcements, News, and Blog Posts
Here we collect news, blog posts, etc. related to OS development in Rust.
- Redox OS: Capability-based Security — Namespace and CWD
- Ferrous Systems: "Accessing Hardware in Rust"
- Compares four Rust hardware abstraction approaches (svd2rust, tock-registers, safe-mmio, derive-mmio) for bare-metal programming.
- How to use storytelling to fit inline assembly into Rust
- Proposes a "storytelling" approach where inline assembly blocks must correspond to equivalent Rust code, ensuring soundness and allowing compiler optimizations.
- Video: Writing a Linux GPU Kernel Driver in Rust with Daniel Almeida
- Interview about writing the Tyr GPU kernel driver for Arm Mali hardware in Rust.
- Ariel OS v0.4.0
- New release of this embedded Rust RTOS adds BLE on ESP32, USB CDC-NCM Ethernet, GNSS sensor support, and stack usage measurement.
- Elfina: Multi-architecture ELF Loader in Rust
- Educational ELF loader supporting x86 and x86-64 Linux binaries, with mmap and memfd execution modes.
- VectorWare: "Rust threads on the GPU"
- Maps Rust's
std::threadAPI to GPU warps, enabling familiar concurrent Rust code to compile and run on GPU hardware.
- Maps Rust's
Infrastructure and Tooling
In this section, we collect recent updates to rustc, cargo, and other tooling that are relevant to Rust OS development.
- ACP: Introduce
alloc::io- Approved proposal to move OS-independent parts of
std::iotoalloc, making IO traits available inno_std + allocenvironments. The implementation PR is in progress.
- Approved proposal to move OS-independent parts of
- Make atomic primitives type aliases of
Atomic<T>- Refactors all atomic types (
AtomicI32,AtomicBool, etc.) into type aliases of a genericAtomic<T>. - Only types that implement the sealed
AtomicPrimitivetrait can be used withAtomic<T>
- Refactors all atomic types (
- Implement
MaybeDanglingcompiler support- Adds compiler-level support for the
MaybeDanglingwrapper type, which relaxes aliasing assumptions on references. Important for unsafe code dealing with self-referential structures and raw memory.
- Adds compiler-level support for the
- Constify
Vec::{into, from}_raw_parts{_in|_alloc}- Makes Vec raw parts methods usable in const contexts.
- Target specs: stricter checks for LLVM ABI values, and correlate with
cfg(target_abi)- Tightens ABI validation in target specs. Note: out-of-tree JSON custom targets may need updating.
-Zbranch-protectionis a target modifier- Makes
-Zbranch-protectiona target modifier, enforcing consistent application across the entire crate graph. Important for AArch64 kernel security (PAC/BTI).
- Makes
- Defer codegen for the VaList Drop impl to actual uses
- Allows compiling libcore with codegen backends that don't implement VaList (like Cranelift). Unblocks alternative backends for bare-metal work.
rust-osdev Projects
In this section, we give an overview of notable changes to the projects hosted under the rust-osdev organization.
uart_16550
Maintained by @phip1611
Simple yet highly configurable low-level driver for 16550 UART devices, typically known and used as serial ports or COM ports.
We've just released v0.5.0 - a complete rewrite and fresh start of the crate, implemented by
@phip1611.
The main motivation is to make the crate fit for working on real hardware,
clean up technical debt, and streamline the code paths for x86 port I/O and
MMIO. @phip1611 is also taking over maintenance of the crate, thanks a lot!
More info:
- https://github.com/rust-osdev/uart_16550/releases/tag/v0.5.0
- https://docs.rs/uart_16550/0.5.0/uart_16550/
- https://github.com/rust-osdev/uart_16550/pull/41
Special Thanks to Philipp Oppermann (@phil-opp) and Martin Kröning (@mkroening) for their very valuable review on the new crate!
After the rewrite, we merged the following changes this month:
- feat: implement embedded-io traits
- Rename byte transfer functions and update IO trait implementations
- Enhance MmioAddress safety and fix AArch64 instruction emission
- Improve documentation examples and streamline architecture support
- Add API test and improve memory safety in MMIO constructors
Thanks to @mkroening for their contributions!
uefi-rs
Maintained by @GabrielMajeri, @nicholasbishop, and @phip1611
uefi makes it easy to develop Rust software that leverages safe, convenient,
and performant abstractions for UEFI functionality.
We merged the following PRs this month:
- add
joinonPath - uefi: serial: add read_exact() and write_exact() + fix core::fmt::Write for Serial
- runtime: add
CStr16::from_bytes_with_nulfor UCS-2 strings in UEFI Variables - Replace a couple
ascasts withptr::from_ref - release: uefi-raw-0.14.0, uefi-0.37
Thanks to @the-shank for their contributions!
acpi
Maintained by @IsaacWoods
The acpi repository contains crates for parsing the ACPI tables – data structures that the firmware of modern computers use to relay information about the hardware to the OS.
We merged the following changes this month:
- Improve handling of top-level names with new
ResolveBehavioursystem - For discussion: A way of improving regression/integration testing for ASL snippets
- Use correct offset for PCI I/O
- Allow
aml_testerto continue after an interpreter panic - Apply search rules to lookups
Thanks to @martin-hughes for their contributions!
ovmf-prebuilt
Maintained by @nicholasbishop and @phil-opp
The ovmf-prebuilt project provides pre-built edk2 releases to make it easier to set up OVMF. We merged the following changes this month:
- feat: IOMMU support via edk2-platforms and IntelVTdDxe
- Rename build-edk2 to xtask
- Add build-edk2 action to xtask CLI
- xtask: Add update-sources action
- release: 0.2.8
- Update to 2024 edition
Thanks to @PelleKrab for their contributions!
bootloader
Maintained by @phil-opp and @Freax13
The bootloader crate implements a custom Rust-based bootloader for easy loading of 64-bit ELF executables. This month, we merged the following changes:
Thanks to @ic3w1ne for their contribution!
x86_64
Maintained by @phil-opp, @josephlr, and @Freax13
The x86_64 crate provides various abstractions for x86_64 systems, including wrappers for CPU instructions, access to processor-specific registers, and abstraction types for architecture-specific structures such as page tables and descriptor tables.
We merged the following PRs this month:
Other Projects
In this section, we describe updates to Rust OS projects that are not directly related to the rust-osdev organization. Feel free to create a pull request with the updates of your OS project for the next post.
phil-opp/blog_os
(Section written by @phil-opp)
We merged the following changes to the Writing an OS in Rust blog this month:
Thanks to @TakiMoysha for their contribution!
Join Us?
Are you interested in Rust-based operating system development? Our rust-osdev organization is always open to new members and new projects. Just let us know if you want to join! A good way for getting in touch is our Zulip chat.