You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/this-month/2024-08/index.md
+96-2Lines changed: 96 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ date = 2024-09-03
4
4
5
5
[extra]
6
6
month = "August 2024"
7
-
editors = ["phil-opp"]
7
+
editors = ["phil-opp", "phip1611"]
8
8
+++
9
9
10
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.
@@ -101,6 +101,101 @@ In this section, we give an overview of notable changes to the projects hosted u
<spanclass="maintainers">Maintained by [@GabrielMajeri](https://github.com/GabrielMajeri), [@nicholasbishop](https://github.com/nicholasbishop), and [@phip1611](https://github.com/phip1611)</span>
106
+
107
+
`uefi` makes it easy to develop Rust software that leverages safe, convenient,
108
+
and performant abstractions for UEFI functionality. Recently, we released
109
+
version `v0.31` with some notable changes:
110
+
111
+
1. We introduced a new completely API to access boot and runtime services
112
+
2. We reorganized the MemoryMap-related types.
113
+
3. We reorganized the repository README's and `lib.rs` files (documentation for
114
+
docs.rs)
115
+
4. We talk about how the `std` implementation for UEFI targets compares to
116
+
`uefi` and how both can be used together.
117
+
118
+
### 1. New API: Freestanding Functions API Change
119
+
120
+
We are planning a massive API change and introduced a new replacement API in
121
+
release `v0.31`. The old API co-exists and is marked as `#[deprecated]`. The
122
+
new API will make it easier to call boot or runtime services without having
123
+
to pass `&BootServices` around all the time.
124
+
125
+
The typical use-case of our library users is to write UEFI image with code
126
+
leveraging boot services and exiting them. Next, control is handed over to the
127
+
next step, which is typically a kernel of an OS. These UEFI images typically
128
+
are "99% code" using boot services, until they are exited.
129
+
130
+
Although the old API design ensures via the type system that no boot
131
+
service scan be called after they have been exited, the test of time has proven
132
+
that this adds unjustified complexity without bringing much real value add.
133
+
134
+
Instead, with the new API, which we provide **additionally** at this point,
135
+
one can use freestanding functions which are behind the new modules:
136
+
137
+
-`uefi::system`: is a new module that provides freestanding functions for
138
+
accessing fields of the global system table.
139
+
-`uefi::boot`:
140
+
is a new module that provides freestanding functions for boot services using
141
+
the global system table.
142
+
-`uefi::runtime`: is a new module that provides freestanding functions for
143
+
runtime services using the global system table.
144
+
145
+
This solves API inconsistencies and restrictions already existing so far, and
146
+
makes the overall handling a lot easier. This comes with the costs that
147
+
functions may panic, if the boot services were exited but one tries to use
148
+
them. However, the massive API simplification justifies this.
149
+
150
+
Find more and follow the progress and discussions on:
There were also a ton of other interesting fixes, changes, and additions!
195
+
Check out our [Changelog](https://github.com/rust-osdev/uefi-rs/blob/main/uefi/CHANGELOG.md).
196
+
197
+
We merged the following PRs this month:
198
+
<!-- todo -->
104
199
105
200
## Other Projects
106
201
@@ -115,7 +210,6 @@ In this section, we describe updates to Rust OS projects that are not directly r
115
210
...<<your project updates>>...
116
211
-->
117
212
118
-
119
213
## Join Us?
120
214
121
215
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