diff --git a/content/this-month/2026-03/index.md b/content/this-month/2026-03/index.md new file mode 100644 index 0000000..5380b13 --- /dev/null +++ b/content/this-month/2026-03/index.md @@ -0,0 +1,260 @@ ++++ +title = "This Month in Rust OSDev: March 2026" +date = 2026-04-08 + +[extra] +month = "March 2026" +editors = ["phil-opp"] ++++ + +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](https://github.com/rust-osdev/homepage/). 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](https://github.com/rust-osdev/homepage/issues/new) or using our _comment form_ at the bottom of this page. + +Please submit interesting posts and projects for the next issue [on Zulip](https://rust-osdev.zulipchat.com/#narrow/channel/435142-newsletter/topic/Content.20suggestions/with/580172810) or via a PR [on GitHub](https://github.com/rust-osdev/homepage/). + + +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](https://www.redox-os.org/news/nlnet-cap-nsmgr-cwd/) +- [Ferrous Systems: "Accessing Hardware in Rust"](https://ferrous-systems.com/blog/hardware-access-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](https://www.ralfj.de/blog/2026/03/13/inline-asm.html) + - 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](https://youtu.be/rgjTPBRae6I) + - Interview about writing the Tyr GPU kernel driver for Arm Mali hardware in Rust. +- [Ariel OS v0.4.0](https://github.com/ariel-os/ariel-os/blob/main/CHANGELOG.md#040---2026-03-18) + - 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](https://github.com/iss4cf0ng/Elfina) + - Educational ELF loader supporting x86 and x86-64 Linux binaries, with mmap and memfd execution modes. +- [VectorWare: "Rust threads on the GPU"](https://www.vectorware.com/blog/threads-on-gpu) + - Maps Rust's `std::thread` API to GPU warps, enabling familiar concurrent Rust code to compile and run on GPU hardware. + +## 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`](https://github.com/rust-lang/libs-team/issues/755) + - Approved proposal to move OS-independent parts of `std::io` to `alloc`, making IO traits available in `no_std + alloc` environments. The [implementation PR](https://github.com/rust-lang/rust/pull/152918) is in progress. +- [Make atomic primitives type aliases of `Atomic`](https://github.com/rust-lang/rust/pull/153015) + - Refactors all atomic types (`AtomicI32`, `AtomicBool`, etc.) into type aliases of a generic `Atomic`. + - Only types that implement the sealed `AtomicPrimitive` trait can be used with `Atomic` +- [Implement `MaybeDangling` compiler support](https://github.com/rust-lang/rust/pull/150447) + - Adds compiler-level support for the `MaybeDangling` wrapper type, which relaxes aliasing assumptions on references. Important for unsafe code dealing with self-referential structures and raw memory. +- [Constify `Vec::{into, from}_raw_parts{_in|_alloc}`](https://github.com/rust-lang/rust/pull/153399) + - Makes Vec raw parts methods usable in const contexts. +- [Target specs: stricter checks for LLVM ABI values, and correlate with `cfg(target_abi)`](https://github.com/rust-lang/rust/pull/153769) + - Tightens ABI validation in target specs. Note: out-of-tree JSON custom targets may need updating. +- [`-Zbranch-protection` is a target modifier](https://github.com/rust-lang/rust/pull/152909) + - Makes `-Zbranch-protection` a target modifier, enforcing consistent application across the entire crate graph. Important for AArch64 kernel security (PAC/BTI). +- [Defer codegen for the VaList Drop impl to actual uses](https://github.com/rust-lang/rust/pull/154133) + - 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`](https://github.com/rust-osdev/about) organization. + + + + +### [`uart_16550`](https://github.com/rust-osdev/uart_16550) +Maintained by [@phip1611](https://github.com/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](https://github.com/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](https://github.com/phip1611) is also taking over maintenance of the crate, thanks a lot! + +More info: + +- +- +- + +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](https://github.com/rust-osdev/uart_16550/pull/42) +- [Rename byte transfer functions and update IO trait implementations](https://github.com/rust-osdev/uart_16550/pull/49) +- [Enhance MmioAddress safety and fix AArch64 instruction emission](https://github.com/rust-osdev/uart_16550/pull/50) +- [Improve documentation examples and streamline architecture support](https://github.com/rust-osdev/uart_16550/pull/53) +- [Add API test and improve memory safety in MMIO constructors](https://github.com/rust-osdev/uart_16550/pull/54) + + + + + + + +Thanks to [@mkroening](https://github.com/mkroening) for their contributions! + +### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs) +Maintained by [@GabrielMajeri](https://github.com/GabrielMajeri), [@nicholasbishop](https://github.com/nicholasbishop), and [@phip1611](https://github.com/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 `join` on `Path`](https://github.com/rust-osdev/uefi-rs/pull/1903) +- [uefi: serial: add read_exact() and write_exact() + fix core::fmt::Write for Serial](https://github.com/rust-osdev/uefi-rs/pull/1875) +- [runtime: add `CStr16::from_bytes_with_nul` for UCS-2 strings in UEFI Variables](https://github.com/rust-osdev/uefi-rs/pull/1915) +- [Replace a couple `as` casts with `ptr::from_ref`](https://github.com/rust-osdev/uefi-rs/pull/1917) +- [release: uefi-raw-0.14.0, uefi-0.37](https://github.com/rust-osdev/uefi-rs/pull/1918) + + + + + + + + + + + + +Thanks to [@the-shank](https://github.com/the-shank) for their contributions! + + + + +### [`acpi`](https://github.com/rust-osdev/acpi) +Maintained by [@IsaacWoods](https://github.com/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 `ResolveBehaviour` system](https://github.com/rust-osdev/acpi/pull/270) +- [For discussion: A way of improving regression/integration testing for ASL snippets](https://github.com/rust-osdev/acpi/pull/269) +- [Use correct offset for PCI I/O](https://github.com/rust-osdev/acpi/pull/280) +- [Allow `aml_tester` to continue after an interpreter panic](https://github.com/rust-osdev/acpi/pull/277) +- [Apply search rules to lookups](https://github.com/rust-osdev/acpi/pull/283) + + + + + +Thanks to [@martin-hughes](https://github.com/martin-hughes) for their contributions! + + +### [`ovmf-prebuilt`](https://github.com/rust-osdev/ovmf-prebuilt) +Maintained by [@nicholasbishop](https://github.com/nicholasbishop) and [@phil-opp](https://github.com/phil-opp) + +The `ovmf-prebuilt` project provides pre-built [edk2](https://github.com/tianocore/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](https://github.com/rust-osdev/ovmf-prebuilt/pull/275) +- [Rename build-edk2 to xtask](https://github.com/rust-osdev/ovmf-prebuilt/pull/277) +- [Add build-edk2 action to xtask CLI](https://github.com/rust-osdev/ovmf-prebuilt/pull/278) +- [xtask: Add update-sources action](https://github.com/rust-osdev/ovmf-prebuilt/pull/280) +- [release: 0.2.8](https://github.com/rust-osdev/ovmf-prebuilt/pull/282) +- [Update to 2024 edition](https://github.com/rust-osdev/ovmf-prebuilt/pull/283) + + + + + + + + +Thanks to [@PelleKrab](https://github.com/PelleKrab) for their contributions! + + +### [`bootloader`](https://github.com/rust-osdev/bootloader) +Maintained by [@phil-opp](https://github.com/phil-opp) and [@Freax13](https://github.com/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: + +- [don't use BPB_TotSec16 to determine FAT type](https://github.com/rust-osdev/bootloader/pull/547) +- [speed up BIOS bootloader](https://github.com/rust-osdev/bootloader/pull/550) + + + + + +Thanks to [@ic3w1ne](https://github.com/ic3w1ne) for their contribution! + + +### [`x86_64`](https://github.com/rust-osdev/x86_64) +Maintained by [@phil-opp](https://github.com/phil-opp), [@josephlr](https://github.com/orgs/rust-osdev/people/josephlr), and [@Freax13](https://github.com/orgs/rust-osdev/people/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: + +- [don't enable abi_x86_interrupt if not needed](https://github.com/rust-osdev/x86_64/pull/585) + + +## 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](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post. + + + +### [`phil-opp/blog_os`](https://github.com/phil-opp/blog_os) +(Section written by [@phil-opp](https://github.com/phil-opp)) + +We merged the following changes to the [_Writing an OS in Rust_](https://os.phil-opp.com/) blog this month: + +- [[Translation] translated post 10 into russian](https://github.com/phil-opp/blog_os/pull/1469) + +Thanks to [@TakiMoysha](https://github.com/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](https://rust-osdev.zulipchat.com).