Skip to content

Commit bfac75f

Browse files
authored
Merge pull request #276 from rust-osdev/next
This Month in Rust OSDev: March 2026
2 parents b0c00e9 + 859888e commit bfac75f

File tree

1 file changed

+260
-0
lines changed

1 file changed

+260
-0
lines changed
Lines changed: 260 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,260 @@
1+
+++
2+
title = "This Month in Rust OSDev: March 2026"
3+
date = 2026-04-08
4+
5+
[extra]
6+
month = "March 2026"
7+
editors = ["phil-opp"]
8+
+++
9+
10+
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.
11+
12+
<!-- more -->
13+
14+
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 <a href="#comment-form">_comment form_</a> at the bottom of this page.
15+
16+
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/).
17+
18+
<span class="gray">
19+
Disclaimer: Automated scripts and AI assistance were used for collecting and categorizing links.
20+
Everything was proofread and checked manually and there were many manual tweaks.
21+
</span>
22+
23+
<!--
24+
This is a draft for the upcoming "This Month in Rust OSDev (March 2026)" post.
25+
Feel free to create pull requests against the `next` branch to add your
26+
content here.
27+
Please take a look at the past posts on https://rust-osdev.com/ to see the
28+
general structure of these posts.
29+
-->
30+
31+
## Announcements, News, and Blog Posts
32+
33+
Here we collect news, blog posts, etc. related to OS development in Rust.
34+
35+
<!--
36+
Please follow this template:
37+
38+
- [Title](https://example.com)
39+
- (optional) Some additional context
40+
-->
41+
42+
- [Redox OS: Capability-based Security — Namespace and CWD](https://www.redox-os.org/news/nlnet-cap-nsmgr-cwd/)
43+
- [Ferrous Systems: "Accessing Hardware in Rust"](https://ferrous-systems.com/blog/hardware-access-rust/)
44+
- Compares four Rust hardware abstraction approaches (svd2rust, tock-registers, safe-mmio, derive-mmio) for bare-metal programming.
45+
- [How to use storytelling to fit inline assembly into Rust](https://www.ralfj.de/blog/2026/03/13/inline-asm.html)
46+
- Proposes a "storytelling" approach where inline assembly blocks must correspond to equivalent Rust code, ensuring soundness and allowing compiler optimizations.
47+
- Video: [Writing a Linux GPU Kernel Driver in Rust with Daniel Almeida](https://youtu.be/rgjTPBRae6I)
48+
- Interview about writing the Tyr GPU kernel driver for Arm Mali hardware in Rust.
49+
- [Ariel OS v0.4.0](https://github.com/ariel-os/ariel-os/blob/main/CHANGELOG.md#040---2026-03-18)
50+
- New release of this embedded Rust RTOS adds BLE on ESP32, USB CDC-NCM Ethernet, GNSS sensor support, and stack usage measurement.
51+
- [Elfina: Multi-architecture ELF Loader in Rust](https://github.com/iss4cf0ng/Elfina)
52+
- Educational ELF loader supporting x86 and x86-64 Linux binaries, with mmap and memfd execution modes.
53+
- [VectorWare: "Rust threads on the GPU"](https://www.vectorware.com/blog/threads-on-gpu)
54+
- Maps Rust's `std::thread` API to GPU warps, enabling familiar concurrent Rust code to compile and run on GPU hardware.
55+
56+
## Infrastructure and Tooling
57+
58+
In this section, we collect recent updates to `rustc`, `cargo`, and other tooling that are relevant to Rust OS development.
59+
60+
<!--
61+
Please use the following template:
62+
63+
- [Title](https://example.com)
64+
- (optional) Some additional context
65+
-->
66+
67+
- [ACP: Introduce `alloc::io`](https://github.com/rust-lang/libs-team/issues/755)
68+
- 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.
69+
- [Make atomic primitives type aliases of `Atomic<T>`](https://github.com/rust-lang/rust/pull/153015)
70+
- Refactors all atomic types (`AtomicI32`, `AtomicBool`, etc.) into type aliases of a generic `Atomic<T>`.
71+
- Only types that implement the sealed `AtomicPrimitive` trait can be used with `Atomic<T>`
72+
- [Implement `MaybeDangling` compiler support](https://github.com/rust-lang/rust/pull/150447)
73+
- 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.
74+
- [Constify `Vec::{into, from}_raw_parts{_in|_alloc}`](https://github.com/rust-lang/rust/pull/153399)
75+
- Makes Vec raw parts methods usable in const contexts.
76+
- [Target specs: stricter checks for LLVM ABI values, and correlate with `cfg(target_abi)`](https://github.com/rust-lang/rust/pull/153769)
77+
- Tightens ABI validation in target specs. Note: out-of-tree JSON custom targets may need updating.
78+
- [`-Zbranch-protection` is a target modifier](https://github.com/rust-lang/rust/pull/152909)
79+
- Makes `-Zbranch-protection` a target modifier, enforcing consistent application across the entire crate graph. Important for AArch64 kernel security (PAC/BTI).
80+
- [Defer codegen for the VaList Drop impl to actual uses](https://github.com/rust-lang/rust/pull/154133)
81+
- Allows compiling libcore with codegen backends that don't implement VaList (like Cranelift). Unblocks alternative backends for bare-metal work.
82+
83+
## `rust-osdev` Projects
84+
85+
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.
86+
87+
<!--
88+
Please use the following template:
89+
90+
### [`repo_name`](https://github.com/rust-osdev/repo_name)
91+
<span class="maintainers">Maintained by [@maintainer_1](https://github.com/maintainer_1)</span>
92+
93+
The `repo_name` crate ...<<short introduction>>...
94+
95+
We merged the following changes this month:
96+
<<changelog, either in list or text form>>
97+
-->
98+
99+
100+
### [`uart_16550`](https://github.com/rust-osdev/uart_16550)
101+
<span class="maintainers">Maintained by [@phip1611](https://github.com/phip1611)</span>
102+
103+
Simple yet highly configurable low-level driver for 16550 UART devices,
104+
typically known and used as serial ports or COM ports.
105+
106+
We've just released `v0.5.0` - a **complete rewrite** and fresh start of the crate, implemented by
107+
[@phip1611](https://github.com/phip1611).
108+
The main motivation is to make the crate fit for working on real hardware,
109+
clean up technical debt, and streamline the code paths for x86 port I/O and
110+
MMIO. [@phip1611](https://github.com/phip1611) is also taking over maintenance of the crate, thanks a lot!
111+
112+
More info:
113+
114+
- <https://github.com/rust-osdev/uart_16550/releases/tag/v0.5.0>
115+
- <https://docs.rs/uart_16550/0.5.0/uart_16550/>
116+
- <https://github.com/rust-osdev/uart_16550/pull/41>
117+
118+
Special Thanks to Philipp Oppermann (@phil-opp) and Martin Kröning (@mkroening)
119+
for their very valuable review on the new crate!
120+
121+
After the rewrite, we merged the following changes this month:
122+
123+
- [feat: implement embedded-io traits](https://github.com/rust-osdev/uart_16550/pull/42)
124+
- [Rename byte transfer functions and update IO trait implementations](https://github.com/rust-osdev/uart_16550/pull/49)
125+
- [Enhance MmioAddress safety and fix AArch64 instruction emission](https://github.com/rust-osdev/uart_16550/pull/50)
126+
- [Improve documentation examples and streamline architecture support](https://github.com/rust-osdev/uart_16550/pull/53)
127+
- [Add API test and improve memory safety in MMIO constructors](https://github.com/rust-osdev/uart_16550/pull/54)
128+
129+
<!-- - [treewide: nuke old repo and replace with rewrite from @phip1611](https://github.com/rust-osdev/uart_16550/pull/41) -->
130+
<!-- - [Bump crate-ci/typos from 1.41.0 to 1.44.0](https://github.com/rust-osdev/uart_16550/pull/43) -->
131+
<!-- - [Bump bitflags from 2.10.0 to 2.11.0](https://github.com/rust-osdev/uart_16550/pull/44) -->
132+
<!-- - [Bump assert2 from 0.3.16 to 0.4.0](https://github.com/rust-osdev/uart_16550/pull/45) -->
133+
<!-- - [doc: update changelog](https://github.com/rust-osdev/uart_16550/pull/46) -->
134+
135+
Thanks to [@mkroening](https://github.com/mkroening) for their contributions!
136+
137+
### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs)
138+
<span class="maintainers">Maintained by [@GabrielMajeri](https://github.com/GabrielMajeri), [@nicholasbishop](https://github.com/nicholasbishop), and [@phip1611](https://github.com/phip1611)</span>
139+
140+
`uefi` makes it easy to develop Rust software that leverages safe, convenient,
141+
and performant abstractions for UEFI functionality.
142+
143+
We merged the following PRs this month:
144+
145+
- [add `join` on `Path`](https://github.com/rust-osdev/uefi-rs/pull/1903)
146+
- [uefi: serial: add read_exact() and write_exact() + fix core::fmt::Write for Serial](https://github.com/rust-osdev/uefi-rs/pull/1875)
147+
- [runtime: add `CStr16::from_bytes_with_nul` for UCS-2 strings in UEFI Variables](https://github.com/rust-osdev/uefi-rs/pull/1915)
148+
- [Replace a couple `as` casts with `ptr::from_ref`](https://github.com/rust-osdev/uefi-rs/pull/1917)
149+
- [release: uefi-raw-0.14.0, uefi-0.37](https://github.com/rust-osdev/uefi-rs/pull/1918)
150+
151+
<!-- - [Fix new clippy lints](https://github.com/rust-osdev/uefi-rs/pull/1908) -->
152+
<!-- - [chore(deps): update rust crate quote to v1.0.45](https://github.com/rust-osdev/uefi-rs/pull/1910) -->
153+
<!-- - [chore(deps): update rust crate ovmf-prebuilt to v0.2.8](https://github.com/rust-osdev/uefi-rs/pull/1909) -->
154+
<!-- - [test-runner: rename cpy -> copy to make `typos` happy](https://github.com/rust-osdev/uefi-rs/pull/1912) -->
155+
<!-- - [chore(deps): update crate-ci/typos action to v1.44.0](https://github.com/rust-osdev/uefi-rs/pull/1894) -->
156+
<!-- - [chore(deps): update rust crate tempfile to v3.27.0](https://github.com/rust-osdev/uefi-rs/pull/1914) -->
157+
<!-- - [chore(deps): update rust crate clap to v4.6.0](https://github.com/rust-osdev/uefi-rs/pull/1913) -->
158+
<!-- - [cargo: update deps (fix GitHub Security Alerts)](https://github.com/rust-osdev/uefi-rs/pull/1916) -->
159+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/uefi-rs/pull/1922) -->
160+
<!-- - [chore(deps): update codecov/codecov-action action to v5.5.3](https://github.com/rust-osdev/uefi-rs/pull/1919) -->
161+
162+
Thanks to [@the-shank](https://github.com/the-shank) for their contributions!
163+
164+
165+
166+
167+
### [`acpi`](https://github.com/rust-osdev/acpi)
168+
<span class="maintainers">Maintained by [@IsaacWoods](https://github.com/IsaacWoods)</span>
169+
170+
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.
171+
172+
We merged the following changes this month:
173+
174+
- [Improve handling of top-level names with new `ResolveBehaviour` system](https://github.com/rust-osdev/acpi/pull/270)
175+
- [For discussion: A way of improving regression/integration testing for ASL snippets](https://github.com/rust-osdev/acpi/pull/269)
176+
- [Use correct offset for PCI I/O](https://github.com/rust-osdev/acpi/pull/280)
177+
- [Allow `aml_tester` to continue after an interpreter panic](https://github.com/rust-osdev/acpi/pull/277)
178+
- [Apply search rules to lookups](https://github.com/rust-osdev/acpi/pull/283)
179+
180+
<!-- - [Add a toolchain file](https://github.com/rust-osdev/acpi/pull/268) -->
181+
<!-- - [Fix aml_tester files argument](https://github.com/rust-osdev/acpi/pull/267) -->
182+
<!-- - [Typo - update PCI config location](https://github.com/rust-osdev/acpi/pull/279) -->
183+
184+
Thanks to [@martin-hughes](https://github.com/martin-hughes) for their contributions!
185+
186+
187+
### [`ovmf-prebuilt`](https://github.com/rust-osdev/ovmf-prebuilt)
188+
<span class="maintainers">Maintained by [@nicholasbishop](https://github.com/nicholasbishop) and [@phil-opp](https://github.com/phil-opp)</span>
189+
190+
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:
191+
192+
- [feat: IOMMU support via edk2-platforms and IntelVTdDxe](https://github.com/rust-osdev/ovmf-prebuilt/pull/275)
193+
- [Rename build-edk2 to xtask](https://github.com/rust-osdev/ovmf-prebuilt/pull/277)
194+
- [Add build-edk2 action to xtask CLI](https://github.com/rust-osdev/ovmf-prebuilt/pull/278)
195+
- [xtask: Add update-sources action](https://github.com/rust-osdev/ovmf-prebuilt/pull/280)
196+
- [release: 0.2.8](https://github.com/rust-osdev/ovmf-prebuilt/pull/282)
197+
- [Update to 2024 edition](https://github.com/rust-osdev/ovmf-prebuilt/pull/283)
198+
199+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/ovmf-prebuilt/pull/276) -->
200+
<!-- - [Reformat ureq dependency to one line](https://github.com/rust-osdev/ovmf-prebuilt/pull/279) -->
201+
<!-- - [Ignore files generated during ovmf-prebuilt test](https://github.com/rust-osdev/ovmf-prebuilt/pull/281) -->
202+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/ovmf-prebuilt/pull/284) -->
203+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/ovmf-prebuilt/pull/286) -->
204+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/ovmf-prebuilt/pull/289) -->
205+
206+
Thanks to [@PelleKrab](https://github.com/PelleKrab) for their contributions!
207+
208+
209+
### [`bootloader`](https://github.com/rust-osdev/bootloader)
210+
<span class="maintainers">Maintained by [@phil-opp](https://github.com/phil-opp) and [@Freax13](https://github.com/Freax13)</span>
211+
212+
The `bootloader` crate implements a custom Rust-based bootloader for easy loading of 64-bit ELF executables. This month, we merged the following changes:
213+
214+
- [don't use BPB_TotSec16 to determine FAT type](https://github.com/rust-osdev/bootloader/pull/547)
215+
- [speed up BIOS bootloader](https://github.com/rust-osdev/bootloader/pull/550)
216+
217+
<!-- - [Fix doc link](https://github.com/rust-osdev/bootloader/pull/548) -->
218+
<!-- - [Bump tar from 0.4.44 to 0.4.45 in /examples/basic](https://github.com/rust-osdev/bootloader/pull/553) -->
219+
<!-- - [Bump rustls-webpki from 0.103.8 to 0.103.10 in /examples/basic](https://github.com/rust-osdev/bootloader/pull/554) -->
220+
221+
Thanks to [@ic3w1ne](https://github.com/ic3w1ne) for their contribution!
222+
223+
224+
### [`x86_64`](https://github.com/rust-osdev/x86_64)
225+
<span class="maintainers">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)</span>
226+
227+
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.
228+
229+
We merged the following PRs this month:
230+
231+
- [don't enable abi_x86_interrupt if not needed](https://github.com/rust-osdev/x86_64/pull/585)
232+
233+
234+
## Other Projects
235+
236+
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.
237+
238+
<!--
239+
Please use the following template:
240+
241+
### [`owner_name/repo_name`](https://github.com/rust-osdev/owner_name/repo_name)
242+
<span class="maintainers">(Section written by [@your_github_name](https://github.com/your_github_name))</span>
243+
244+
...<<your project updates>>...
245+
-->
246+
247+
### [`phil-opp/blog_os`](https://github.com/phil-opp/blog_os)
248+
<span class="maintainers">(Section written by [@phil-opp](https://github.com/phil-opp))</span>
249+
250+
We merged the following changes to the [_Writing an OS in Rust_](https://os.phil-opp.com/) blog this month:
251+
252+
- [[Translation] translated post 10 into russian](https://github.com/phil-opp/blog_os/pull/1469)
253+
254+
Thanks to [@TakiMoysha](https://github.com/TakiMoysha) for their contribution!
255+
256+
257+
258+
## Join Us?
259+
260+
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).

0 commit comments

Comments
 (0)