Skip to content

Commit c67b7c1

Browse files
authored
Merge pull request #234 from phip1611/mb
2024-08: multiboot2 release
2 parents 374d27c + 6ee84ce commit c67b7c1

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

content/this-month/2024-08/index.md

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,46 @@ In this section, we collect recent updates to `rustc`, `cargo`, and other toolin
4444
- (optional) Some additional context
4545
-->
4646

47+
### [`multiboot2`](https://github.com/rust-osdev/acpi)
48+
<span class="maintainers">Maintained by [@phip1611](https://github.com/phip1611)</span>
49+
50+
_Convenient and safe parsing of Multiboot2 Boot Information (MBI) structures and
51+
the contained information tags. Usable in no_std environments, such as a kernel.
52+
An optional builder feature also allows the construction of the corresponding
53+
structures._
54+
55+
🎉 We are happy to announce release `v0.22` of the `multiboot2` crate. This is a
56+
**major step forward** as all Undefined Behaviour (UB) and a bunch of safety and
57+
memory issues have been removed / fixed. 🎉 Now, all unit tests (and there are
58+
many) **pass Miri**! This was possible due to massive internal refactorings done
59+
in [#226](https://github.com/rust-osdev/multiboot2/pull/226) and [#227](https://github.com/rust-osdev/multiboot2/pull/227).
60+
61+
The quite complex logic to parse all these structures **safe and correctly**
62+
has been moved to a new [`multiboot2-common`](https://docs.rs/multiboot2-common)
63+
crate. This way, the [`multiboot2-header`](https://crates.io/crates/multiboot2-header)
64+
crate can also leverage the new abstractions. A comprehensive writeup about why
65+
the parsing of Multiboot2 structures and typing them correctly in Rust is much
66+
more complex than one initially might think is written down in
67+
[`lib.rs` of `multiboot2-common`](https://docs.rs/multiboot2-common).
68+
69+
`multiboot2-header` also got a new release `v0.5` and can now be considered
70+
safe and free of UB when parsing the corresponding structures. The internal
71+
refactorings only slightly leak to the public interfaces of `multiboot2`
72+
and `multiboot2-header`.
73+
74+
Read more:
75+
- [Changelog of `multiboot2`](https://github.com/rust-osdev/multiboot2/blob/b95b73508925b5484a0cf531a45c9c9ce555d560/multiboot2/Changelog.md)
76+
- [Changelog of `multiboot2-header`](https://github.com/rust-osdev/multiboot2/blob/b95b73508925b5484a0cf531a45c9c9ce555d560/multiboot2-header/Changelog.md)
77+
78+
<details>
79+
<summary>Background - Read More</summary>
80+
81+
The crate grew historically without a centralized design or approach how to work
82+
with memory and pointers. Therefore, many UB way unintentionally created. We
83+
are happy to get lack of the technical debt. Nevertheless, thanks to everyone
84+
who contributed over the years - sorry if we had to rewrite your code in this
85+
one! :)
86+
</details>
4787

4888
## `rust-osdev` Projects
4989

0 commit comments

Comments
 (0)