-
Notifications
You must be signed in to change notification settings - Fork 39
2026-08: uefi-rs, multiboot2, uart_16550, and tar-no-std updates #290
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
9858564
2026-08: add uefi-rs section
phip1611 07a7d92
2026-08: add multiboot2 section
phip1611 bcd95fc
2026-08: add uart_16550 section
phip1611 2a27c0d
2026-08: add tar-no-std section
phip1611 0e96a4d
2026-08: uefi-rs: announce Anthropic sponsorship
phip1611 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -71,7 +71,88 @@ In this section, we give an overview of notable changes to the projects hosted u | |
| <<changelog, either in list or text form>> | ||
| --> | ||
|
|
||
| <span class="gray">No content was submitted for this section this month.</span> | ||
| ### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs) | ||
| <span class="maintainers">Maintained by [@nicholasbishop](https://github.com/nicholasbishop) and [@phip1611](https://github.com/phip1611)</span> | ||
|
|
||
| `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. | ||
|
|
||
| #### 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) | ||
| <span class="maintainers">Maintained by [@phip1611](https://github.com/phip1611)</span> | ||
|
|
||
| _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: | ||
|
|
||
| ### [`uart_16550`](https://github.com/rust-osdev/uart_16550) | ||
| <span class="maintainers">Maintained by [@phip1611](https://github.com/phip1611)</span> | ||
|
|
||
| _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: | ||
|
Member
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same here and for the other sections @phil-opp |
||
|
|
||
| ## Other Projects | ||
|
|
||
|
|
@@ -86,7 +167,28 @@ In this section, we describe updates to Rust OS projects that are not directly r | |
| ...<<your project updates>>... | ||
| --> | ||
|
|
||
| <span class="gray">No project updates were submitted this month.</span> | ||
| ### [`phip1611/tar-no-std`](https://github.com/phip1611/tar-no-std) | ||
| <span class="maintainers">(Section written by [@phip1611](https://github.com/phip1611))</span> | ||
|
|
||
| [`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! | ||
|
|
||
|
|
||
|
|
||
|
|
||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@phil-opp I forgot how you handle this. You have a script to generate the list?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, there is a script; I'll fill it in