Skip to content

Commit e6aa4d8

Browse files
authored
Merge pull request #220 from rust-osdev/next
This Month in Rust OSDev: June 2024
2 parents 5947044 + bb35e4b commit e6aa4d8

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed

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

Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
+++
2+
title = "This Month in Rust OSDev: June 2024"
3+
date = 2024-07-10
4+
5+
[extra]
6+
month = "June 2024"
7+
editors = ["phil-opp"]
8+
+++
9+
10+
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.
11+
12+
<!-- more -->
13+
14+
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 <a href="#comment-form">_comment form_</a> at the bottom of this page.
15+
16+
<!--
17+
This is a draft for the upcoming "This Month in Rust OSDev (June 2024)" post.
18+
Feel free to create pull requests against the `next` branch to add your
19+
content here.
20+
Please take a look at the past posts on https://rust-osdev.com/ to see the
21+
general structure of these posts.
22+
-->
23+
24+
## Announcements, News, and Blog Posts
25+
26+
Here we collect news, blog posts, etc. related to OS development in Rust.
27+
28+
- [Redox OS - Software Showcase #1](https://youtu.be/s-gxAsBTPxA?si=IAPJ25EYP-XxS_FB)
29+
- This is our first showcase video, showing several programs running on Redox OS
30+
- [This Month in Redox - June 2024](https://www.redox-os.org/news/this-month-240630/)
31+
- [k23 - Experimental WASM Microkernel](https://github.com/JonasKruckenberg/k23)
32+
- First announced at RustNL 2024, k23 is an experimental microkernel written in Rust that runs WebAssembly programs. Now Open Source!
33+
34+
<!--
35+
Please follow this template:
36+
37+
- [Title](https://example.com)
38+
- (optional) Some additional context
39+
-->
40+
41+
42+
## Infrastructure and Tooling
43+
44+
In this section, we collect recent updates to `rustc`, `cargo`, and other tooling that are relevant to Rust OS development.
45+
46+
- [Split core's PanicInfo and std's PanicInfo](https://github.com/rust-lang/rust/pull/115974)
47+
- [Stabilize `PanicInfo::message()` and `PanicMessage`](https://github.com/rust-lang/rust/pull/126732)
48+
- [Unsafe extern blocks](https://github.com/rust-lang/rust/pull/124482)
49+
- [Size optimize int formatting](https://github.com/rust-lang/rust/pull/125606)
50+
- [Add `f16` inline ASM support for RISC-V](https://github.com/rust-lang/rust/pull/126530)
51+
52+
<!--
53+
Please use the following template:
54+
55+
- [Title](https://example.com)
56+
- (optional) Some additional context
57+
-->
58+
59+
60+
## `rust-osdev` Projects
61+
62+
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.
63+
64+
<!--
65+
Please use the following template:
66+
67+
### [`repo_name`](https://github.com/rust-osdev/repo_name)
68+
<span class="maintainers">Maintained by [@maintainer_1](https://github.com/maintainer_1)</span>
69+
70+
The `repo_name` crate ...<<short introduction>>...
71+
72+
We merged the following changes this month:
73+
<<changelog, either in list or text form>>
74+
-->
75+
76+
### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs)
77+
<span class="maintainers">Maintained by [@GabrielMajeri](https://github.com/GabrielMajeri), [@nicholasbishop](https://github.com/nicholasbishop), and [@phip1611](https://github.com/phip1611)</span>
78+
79+
The `uefi-rs` crate provides safe and performant wrappers for [UEFI](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface), the successor to the BIOS. We merged the following PRs this month:
80+
81+
- [uefi: Stop enabling `error_in_core` feature](https://github.com/rust-osdev/uefi-rs/pull/1194)
82+
- [reorganize deps](https://github.com/rust-osdev/uefi-rs/pull/1196)
83+
- [uefi: Add TryFrom u8 slice to DevicePathHeader ](https://github.com/rust-osdev/uefi-rs/pull/1199)
84+
- [test-runner: Consistently use global image handle](https://github.com/rust-osdev/uefi-rs/pull/1189)
85+
- [uefi: Add TryFrom u8 slice to DevicePathNode](https://github.com/rust-osdev/uefi-rs/pull/1197)
86+
- [Clean up duplicate global system table pointer in `uefi::helpers`](https://github.com/rust-osdev/uefi-rs/pull/1188)
87+
- [uefi: make DevicePathHeader::try_from idiomatic](https://github.com/rust-osdev/uefi-rs/pull/1202)
88+
- [uefi: Add TryFrom u8 slice to DevicePath](https://github.com/rust-osdev/uefi-rs/pull/1201)
89+
- [uefi: re-export CapsuleFlags](https://github.com/rust-osdev/uefi-rs/pull/1203)
90+
- [ci: Temporarily turn off warnings-as-errors for nightly CI jobs](https://github.com/rust-osdev/uefi-rs/pull/1206)
91+
- [uefi: use UNSPECIFIED_TIMEZONE instead of magic number](https://github.com/rust-osdev/uefi-rs/pull/1210)
92+
- [uefi: Make TimeError more descriptive](https://github.com/rust-osdev/uefi-rs/pull/1211)
93+
- [Fix versions](https://github.com/rust-osdev/uefi-rs/pull/1187)
94+
- [uefi-test-runner: speed up ploting of sierpinski triangle by updating changed pixel only](https://github.com/rust-osdev/uefi-rs/pull/1209)
95+
- [memory map: improvements to fight pitfalls (MemoryMap now owns the memory)](https://github.com/rust-osdev/uefi-rs/pull/1175)
96+
- [uefi: simplify usage of Mode](https://github.com/rust-osdev/uefi-rs/pull/1214)
97+
- [template: fix build failure](https://github.com/rust-osdev/uefi-rs/pull/1217)
98+
- [uefi: Add TryFrom<&[u8]> for Time](https://github.com/rust-osdev/uefi-rs/pull/1212)
99+
100+
Thanks to [@LightAndLight](https://github.com/LightAndLight), [@andre-braga](https://github.com/andre-braga), and [@JeffLi01](https://github.com/JeffLi01) for their contributions!
101+
102+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/uefi-rs/pull/1184) -->
103+
<!-- - [chore(deps): update crate-ci/typos action to v1.22.3](https://github.com/rust-osdev/uefi-rs/pull/1193) -->
104+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/uefi-rs/pull/1195) -->
105+
<!-- - [chore(deps): update crate-ci/typos action to v1.22.7](https://github.com/rust-osdev/uefi-rs/pull/1207) -->
106+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/uefi-rs/pull/1208) -->
107+
<!-- - [nix/niv: update nixpkgs to nixos-24.05](https://github.com/rust-osdev/uefi-rs/pull/1213) -->
108+
<!-- - [chore(deps): update crate-ci/typos action to v1.22.9](https://github.com/rust-osdev/uefi-rs/pull/1215) -->
109+
<!-- - [chore(deps): lock file maintenance](https://github.com/rust-osdev/uefi-rs/pull/1218) -->
110+
111+
### [`bootloader`](https://github.com/rust-osdev/bootloader)
112+
<span class="maintainers">Maintained by [@phil-opp](https://github.com/phil-opp) and [@Freax13](https://github.com/orgs/rust-osdev/people/Freax13)</span>
113+
114+
The `bootloader` crate implements a custom Rust-based bootloader for easy loading of 64-bit ELF executables. This month, we merged the following improvements:
115+
116+
- [Guard the lower 1MB of memory](https://github.com/rust-osdev/bootloader/pull/446)
117+
118+
Thanks to [@Wasabi375](https://github.com/Wasabi375) for their contributions!
119+
120+
121+
### [`pci_types`](https://github.com/rust-osdev/pci_types)
122+
<span class="maintainers">Maintained by [@IsaacWoods](https://github.com/IsaacWoods)</span>
123+
124+
The `pci_types` library provides types for accessing and configuring PCI devices from Rust operating systems. We merged the following change this month:
125+
126+
- [feat: accept `FnOnce` for updating commands](https://github.com/rust-osdev/pci_types/pull/15)
127+
- [ci: add workflow](https://github.com/rust-osdev/pci_types/pull/17)
128+
- [feat: don't truncate reserved bits in `CommandRegister`](https://github.com/rust-osdev/pci_types/pull/16)
129+
- [fix(breaking): clippy lints](https://github.com/rust-osdev/pci_types/pull/18)
130+
- [style: update `rustfmt.toml`](https://github.com/rust-osdev/pci_types/pull/19)
131+
- [feat: derive additional traits for `CommandRegister`](https://github.com/rust-osdev/pci_types/pull/20)
132+
- [feat: add `EndpointHeader::update_interrupt`](https://github.com/rust-osdev/pci_types/pull/21)
133+
- [feat: don't take explicit references to `ConfigRegionAccess`](https://github.com/rust-osdev/pci_types/pull/22)
134+
- [feat: implement `Copy` for all types that already implement `Clone`](https://github.com/rust-osdev/pci_types/pull/23)
135+
- [fix: don't take explicit reference in `update_interrupt`](https://github.com/rust-osdev/pci_types/pull/24)
136+
- [Add method to get the address of any capability](https://github.com/rust-osdev/pci_types/pull/27)
137+
- [Fix docs rendering for MsixCapability::set_enabled](https://github.com/rust-osdev/pci_types/pull/28)
138+
- [feat: make `update_command` take `&mut self`](https://github.com/rust-osdev/pci_types/pull/32)
139+
- [Add method to enable/disable function masking for MSI-X](https://github.com/rust-osdev/pci_types/pull/29)
140+
- [Add unwrap_io and unwrap_mem convenience methods on Bar](https://github.com/rust-osdev/pci_types/pull/25)
141+
- [Remove the function_exists method of ConfigRegionAccess](https://github.com/rust-osdev/pci_types/pull/26)
142+
- [Support 64-bit addressing in MSI capabilities and improve uniformity with rest of library](https://github.com/rust-osdev/pci_types/pull/33)
143+
144+
Thanks to [@IsaacWoods](https://github.com/IsaacWoods), [@bjorn3](https://github.com/bjorn3), and [@mkroening](https://github.com/mkroening) for their contributions!
145+
146+
147+
148+
### [`x86_64`](https://github.com/rust-osdev/x86_64)
149+
<span class="maintainers">Maintained by [@phil-opp](https://github.com/phil-opp), [@josephlr](https://github.com/orgs/rust-osdev/people/josephlr), and [@Freax13](https://github.com/orgs/rust-osdev/people/Freax13)</span>
150+
151+
The `x86_64` crate provides various abstractions for `x86_64` systems, including wrappers for CPU instructions, access to processor-specific registers, and abstraction types for architecture-specific structures such as page tables and descriptor tables.
152+
153+
We merged the following PR this month:
154+
155+
- [constify PhysFrame functions](https://github.com/rust-osdev/x86_64/pull/489)
156+
157+
### [`volatile`](https://github.com/rust-osdev/volatile)
158+
<span class="maintainers">Maintained by [@phil-opp](https://github.com/phil-opp)</span>
159+
160+
The `volatile` crate provides a safe wrapper type for implementing volatile read and write operations. This is useful for accessing memory regions that have side-effects, such as memory-mapped hardware registers.
161+
162+
We merged the following PR this month:
163+
164+
- [Release v0.6.0](https://github.com/rust-osdev/volatile/pull/64)
165+
166+
167+
## Other Projects
168+
169+
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.
170+
171+
<!--
172+
Please use the following template:
173+
174+
### [`owner_name/repo_name`](https://github.com/rust-osdev/owner_name/repo_name)
175+
<span class="maintainers">(Section written by [@your_github_name](https://github.com/your_github_name))</span>
176+
177+
...<<your project updates>>...
178+
-->
179+
180+
### [`nicholasbishop/ext4-view-rs`](https://github.com/nicholasbishop/ext4-view-rs)
181+
<span class="maintainers">(Section written by [@nicholasbishop](https://github.com/nicholasbishop))</span>
182+
183+
I've released a new Rust crate for reading ext4 filesystems. It's easy to use, with an API very similar to [`std::fs`](https://doc.rust-lang.org/std/fs/index.html). The crate is no-std compatible, but does require an allocator.
184+
185+
Note that by design this crate will remain read-only; writing to an ext4 filesystem is not a goal.
186+
187+
Thanks to [@tedbrandston](https://github.com/tedbrandston) for doing a ton of code review on this project!
188+
189+
## Join Us?
190+
191+
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).

0 commit comments

Comments
 (0)