From b9de4edf974f82417f0c12a60a59948256109648 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Tue, 11 Aug 2026 13:07:54 +0000 Subject: [PATCH 01/14] Add draft for August issue --- content/this-month/2026-08/index.md | 95 +++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 content/this-month/2026-08/index.md diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md new file mode 100644 index 0000000..7b06d58 --- /dev/null +++ b/content/this-month/2026-08/index.md @@ -0,0 +1,95 @@ ++++ +title = "This Month in Rust OSDev: August 2026" +date = 2026-09-01 + +[extra] +month = "August 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 by commenting on the [draft pull request](https://github.com/rust-osdev/homepage/pulls) 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, with many manual tweaks. + + + + + +## Announcements, News, and Blog Posts + +Here we collect news, blog posts, etc. related to OS development in Rust. + + + +No content was submitted for this section this month. + +## Infrastructure and Tooling + +In this section, we collect recent updates to `rustc`, `cargo`, and other tooling that are relevant to Rust OS development. + + + +No content was submitted for this section this month. + +## `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. + + + +No content was submitted for this section 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](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post. + + + +No project updates were submitted this month. + + + +## 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 to get in touch is our [Zulip chat](https://rust-osdev.zulipchat.com). From 7144aafb9e6aba92f05d5a3e651db49b4717bd7f Mon Sep 17 00:00:00 2001 From: jenningschaefer Date: Sun, 30 Aug 2026 18:29:12 +0200 Subject: [PATCH 02/14] Add Open Nexus OS August 2026 update --- content/this-month/2026-08/index.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index 7b06d58..de434e6 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -86,7 +86,16 @@ In this section, we describe updates to Rust OS projects that are not directly r ...<>... --> -No project updates were submitted this month. +### [`open-nexus-OS/open-nexus-OS`](https://github.com/open-nexus-OS/open-nexus-OS) +(Section written by [@JenningSchaefer](https://github.com/JenningSchaefer)) + +[Open Nexus OS](https://github.com/open-nexus-OS/open-nexus-OS) is a capability-based microkernel operating system written in Rust and targeting RISC-V. + +This month, the Open Nexus graphical desktop stack reached a major milestone: its declarative UI DSL is now driving a working desktop interface. The `.nx` UI definitions and `.nxtheme` design tokens are used to implement the actual interface, allowing the desktop UI to be built from the same declarative system used to define its design. + +The desktop stack includes a compositor, window manager, launcher, and UI components running on top of the Open Nexus userspace architecture. The project also includes a boot-to-desktop demonstration showing the graphical environment running in QEMU. + +[Repository](https://github.com/open-nexus-OS/open-nexus-OS) · [Demo video](https://www.youtube.com/watch?v=Vrf6Z1sAY5I) From 7023bfb72d1235a2de85e90170d68b49a899b472 Mon Sep 17 00:00:00 2001 From: jenningschaefer Date: Sun, 30 Aug 2026 18:46:27 +0200 Subject: [PATCH 03/14] Refine Open Nexus August 2026 submission --- content/this-month/2026-08/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index de434e6..25d9768 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -87,15 +87,15 @@ In this section, we describe updates to Rust OS projects that are not directly r --> ### [`open-nexus-OS/open-nexus-OS`](https://github.com/open-nexus-OS/open-nexus-OS) -(Section written by [@JenningSchaefer](https://github.com/JenningSchaefer)) +(Section written by [@jenningschaefer](https://github.com/jenningschaefer)) -[Open Nexus OS](https://github.com/open-nexus-OS/open-nexus-OS) is a capability-based microkernel operating system written in Rust and targeting RISC-V. +[Open Nexus OS](https://open-nexus-os.io/) is a capability-based microkernel operating system written in Rust and targeting RISC-V. This month, the Open Nexus graphical desktop stack reached a major milestone: its declarative UI DSL is now driving a working desktop interface. The `.nx` UI definitions and `.nxtheme` design tokens are used to implement the actual interface, allowing the desktop UI to be built from the same declarative system used to define its design. The desktop stack includes a compositor, window manager, launcher, and UI components running on top of the Open Nexus userspace architecture. The project also includes a boot-to-desktop demonstration showing the graphical environment running in QEMU. -[Repository](https://github.com/open-nexus-OS/open-nexus-OS) · [Demo video](https://www.youtube.com/watch?v=Vrf6Z1sAY5I) +[Website](https://open-nexus-os.io/) · [Repository](https://github.com/open-nexus-OS/open-nexus-OS) · [Demo video](https://www.youtube.com/watch?v=Vrf6Z1sAY5I) From 9858564ebcc61fdea15c9bf6270712d7c302c206 Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Mon, 31 Aug 2026 14:53:18 +0200 Subject: [PATCH 04/14] 2026-08: add uefi-rs section Highlight the specification-compliance and soundness work that went into the uefi-raw v0.16.0 and uefi v0.40.0 releases. --- content/this-month/2026-08/index.md | 33 ++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index 7b06d58..9a592a7 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -71,7 +71,38 @@ In this section, we give an overview of notable changes to the projects hosted u <> --> -No content was submitted for this section this month. +### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs) +Maintained by [@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. + +This month was all about **specification compliance and soundness**. We audited +large parts of `uefi-raw` and `uefi` against the UEFI and PI specifications. +Users now get correct data where the crates previously returned garbage or read +out of bounds, for example: + +- `boot::set_watchdog_timer` passed the watchdog data size in characters instead + of bytes, so firmware only saw half of the data. +- `ProcessorInformation` was 24 bytes too small, so firmware could write past + its end. +- `UsbIo::supported_languages` reported twice the actual number of language IDs, + where the second half was an out-of-bounds read. + +`MemoryDescriptor` is now portable across x86 targets, so kernels and +bootloaders built for a generic i686 target can finally parse a UEFI memory map. +To keep such bugs away, our ABI tests are now `const` assertions evaluated for +the actual target, instead of unit tests that only ever check the host. + +The new `char16!()` macro builds a `Char16` from a character literal in `const` +context - no `unsafe` needed, and a compile error if the character is not valid +in UCS-2. + +All of this is available in `uefi-raw v0.16.0` and `uefi v0.40.0`. We also +refreshed our `CONTRIBUTING.md`, which now documents our expectations regarding +code style, commit style, and AI/LLM-assisted contributions. + +We merged the following PRs this month: ## Other Projects From 07a7d92fff0dde873006982c9579a764e6875ff6 Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Mon, 31 Aug 2026 15:08:29 +0200 Subject: [PATCH 05/14] 2026-08: add multiboot2 section Highlight the UB fixes around unknown specification values and the new tag iteration APIs. --- content/this-month/2026-08/index.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index 9a592a7..3d3496d 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -104,6 +104,31 @@ code style, commit style, and AI/LLM-assisted contributions. We merged the following PRs this month: +### [`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 removed a whole class of undefined behavior. Parsing a structure with a value +unknown to the specification - an unknown framebuffer type, VBE memory model, or +header tag type - used to construct an invalid Rust enum. The new `raw_type!` +macro generates an ABI-safe newtype plus an open-set enum with a `Custom` +variant, so unknown values now pass through safely. `multiboot2-common` got +further soundness fixes around size and alignment validation. + +Users also benefit from `BootInformation::get_tags`, which iterates over _all_ +occurrences of a tag. Network and SMBIOS tags may legitimately appear multiple +times, but our API only exposed the first one. The builder gained `add_network` +- and it turned out that `Builder::network` never included the tag at all. + +Released as `multiboot2 v0.26.1`, `multiboot2-header v0.10.0`, and +`multiboot2-common v0.5.0`. The `raw_type!` work follows in the next release. + +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](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post. From bcd95fc8f36de4fb85433e308fc9089c062739ae Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Mon, 31 Aug 2026 15:08:39 +0200 Subject: [PATCH 06/14] 2026-08: add uart_16550 section Highlight the v0.7.0 and v0.8.0 releases, which mainly improve the behavior on real hardware. --- content/this-month/2026-08/index.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index 3d3496d..c20e58b 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -129,6 +129,24 @@ Released as `multiboot2 v0.26.1`, `multiboot2-header v0.10.0`, and We merged the following PRs this month: +### [`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._ + +Two releases, `v0.7.0` and `v0.8.0`, make the driver behave better on real +hardware. Sending no longer waits for the `MSR::CTS` line by default, as modern +hardware tends to leave that pin disconnected - which previously meant no output +at all. Those who need hardware flow control can re-enable the check via +`Config::check_cts_before_sending`. + +Further, `Config::default()` now disables _all_ interrupts, and `init()` enables +the configured ones only at the very end. This way, a driver does not receive +interrupts before it is ready to handle them. + +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](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post. From 2a27c0db2589b0a198f3a5415c47a670990d78fd Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Mon, 31 Aug 2026 15:08:57 +0200 Subject: [PATCH 07/14] 2026-08: add tar-no-std section Highlight the stricter archive validation in v0.5.0 and the new fuzzing infrastructure. --- content/this-month/2026-08/index.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index c20e58b..55ff28b 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -160,7 +160,28 @@ In this section, we describe updates to Rust OS projects that are not directly r ...<>... --> -No project updates were submitted this month. +### [`phip1611/tar-no-std`](https://github.com/phip1611/tar-no-std) +(Section written by [@phip1611](https://github.com/phip1611)) + +[`tar-no-std`](https://github.com/phip1611/tar-no-std) supports a relevant +subset of Tar archives to extract multiple files from a single Tar archive in +`no_std` environments with zero allocations. A typical use case is a kernel +reading an initial ramdisk. + +The new `v0.5.0` release stops trusting the input. `TarArchive[Ref]::new` now +rejects invalid headers, checksums, payload sizes, and missing archive +termination, so a malformed archive fails right away instead of producing +garbage entries. Numeric fields with invalid UTF-8 bytes no longer silently +parse as zero, and `CorruptDataError` became an enum that names the violated +invariant. Additionally, there is now limited support for POSIX PAX archives +that use extended records only for optional metadata, such as high-precision +timestamps. + +To keep it that way, the repository gained `cargo-fuzz` infrastructure, +including structure-aware fuzzing with checksum-valid archives. + +Thanks to [@internetisalie](https://github.com/internetisalie) and +[@fogti](https://github.com/fogti) for their contributions! From 0e96a4dec39c848dce3f8b00c53f6ae10fb5a6f7 Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Mon, 31 Aug 2026 15:25:14 +0200 Subject: [PATCH 08/14] 2026-08: uefi-rs: announce Anthropic sponsorship --- content/this-month/2026-08/index.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index 55ff28b..d8a6bba 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -102,6 +102,13 @@ All of this is available in `uefi-raw v0.16.0` and `uefi v0.40.0`. We also refreshed our `CONTRIBUTING.md`, which now documents our expectations regarding code style, commit style, and AI/LLM-assisted contributions. +#### Sponsorship by Anthropic + +We are glad to announce that [Anthropic](https://www.anthropic.com/) sponsors @phip1611 for six months +as part of their open source program. The sponsorship covers `uefi-rs` and +related crates in the `rust-osdev` space, with a focus on security issues, +undefined behavior, and specification compliance. Thank you! + We merged the following PRs this month: ### [`multiboot2`](https://github.com/rust-osdev/multiboot2) From 8df082daaecfa1dec34ffcc4f6b238b36a777d14 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 3 Sep 2026 09:35:03 +0000 Subject: [PATCH 09/14] Fill in Rust OSDev changelogs --- content/this-month/2026-08/index.md | 96 +++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index aced175..649be3a 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -111,6 +111,42 @@ undefined behavior, and specification compliance. Thank you! We merged the following PRs this month: +- [UEFI Spec Compliance: Various repr/packed fixes](https://github.com/rust-osdev/uefi-rs/pull/2040) +- [Spec Fixes: Various Smaller Fixes or Additions](https://github.com/rust-osdev/uefi-rs/pull/2041) +- [Spec Fixes: Address various smaller size/buffer mismatches](https://github.com/rust-osdev/uefi-rs/pull/2044) +- [Spec Fixes: various smaller fixes regarding protocols](https://github.com/rust-osdev/uefi-rs/pull/2048) +- [uefi: various UB fixes](https://github.com/rust-osdev/uefi-rs/pull/2052) +- [uefi-raw: make MemoryDescriptor layout portable across x86 targets](https://github.com/rust-osdev/uefi-rs/pull/2036) +- [uefi-raw: fix MemoryDescriptor layout on 32-bit](https://github.com/rust-osdev/uefi-rs/pull/2035) +- [uefi: add convenient char16!() macro](https://github.com/rust-osdev/uefi-rs/pull/2031) +- [replace ABI-related unit tests with const checks](https://github.com/rust-osdev/uefi-rs/pull/2039) +- [contributing: streamline contribution guidance + AI/LLM Policy](https://github.com/rust-osdev/uefi-rs/pull/2029) +- [docs: streamline rustdoc in uefi-raw and uefi](https://github.com/rust-osdev/uefi-rs/pull/2026) +- [various small doc improvements](https://github.com/rust-osdev/uefi-rs/pull/2025) +- [release: uefi-raw-0.16.0 and uefi-0.40.0](https://github.com/rust-osdev/uefi-rs/pull/2054) + + + + + + + + + + + + + + + + + + +Thanks to [@cwize1](https://github.com/cwize1) and [@SpecificProtagonist](https://github.com/SpecificProtagonist) for their contributions! + ### [`multiboot2`](https://github.com/rust-osdev/multiboot2) Maintained by [@phip1611](https://github.com/phip1611) @@ -136,6 +172,12 @@ Released as `multiboot2 v0.26.1`, `multiboot2-header v0.10.0`, and We merged the following PRs this month: +- [Various Subtle UB Fixes](https://github.com/rust-osdev/multiboot2/pull/312) +- [add raw_type! macro for ABI-safe raw newtypes](https://github.com/rust-osdev/multiboot2/pull/314) +- [multiboot2: improve tag getters](https://github.com/rust-osdev/multiboot2/pull/310) +- [treewide: clarify Multiboot2 header APIs and debug output](https://github.com/rust-osdev/multiboot2/pull/309) +- [docs: treewide documentation fixes](https://github.com/rust-osdev/multiboot2/pull/307) + ### [`uart_16550`](https://github.com/rust-osdev/uart_16550) Maintained by [@phip1611](https://github.com/phip1611) @@ -154,6 +196,60 @@ interrupts before it is ready to handle them. We merged the following PRs this month: +- [Allow configuring whether to care about the CTS line](https://github.com/rust-osdev/uart_16550/pull/66) +- [config: disable interrupts by default + document interrupt behavior of init()](https://github.com/rust-osdev/uart_16550/pull/69) +- [doc: tighten cts/hw control flow wording](https://github.com/rust-osdev/uart_16550/pull/68) + +Thanks to [@meithecatte](https://github.com/meithecatte) for this contribution! + +### [`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 uses to relay information about the hardware to the OS. + +We merged the following changes this month: + +- [Resolve names used as package elements lazily](https://github.com/rust-osdev/acpi/pull/320) +- [Fix mutex references and the global lock](https://github.com/rust-osdev/acpi/pull/322) +- [Add Support for Multiple IRQs in IrqDescriptor (2)](https://github.com/rust-osdev/acpi/pull/331) +- [Fix acpi_dumper manifest](https://github.com/rust-osdev/acpi/pull/321) + +Thanks to [@martin-hughes](https://github.com/martin-hughes), [@ArthurHeymans](https://github.com/ArthurHeymans), [@ChocolateLoverRaj](https://github.com/ChocolateLoverRaj), and [@hustlerone](https://github.com/hustlerone) for their contributions! + +### [`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: don't derive zerocopy traits for volatile structs](https://github.com/rust-osdev/virtio-spec-rs/pull/31) +- [feat(features): remove `FeatureBits` bounds that are not elaborated and seal `FeatureBits`](https://github.com/rust-osdev/virtio-spec-rs/pull/20) +- [feat(features): remove `requirements()` and `recommendations()`](https://github.com/rust-osdev/virtio-spec-rs/pull/34) +- [docs: mark Entropy Device as supported](https://github.com/rust-osdev/virtio-spec-rs/pull/25) +- [docs(balloon): add module-level doc comment](https://github.com/rust-osdev/virtio-spec-rs/pull/32) + + + +### [`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. + +We merged the following changes this month: + +- [deps: bump uart_16550 to 0.8.0 + fix UEFI weirdness](https://github.com/rust-osdev/bootloader/pull/580) + - Picks up the `uart_16550` changes described above. On the UEFI path, the bootloader now explicitly disconnects the UEFI console from the serial device before setting up its logger, so that the logger has exclusive ownership of the UART. Previously, UEFI kept driving the device, which duplicated console output on the serial port and fired interrupts before `init()` had finished. + +Thanks to [@phip1611](https://github.com/phip1611) for this contribution! + + + ## 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. From 66b825cceef0ad638507ba32f2379659978e91fb Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 3 Sep 2026 09:35:16 +0000 Subject: [PATCH 10/14] Ignore x.com during link check --- config.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/config.toml b/config.toml index df0591a..16c8c8e 100644 --- a/config.toml +++ b/config.toml @@ -26,6 +26,7 @@ skip_prefixes = [ "https://rusty-hermit.k8s.eonerc.rwth-aachen.de/", # RustyHermit show case "https://www.linux-kvm.org", # see https://letsencrypt.org/docs/dst-root-ca-x3-expiration-september-2021/ "https://twitter.com/", # too many redirects + "https://x.com/", # 403 forbidden for bots "https://nitter.net/", # 403 forbidden "https://www.reddit.com/", # 403 forbidden "https://blog.rust.careers", # Expired certificate From 88535d8d75efe75d48ab06fae598f7c959d2ba09 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 3 Sep 2026 10:13:43 +0000 Subject: [PATCH 11/14] Fill in news and infra sections --- content/this-month/2026-08/index.md | 55 +++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index 649be3a..38e0c56 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -40,7 +40,39 @@ Please follow this template: - (optional) Some additional context --> -No content was submitted for this section this month. +- [Rui Ueyama: "We are rewriting the mold linker in Rust"](https://x.com/rui314/status/2094677980857680052) + - The announcement of mold 3.0: besides the move to Rust, mold is gaining linker script support, with the explicit goal of linking "essentially anything GNU ld can, including kernels and embedded programs". +- [RSoC 2026: EEVDF for Redox](https://www.redox-os.org/news/rsoc-eevdf/) + - Report on this year's Redox Summer of Code project, which replaced Redox's DWRR scheduler with an EEVDF ("Earliest Eligible Virtual Deadline First") implementation. +- [`rseclinux/ouma`: A hardened libc for GNU/Linux systems](https://github.com/rseclinux/ouma) + - A libc for Linux written entirely in Rust, with hardening as an explicit design goal. +- [`Luernn/AldecaldOS`: An hybrid RTOS](https://codeberg.org/Luernn/AldecaldOS) + - A from-scratch embedded kernel in Rust, written as a hybrid real-time OS. +- [RamShared v2: Writing a Linux VRAM Block Driver in Rust & C with 8.74 GiB/s PCIe DMA, io_uring/ublk, and 3 Patches on lore.kernel.org](https://old.reddit.com/r/rust/comments/1w22bx5/ramshared_v2_writing_a_linux_vram_block_driver_in/) + - Turns idle GPU VRAM into a block device, via a `ublk` userspace driver built on `io_uring` plus a Linux 6.18 block driver submitted upstream to the linux-block subsystem. +- [`#[target_feature(enable = "avx2")]` does nothing on `x86_64-unknown-uefi`](https://github.com/Aefinity-AI/alice-aegis/blob/main/docs/posts/2026-08-05_uefi-soft-float-deletes-your-avx2.md) + - A debugging story about hand-written AVX2 kernels that compiled to zero vector instructions on the `x86_64-unknown-uefi` target, because that target enables `+soft-float`. +- [How `no_std` are `no_std` Rust crates really? A survey](https://w-graj.net/posts/rust-no-std-survey/) + - Surveys crates that advertise `no_std` support and checks how many of them actually build without `std`, and under which feature combinations. +- [Alpha-2 Release of RSMalloc: A general-purpose Restartable Sequences (RSEQ) based memory allocator](https://github.com/Metehan120/rsmalloc) + - An allocator built on Linux's restartable sequences, which let a thread's fast path be restarted rather than locked when it is preempted. +- [How Firecracker microVMs work under the hood to sandbox untrusted code and AI agents](https://kerkour.com/firecracker-sandboxing-rust) + - A tour of the Rust-based Firecracker VMM: how it uses KVM, what its minimal device model looks like, and how the guest kernel is booted. +- [How we developed the world's first safety-certified product written in Rust – and why we went bare metal](https://www.sonair.com/journal/how-we-safety-certified-the-worlds-first-rust-implementation) + - Sonair on getting a Rust codebase through safety certification, including why they dropped an RTOS in favour of running bare metal. +- [rustc_codegen_gcc: Progress Report #43](https://blog.antoyo.xyz/rustc_codegen_gcc-progress-report-43) + - Latest progress on the GCC backend for `rustc`, which is one route to Rust on architectures LLVM does not target. +- [A chip-agnostic architecture for bare-metal embedded Rust](https://aaronqian.com/log/2026-08-01-chip-agnostic-architecture-bare-metal-rust/) + - Argues for keeping the hardware-specific layer of a bare-metal project behind narrow traits, so that most of the firmware can be built and tested without the target chip. +- [Minecraft clone in no_std Rust + MMX inline asm running on an IBM ThinkPad 600E](https://youtu.be/caE7W4bFW3c) + - A `no_std` Rust renderer with hand-written MMX inline assembly, booted on a Pentium II laptop. +- [The world's first Game Boy ROM written in Pure Rust](https://github.com/zlfn/rust-gb) + - `rust-gb` compiles Rust for the Game Boy's SM83 CPU on top of an LLVM Z80 backend - a good illustration of what bringing up a genuinely new bare-metal target involves. +- [Your E-Paper Panel Isn't Broken: How Retained State Makes Drivers Look Buggy](https://msj.prose.sh/epaper-retained-state) + - On writing drivers for devices that keep state across resets, and why the usual "initialize everything at startup" assumption breaks down there. +- [A gentle introduction to Embedded Rust](https://niss36.github.io/blog/01-gentle-intro-to-embedded-rust/) +- [The Embedded Rustacean Issue #77](https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-77) + and [Issue #78](https://www.theembeddedrustacean.com/p/the-embedded-rustacean-issue-78) ## Infrastructure and Tooling @@ -53,7 +85,26 @@ In this section, we collect recent updates to `rustc`, `cargo`, and other toolin - (optional) Some additional context --> -No content was submitted for this section this month. +- [target_features: sse (or at least avx2) is incompatible with soft-float ABI](https://github.com/rust-lang/rust/pull/160302) + - Enabling `sse` (and therefore any x86 vector feature) via `#[target_feature]` on a soft-float target such as `x86_64-unknown-uefi` is not supported by LLVM and can crash the backend or silently drop all vector instructions. This is now a future-compatibility warning, reported in dependencies as well, so that whoever builds the final binary actually sees it. +- [Stabilize `extern "custom"`](https://github.com/rust-lang/rust/pull/158504) + - An `extern "custom" fn` has a calling convention that Rust knows nothing about and therefore refuses to call normally. This is the supported way to write `#[naked]` entry points that are only ever reached from hardware or hand-written assembly, such as interrupt handlers or compiler-runtime symbols like `__aeabi_uidivmod`. +- [stabilize size_of_val_raw, align_of_val_raw, Layout::for_value_raw](https://github.com/rust-lang/rust/pull/157572) + - Size and alignment of a value can now be queried through a raw pointer on stable, without having to create a reference first. This matters for allocators and anything else that handles memory which is not (yet) a valid value. +- [make atomic operations const](https://github.com/rust-lang/rust/pull/160079) + - Atomic loads, stores, and read-modify-write operations are now usable in `const` contexts. +- [stabilize `c_variadic_naked_functions`](https://github.com/rust-lang/rust/pull/159746) + - `#[naked]` functions may now use the C variadic ABI, which is needed for hand-written trampolines into variadic C interfaces. +- [Stabilize passing 128-bit integers via vector registers with `asm!` on x86](https://github.com/rust-lang/rust/pull/159525) + - `i128` and `u128` can now be passed to and from inline assembly in SSE registers. +- [Move `std::io::copy` to `alloc::io`](https://github.com/rust-lang/rust/pull/158548) + - Continues the move of `std::io` into `core` and `alloc` that we covered last month. +- [std: uefi: fix File::seek returning the EOF sentinel](https://github.com/rust-lang/rust/pull/161887) + - On the `x86_64-unknown-uefi` std target, `seek(SeekFrom::End(0))` returned UEFI's `0xFFFF_FFFF_FFFF_FFFF` "end of file" sentinel instead of the actual position, which also broke the default `Seek::stream_len`. +- [Re-stabilize build-dir layout v2](https://github.com/rust-lang/cargo/pull/17354) + - Cargo's new `build-dir` layout is stable again after being reverted in July. Custom runners that locate test binaries themselves may need the same kind of adjustment that `bootimage` made last month. +- [volatile: allow accesses to non-AM memory to trap](https://github.com/rust-lang/rust/pull/160564) + - Not merged yet, but worth watching: this specifies that volatile accesses may trap, which is what MMIO code relies on in practice. According to the author it also removes the last case of "time-traveling UB" in Rust. ## `rust-osdev` Projects From cd4dcedc57bf0cbf5e6a98c91e5dce6696bbbcca Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 3 Sep 2026 10:13:54 +0000 Subject: [PATCH 12/14] Trim trailing whitespace --- content/this-month/2026-08/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index 38e0c56..fd5b361 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -155,9 +155,9 @@ code style, commit style, and AI/LLM-assisted contributions. #### Sponsorship by Anthropic -We are glad to announce that [Anthropic](https://www.anthropic.com/) sponsors @phip1611 for six months -as part of their open source program. The sponsorship covers `uefi-rs` and -related crates in the `rust-osdev` space, with a focus on security issues, +We are glad to announce that [Anthropic](https://www.anthropic.com/) sponsors @phip1611 for six months +as part of their open source program. The sponsorship covers `uefi-rs` and +related crates in the `rust-osdev` space, with a focus on security issues, undefined behavior, and specification compliance. Thank you! We merged the following PRs this month: From 4f23764ffc1ac60a3066de7c0ddd0f51786d3c5c Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 3 Sep 2026 10:14:05 +0000 Subject: [PATCH 13/14] Set publish date --- content/this-month/2026-08/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/this-month/2026-08/index.md b/content/this-month/2026-08/index.md index fd5b361..397303f 100644 --- a/content/this-month/2026-08/index.md +++ b/content/this-month/2026-08/index.md @@ -1,6 +1,6 @@ +++ title = "This Month in Rust OSDev: August 2026" -date = 2026-09-01 +date = 2026-09-03 [extra] month = "August 2026" From 4e60e7f11cab4fe2a5288a353be45e5c431f40dc Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Thu, 3 Sep 2026 10:19:55 +0000 Subject: [PATCH 14/14] Fix link check --- config.toml | 11 +++++++++++ content/this-month/2024-03/index.md | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/config.toml b/config.toml index 16c8c8e..e619421 100644 --- a/config.toml +++ b/config.toml @@ -29,11 +29,22 @@ skip_prefixes = [ "https://x.com/", # 403 forbidden for bots "https://nitter.net/", # 403 forbidden "https://www.reddit.com/", # 403 forbidden + "https://old.reddit.com/", # 403 forbidden "https://blog.rust.careers", # Expired certificate "https://gee.cs.oswego.edu", # times out "https://web.archive.org", # times out "https://apollolabsblog.hashnode.dev", # requires js "https://doi.org", # 403 forbidden + "https://lwn.net", # rate limits CI runners (429) + "https://security.googleblog.com", # rate limits CI runners (429) + "https://gitter.im", # redirects to app.gitter.im (301) + "https://mirage.io", # intermittent connection failures +] + +# These resolve fine, but their "#..." fragments are client-side routes +# rather than real anchors in the returned HTML. +skip_anchor_prefixes = [ + "https://rust-osdev.zulipchat.com", # SPA, fragments are routes ] [extra] diff --git a/content/this-month/2024-03/index.md b/content/this-month/2024-03/index.md index 4d7280a..49d54f6 100644 --- a/content/this-month/2024-03/index.md +++ b/content/this-month/2024-03/index.md @@ -33,7 +33,7 @@ Please follow this template: --> - [An IRC client in your motherboard](https://axleos.com/an-irc-client-in-your-motherboard/) -- [octox: Writing a Unix-like OS in Rust](https://vmm.dev/en/rust/osinrust.md) +- [octox: Writing a Unix-like OS in Rust](https://web.archive.org/web/20260520091419/https://vmm.dev/en/rust/osinrust.md) - [This Month in Redox](https://redox-os.org/news/this-month-240330/) - [Redox Kernel Improvements](https://redox-os.org/news/kernel-10/) - [MOROS 0.10.3](https://github.com/vinc/moros/releases/tag/v0.10.3)