diff --git a/content/this-month/2026-01/index.md b/content/this-month/2026-01/index.md new file mode 100644 index 0000000..9e8c172 --- /dev/null +++ b/content/this-month/2026-01/index.md @@ -0,0 +1,227 @@ ++++ +title = "This Month in Rust OSDev: January 2026" +date = 2027-02-04 + +[extra] +month = "January 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. + + + +## Announcements, News, and Blog Posts + +Here we collect news, blog posts, etc. related to OS development in Rust. + + + +- [Patina - Developing UEFI With Rust](https://opendevicepartnership.github.io/patina/) + - Repo: https://github.com/OpenDevicePartnership/patina + - [Project Overview on Youtube](https://www.youtube.com/watch?v=iKzHrhpCgUI) +- [Kernel bugs hide for 2 years on average. Some hide for 20.](https://pebblebed.com/blog/kernel-bugs) +- [What does it take to ship Rust in safety-critical?](https://blog.rust-lang.org/2026/01/14/what-does-it-take-to-ship-rust-in-safety-critical/) +- [The Embedded Rustacean Issue #62](https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-62) +- [The Embedded Rustacean Issue #63](https://www.theembeddedrustacean.com/p/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](https://github.com/rust-lang/rust/pull/150151) + - Custom target JSON specs now require `-Zunstable-options` again. This affects OS developers using custom targets. +- Cargo: [add -Z json-target-spec](https://github.com/rust-lang/cargo/pull/16557) + - can also be enabled by adding `json-target-spec = true` to the [unstable] table in `.cargo/config.toml` +- [The Rust GCC backend can now be installed with rustup](https://old.reddit.com/r/rust/comments/1qk9t1t/the_rust_gcc_backend_can_now_be_installed_with/) + - Alternative backend useful for cross-compilation and platforms where LLVM support is limited. +- [`Vec::push` in consts MVP](https://github.com/rust-lang/rust/pull/147893) +- [add allocator parameter to HashMap](https://github.com/rust-lang/rust/pull/148545) +- [add `AtomicPtr::null`](https://github.com/rust-lang/rust/pull/150736) + + +## `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. + + + +### [`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: + +- [Add llvm-tools to components](https://github.com/rust-osdev/bootloader/pull/529) +- [Fix overflow error during address calculation](https://github.com/rust-osdev/bootloader/pull/530) +- [add kernel stack address to BootInfo](https://github.com/rust-osdev/bootloader/pull/531) +- [fix "cargo build --release"](https://github.com/rust-osdev/bootloader/pull/532) +- [Release 0.11.14](https://github.com/rust-osdev/bootloader/pull/533) + +Thanks to [@Wasabi375](https://github.com/Wasabi375) and [@the-ssd](https://github.com/the-ssd) for their contributions! + + +### [`multiboot2`](https://github.com/rust-osdev/multiboot2) +Maintained by [@phip1611](https://github.com/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`](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 improvement this month: + +- [ovmf-prebuilt: Add download retry](https://github.com/rust-osdev/ovmf-prebuilt/pull/254) +- [release: 0.2.7](https://github.com/rust-osdev/ovmf-prebuilt/pull/256) + + + + + + + + +### [`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: + +- [uefi: improve ergonomics of Events](https://github.com/rust-osdev/uefi-rs/pull/1840) +- [uefi: improve doc (add short glossary/important terms overview)](https://github.com/rust-osdev/uefi-rs/pull/1857) +- [workspace: switch to resolver v3](https://github.com/rust-osdev/uefi-rs/pull/1859) +- [flake: update (Nix shell: rust 1.86 -> 1.92)](https://github.com/rust-osdev/uefi-rs/pull/1860) +- [Replace remaining uses of `addr_of`/`addr_of_mut` with raw pointer syntax](https://github.com/rust-osdev/uefi-rs/pull/1870) +- [Bump MSRV to 1.88](https://github.com/rust-osdev/uefi-rs/pull/1871) +- [uefi-raw: serial: fix mutability](https://github.com/rust-osdev/uefi-rs/pull/1872) +- [uefi: serial: improve overall documentation](https://github.com/rust-osdev/uefi-rs/pull/1874) +- [uefi: boot: improve documentation for handles](https://github.com/rust-osdev/uefi-rs/pull/1877) +- [export all text::{input, output} types](https://github.com/rust-osdev/uefi-rs/pull/1880) +- [fix(deps): update rust crate nix to 0.31.0](https://github.com/rust-osdev/uefi-rs/pull/1883) + + + + + + + + +Thanks to [@yaroslav957](https://github.com/yaroslav957) for their contribution! + + +### [`virtio-spec-rs`](https://github.com/rust-osdev/virtio-spec-rs) +Maintained by [@mkroening](https://github.com/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_VALUE` constant](https://github.com/rust-osdev/virtio-spec-rs/pull/11) +- [fix(virtq): clippy::manual_is_multiple_of](https://github.com/rust-osdev/virtio-spec-rs/pull/12) +- [feat(virtio-net): add `VIRTIO_NET_F_CTRL_RX_EXTRA`](https://github.com/rust-osdev/virtio-spec-rs/pull/13) +- [feat(virtio-net): add `VIRTIO_NET_F_GUEST_USO{4,6}`](https://github.com/rust-osdev/virtio-spec-rs/pull/14) +- [feat(features): add `recommendations` and `recommendations_satisfied`](https://github.com/rust-osdev/virtio-spec-rs/pull/15) + + + + + +### [`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: + +- [feat(mapper): add `MappedPageTable::display`](https://github.com/rust-osdev/x86_64/pull/574) +- [fix(instructions): allow unused_unsafe for cpuid](https://github.com/rust-osdev/x86_64/pull/575) +- [feat(mapper): make `OffsetPageTable` a type alias](https://github.com/rust-osdev/x86_64/pull/576) +- [fix(mapper): inline internal `map_to_*` functions](https://github.com/rust-osdev/x86_64/pull/578) +- [docs: fix typos](https://github.com/rust-osdev/x86_64/pull/579) +- [feat(paging): make range types `!Copy`](https://github.com/rust-osdev/x86_64/pull/581) +- [docs(page): fix typos](https://github.com/rust-osdev/x86_64/pull/582) +- [feat: make page types `repr(transparent)` and range types `repr(Rust)`](https://github.com/rust-osdev/x86_64/pull/584) + + + + + + +## 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: + +- [Fix mention of non-existent `keyboard_task` function in async/await post](https://github.com/phil-opp/blog_os/pull/1452) +- [Update 'Minimal Rust Kernel' post to enable unstable `json-target-spec` feature](https://github.com/phil-opp/blog_os/pull/1455) +- [Enable unstable `json-target-spec` feature](https://github.com/phil-opp/blog_os/pull/1456) +- [Fix translations: `no_mangle` attribute is unstable now](https://github.com/phil-opp/blog_os/pull/1457) + +Thanks to [@ebkalderon](https://github.com/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](https://rust-osdev.zulipchat.com).