This Month in Rust OSDev: January 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.
Announcements, News, and Blog Posts
Here we collect news, blog posts, etc. related to OS development in Rust.
- Patina - Developing UEFI With Rust
- Repo: https://github.com/OpenDevicePartnership/patina
- Project Overview on Youtube
- Kernel bugs hide for 2 years on average. Some hide for 20.
- What does it take to ship Rust in safety-critical?
- The Embedded Rustacean Issue #62
- The Embedded Rustacean Issue #63
Infrastructure and Tooling
In this section, we collect recent updates to rustc, cargo, and other tooling that are relevant to Rust OS development.
- Destabilise target-spec-json
- Custom target JSON specs now require
-Zunstable-optionsagain. This affects OS developers using custom targets.
- Custom target JSON specs now require
- Cargo: add -Z json-target-spec
- can also be enabled by adding
json-target-spec = trueto the [unstable] table in.cargo/config.toml
- can also be enabled by adding
- The Rust GCC backend can now be installed with rustup
- Alternative backend useful for cross-compilation and platforms where LLVM support is limited.
Vec::pushin consts MVP- add allocator parameter to HashMap
- add
AtomicPtr::null
rust-osdev Projects
In this section, we give an overview of notable changes to the projects hosted under the rust-osdev organization.
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:
- Add llvm-tools to components
- Fix overflow error during address calculation
- add kernel stack address to BootInfo
- fix "cargo build --release"
- Release 0.11.14
Thanks to @Wasabi375 and @the-ssd for their contributions!
multiboot2
Maintained by @phip1611
Convenient and safe parsing of Multiboot2 Boot Information (MBI) structures and the contained information tags. Usable in no_std environments, such as a kernel. An optional builder feature also allows the construction of the corresponding structures.
We merged the following PRs this month:
No notable changes this month.
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 improvement this month:
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:
- uefi: improve ergonomics of Events
- uefi: improve doc (add short glossary/important terms overview)
- workspace: switch to resolver v3
- flake: update (Nix shell: rust 1.86 -> 1.92)
- Replace remaining uses of
addr_of/addr_of_mutwith raw pointer syntax - Bump MSRV to 1.88
- uefi-raw: serial: fix mutability
- uefi: serial: improve overall documentation
- uefi: boot: improve documentation for handles
- export all text::{input, output} types
- fix(deps): update rust crate nix to 0.31.0
Thanks to @yaroslav957 for their contribution!
virtio-spec-rs
Maintained by @mkroening
The virtio-spec crate provides definitions from the Virtual I/O Device (VIRTIO) specification.
This project aims to be unopinionated regarding actual VIRTIO drivers that are implemented on top of this crate.
We merged the following PRs this month:
- feat(virtio-mmio): add
MAGIC_VALUEconstant - fix(virtq): clippy::manual_is_multiple_of
- feat(virtio-net): add
VIRTIO_NET_F_CTRL_RX_EXTRA - feat(virtio-net): add
VIRTIO_NET_F_GUEST_USO{4,6} - feat(features): add
recommendationsandrecommendations_satisfied
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:
- feat(mapper): add
MappedPageTable::display - fix(instructions): allow unused_unsafe for cpuid
- feat(mapper): make
OffsetPageTablea type alias - fix(mapper): inline internal
map_to_*functions - docs: fix typos
- feat(paging): make range types
!Copy - docs(page): fix typos
- feat: make page types
repr(transparent)and range typesrepr(Rust)
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:
- Fix mention of non-existent
keyboard_taskfunction in async/await post - Update 'Minimal Rust Kernel' post to enable unstable
json-target-specfeature - Enable unstable
json-target-specfeature - Fix translations:
no_mangleattribute is unstable now
Thanks to @ebkalderon 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.