This Month in Rust OSDev: April 2023
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.
Infrastructure and Tooling
In this section, we collect recent updates to rustc
, cargo
, and other tooling that are relevant to Rust OS development.
No updates were proposed for this section this month.
Announcements, News, and Blog Posts
Here we collect news, blog posts, etc. related to OS development in Rust.
- Rust Kernel Programming
- Linux Kernel Rust Modules
- Aero OS: A new modern operating system made in Rust, now able to run the Links browser, Alacritty and much more!
- Felix, an x86 hobby OS written in Rust
rust-osdev
Projects
In this section, we give an overview of notable changes to the projects hosted under the rust-osdev
organization.
uefi-rs
Maintained by @GabrielMajeri, @nicholasbishop, and @phip1611
Features
- Introducing a high-level FS abstraction
- uefi: debug: add DebugPort protocol
- uefi: Panic if an error is created from Status::SUCCESS
- uefi-macros: Drop !Send and !Sync from unsafe_protocol macro
- cstr[ing]16: convenience functions
- uefi: Clean up some Status -> Result conversions
- Use the uguid crate to replace the
Guid
struct andguid!
macro - gop: Derive PartialEq on ModeInfo
- Add RngProtocol to
uefi-raw
and use it fromuefi
- uefi: Add get_variable_boxed
Docs
- uefi: Update Status documentation
- doc: build with --no-deps
- uefi: Minor cleanups in the fs module doc
Other
- ci: shorter job names
- uefi: consistent use of crate:: over uefi::
- Allow passing a constant's path into unsafe_protocol
- uefi-raw: Add mostly-empty package
- ci: Fix book token permission
- Move newtype_enum macro to uefi-raw
- uefi-macros: Fix compiler test for Rust 1.69
- Move
Status
touefi-raw
, along with related API changes
Thanks to @JohnAZoidberg and @felipebalbi for their contributions!
bootloader
Maintained by @phil-opp
- Fixed bug stemming from treating an exclusive range as an inclusive ranges
- Update
uefi
dependency tov0.20
- Implemented sorting of uefi memory maps #315
Thanks to @kennystrawnmusic and @JarlEvanson for their contributions!
pic8259
Maintained by @phil-opp
Thanks to @rasheedmhd for their contributions!
x86_64
Maintained by @phil-opp, @josephlr, and @Freax13
acpi
Maintained by @IsaacWoods
- aml_tester: Add positional file arguments, in-order parsing and shared namespace
- AML: Add minimal CondRefOf support
- acpi: Allow Madt and Mcfg fields to be accessed without allocator_api
Thanks to @A0lson, and @rw-vanc for their contributions!
ucs2-rs
Maintained by @GabrielMajeri, @nicholasbishop, and @phip1611
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:
- Update
zola
tov0.17.2
- Fix link syntax
- fix(translation zh-TW): typo (thanks to @GNITOAHC!)
- The
#[alloc_error_handler]
attribute was removed - Update 'Heap Allocation' post to remove
alloc_error_handler
I also continued writing on the upcoming third edition of the blog. I finished a draft of the second post, which is about booting using v0.11
of the bootloader
crate. You can already read it on GitHub if you like.
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.