diff --git a/.github/workflows/build-site.yml b/.github/workflows/build-site.yml
index 4781fa7..5798cd6 100644
--- a/.github/workflows/build-site.yml
+++ b/.github/workflows/build-site.yml
@@ -17,10 +17,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: "Download Zola"
- run: curl -sL https://github.com/getzola/zola/releases/download/v0.16.1/zola-v0.16.1-x86_64-unknown-linux-gnu.tar.gz | tar zxv
+ run: curl -sL https://github.com/getzola/zola/releases/download/v0.22.1/zola-v0.22.1-x86_64-unknown-linux-gnu.tar.gz | tar zxv
- name: "Build Site"
run: ./zola build
@@ -36,10 +36,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- name: "Download Zola"
- run: curl -sL https://github.com/getzola/zola/releases/download/v0.16.1/zola-v0.16.1-x86_64-unknown-linux-gnu.tar.gz | tar zxv
+ run: curl -sL https://github.com/getzola/zola/releases/download/v0.22.1/zola-v0.22.1-x86_64-unknown-linux-gnu.tar.gz | tar zxv
- name: "Run zola check"
run: ./zola check
@@ -49,7 +49,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- run: curl -L https://git.io/misspell | bash
name: "Install misspell"
@@ -76,7 +76,7 @@ jobs:
path: generated_site
- name: Check out gh-pages branch
- uses: actions/checkout@v2
+ uses: actions/checkout@v4
with:
ref: "gh-pages"
path: "gh-pages"
diff --git a/config.toml b/config.toml
index bb43f8e..df0591a 100644
--- a/config.toml
+++ b/config.toml
@@ -11,11 +11,13 @@ compile_sass = false
build_search_index = false
# Generate RSS feed
-generate_feed = true
-feed_filename = "rss.xml"
+generate_feeds = true
+feed_filenames = ["rss.xml"]
[markdown]
-highlight_code = true
+
+[markdown.highlighting]
+theme = "material-theme-ocean"
[link_checker]
skip_prefixes = [
diff --git a/content/this-month/2026-01/index.md b/content/this-month/2026-01/index.md
index 9e8c172..97cba3c 100644
--- a/content/this-month/2026-01/index.md
+++ b/content/this-month/2026-01/index.md
@@ -1,6 +1,6 @@
+++
title = "This Month in Rust OSDev: January 2026"
-date = 2027-02-04
+date = 2026-02-04
[extra]
month = "January 2026"
diff --git a/content/this-month/2026-02/index.md b/content/this-month/2026-02/index.md
new file mode 100644
index 0000000..c8d68c0
--- /dev/null
+++ b/content/this-month/2026-02/index.md
@@ -0,0 +1,243 @@
++++
+title = "This Month in Rust OSDev: February 2026"
+date = 2026-03-11
+
+[extra]
+month = "February 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.
+
+
+
+- [Linux 7.0 Officially Concluding The Rust Experiment](https://www.phoronix.com/news/Linux-7.0-Rust)
+ - Rust is now formally accepted as a permanent part of the Linux kernel, shipping in production across multiple distributions and millions of Android devices.
+- [The future for Tyr](https://lwn.net/SubscriberLink/1055590/12d48275b6f81988/)
+ - Progress on Tyr, a Rust GPU driver for Arm Mali hardware. The DRM subsystem is reportedly "about a year away" from requiring new drivers to be written in Rust.
+- [Microsoft LiteBox](https://github.com/microsoft/litebox)
+ - A Rust library OS supporting kernel- and user-mode execution, with sandboxing for running unmodified Linux programs on Windows and SEV SNP.
+- [This Month in Redox - January 2026](https://www.redox-os.org/news/this-month-260131/)
+ - Redox got Cargo and rustc compiling natively and made progress on capability-based security.
+- [CHERIoT Rust: Status update #0](https://rust.cheriot.org/2026/02/15/status-update.html)
+ - Six months of progress porting Rust to the CHERIoT capability-based hardware architecture. Core and alloc now compile for the new `riscv32cheriot-unknown-cheriotrtos` target.
+- [Ariel OS v0.3.0: BLE, Sensors, UART, and More!](https://ariel-os.org/blog/ariel-os-0.3.0/)
+ - New release adds BLE support, hardware-agnostic UART drivers, sensor abstraction, and expanded MCU support (ESP32, STM32, Nordic, RP).
+- [Async/await on the GPU](https://www.vectorware.com/blog/async-await-on-gpu/)
+ - Rust's Future trait and async/await running on GPU hardware, reusing the Embassy embedded executor.
+
+
+## Infrastructure and Tooling
+
+In this section, we collect recent updates to `rustc`, `cargo`, and other tooling that are relevant to Rust OS development.
+
+
+
+- [RFC: Unsafe fields](https://github.com/rust-lang/rfcs/pull/3458)
+ - Approved for implementation. Allows marking struct fields as `unsafe` when they maintain safety invariants.
+- [Add `try_shrink_to` and `try_shrink_to_fit` to Vec](https://github.com/rust-lang/rust/pull/152366)
+ - Fallible shrinking methods that return `TryReserveError` instead of panicking on OOM.
+- [Stabilize `ptr_as_ref_unchecked`](https://github.com/rust-lang/rust/pull/151995)
+ - Raw-pointer-to-reference conversion without null/alignment checks.
+- [Stabilize `atomic_try_update` and deprecate `fetch_update`](https://github.com/rust-lang/rust/pull/148590)
+ - Cleaner API for lock-free atomic compare-and-swap loops. `fetch_update` will be deprecated starting in Rust 1.99.0.
+- [Add `avr_target_feature`](https://github.com/rust-lang/rust/pull/146900)
+ - Unstable target features for AVR microcontrollers including `tinyencoding`, `lowbytefirst`, and various instruction features.
+- [Stabilize `cfg_select!`](https://github.com/rust-lang/rust/pull/149783)
+ - Builtin macro for selecting code based on cfg predicates, simplifying conditional compilation.
+- [Stabilize `core::hint::cold_path`](https://github.com/rust-lang/rust/pull/151576)
+ - Mark unlikely code paths to help the compiler optimize branch layout.
+
+## `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.
+
+
+
+### [`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: Add device path generation for discovered devices in a PciTree](https://github.com/rust-osdev/uefi-rs/pull/1831)
+- [uefi: significantly improve ergonomics of Handle (device path and component2 protocols)](https://github.com/rust-osdev/uefi-rs/pull/1858)
+- [uefi-raw & uefi: serial: add support for protocol revision 1.1](https://github.com/rust-osdev/uefi-rs/pull/1873)
+- [Improve docs of `OpenProtocolAttributes`](https://github.com/rust-osdev/uefi-rs/pull/1891)
+- [uefi: Add `handle_protocol` doc alias to open_protocol functions](https://github.com/rust-osdev/uefi-rs/pull/1893)
+- [uefi: serial: improve documentation and correctness of read() and write()](https://github.com/rust-osdev/uefi-rs/pull/1900)
+
+
+
+
+
+
+
+Thanks to [@seijikun](https://github.com/seijikun) 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:
+
+- [Expose data for custom boot image creation](https://github.com/rust-osdev/bootloader/pull/535)
+- [build with -Zjson-target-spec](https://github.com/rust-osdev/bootloader/pull/536)
+- [Enable json-target-spec](https://github.com/rust-osdev/bootloader/pull/537)
+- [release 0.11.15](https://github.com/rust-osdev/bootloader/pull/538)
+- [fix typo in year](https://github.com/rust-osdev/bootloader/pull/539)
+- [update bootloader crates](https://github.com/rust-osdev/bootloader/pull/545)
+
+
+
+Thanks to [@Freax13](https://github.com/Freax13) and [@Wasabi375](https://github.com/Wasabi375) 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:
+
+- [build(deps): upgrade bitfield-structs to 0.12](https://github.com/rust-osdev/virtio-spec-rs/pull/17)
+- [build(deps): update allocator-api2 to 0.4](https://github.com/rust-osdev/virtio-spec-rs/pull/18)
+- [fix(docsrs): migrate from `doc_auto_cfg` to `doc_cfg`](https://github.com/rust-osdev/virtio-spec-rs/pull/21)
+- [fix: rust-2018-idioms](https://github.com/rust-osdev/virtio-spec-rs/pull/22)
+- [fix: upgrade to Rust 2024](https://github.com/rust-osdev/virtio-spec-rs/pull/23)
+
+
+### [`bootimage`](https://github.com/rust-osdev/bootimage)
+Maintained by [@phil-opp](https://github.com/phil-opp)
+
+The `bootimage` tool allows the creation of bootable disk images for `bootloader`-based kernels. It also provides a runner executable for `cargo` to make `cargo run` and `cargo test` work using QEMU.
+
+We merged the following changes this month:
+
+- [Add an example kernel that uses the built-in `x86_64-unknown-none` target](https://github.com/rust-osdev/bootimage/pull/104)
+- [Fix bootloader build by passing `-Zjson-target-spec`](https://github.com/rust-osdev/bootimage/pull/105)
+- [Prepare release](https://github.com/rust-osdev/bootimage/pull/106)
+- [Fix QEMU test flakiness on ARM64 macOS](https://github.com/rust-osdev/bootimage/pull/107)
+
+
+### [`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:
+
+- [Add support for extracting NUMA information from SRAT and SLIT](https://github.com/rust-osdev/acpi/pull/264)
+- [Suggestion: Use colored instead of termion](https://github.com/rust-osdev/acpi/pull/265)
+
+Thanks to [@martin-hughes](https://github.com/martin-hughes) for their contributions!
+
+
+### [`endian-num`](https://github.com/rust-osdev/endian-num)
+Maintained by [@mkroening](https://github.com/mkroening)
+
+The `endian-num` crate provides the `Be` (big-endian) and `Le` (little-endian) byte-order-aware numeric types.
+
+We merged the following changes this month:
+
+- [feat: add MSRV of 1.71](https://github.com/rust-osdev/endian-num/pull/7)
+- [fix(docsrs): migrate from `doc_auto_cfg` to `doc_cfg`](https://github.com/rust-osdev/endian-num/pull/6)
+
+
+### [`fuse-abi`](https://github.com/rust-osdev/fuse-abi)
+Maintained by [@mkroening](https://github.com/mkroening)
+
+The `fuse-abi` crate provides bindings to FUSE devices. In motivation similar to that of `virtio-spec`, this project aims to provide correct foundational definitions for the FUSE kernel ABI.
+
+We merged the following changes this month:
+
+- [fix(docsrs): migrate from `doc_auto_cfg` to `doc_cfg`](https://github.com/rust-osdev/fuse-abi/pull/1)
+
+
+
+
+### [`spinning_top`](https://github.com/rust-osdev/spinning_top)
+Maintained by [@phil-opp](https://github.com/phil-opp)
+
+The `spinning_top` crate provides a simple spinlock implementation based on the abstractions of the [`lock_api`](https://docs.rs/lock_api/0.4.1/lock_api/) crate.
+
+We merged the following changes this month:
+
+- [fix(docsrs): migrate from `doc_auto_cfg` to `doc_cfg`](https://github.com/rust-osdev/spinning_top/pull/27)
+
+
+## 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.
+
+
+
+### [`metta-systems/ram-map-viewer`](https://github.com/metta-systems/ram-map-viewer)
+(Section written by [@berkus](https://github.com/berkus))
+
+Added a little GUI for visualizing memory maps. The application itself currently supports a map format that my initialisation code emits, but
+it has a MemorySource trait that you can implement to consume any format.
+
+
+
+### [`metta-systems/vesper`](https://github.com/metta-systems/vesper)
+(Section written by [@berkus](https://github.com/berkus))
+
+Vesper has learned to put nucleus into higher-half memory and added a kernel syscall API with a single syscall - a capability invocation. I have a list of capabilities I want to implement, and first one implemented is Debug Console so you can output execution trace from your domains.
+
+Init thread implementation in progress, now parsing DTB and preparing to launch a user-space "init" process. The video above shows memory map produced by the init thread after parsing a RasPi3 B+ 1Gb DTB.
+
+
+
+
+
+
+## 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).