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
+101-2Lines changed: 101 additions & 2 deletions
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,106 @@ 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 completely new API to access boot and runtime services
112
+
2. We reorganized the MemoryMap-related types.
113
+
3. We reorganized and improved the documentation, and also added documentation
114
+
about how the `std` implementation for UEFI targets compares to `uefi` and
115
+
how both can be used together.
116
+
117
+
### 1. New API: Freestanding Functions API Change
118
+
119
+
We are planning a massive API change and introduced a new replacement API in
120
+
release `v0.31`. The old API co-exists and will be marked as
121
+
`#[deprecated]` in `0.32`. The new API will make it easier to call boot or
122
+
runtime services without having to pass `&BootServices` around all the time.
123
+
124
+
The typical use-case of our library users is to write a UEFI bootloader
125
+
application that heavily leverages boot services. Then control is handed over to
126
+
the next stage, which is typically the kernel of an OS. Boot services are
127
+
usually exited either just prior to launching the kernel or by the kernel
128
+
itself. In any case, the UEFI application spends almost all of its time with
129
+
boot services active.
130
+
131
+
Although the old API design ensures via the type system that no boot
132
+
services can be called after they have been exited, the test of time has proven
133
+
that this adds unjustified complexity without bringing much real value add.
134
+
135
+
Instead, with the new API, which we provide **additionally** at this point,
136
+
one can use freestanding functions which are behind the new modules:
137
+
138
+
-`uefi::system`: is a new module that provides freestanding functions for
139
+
accessing fields of the global system table.
140
+
-`uefi::boot`:
141
+
is a new module that provides freestanding functions for boot services using
142
+
the global system table.
143
+
-`uefi::runtime`: is a new module that provides freestanding functions for
144
+
runtime services using the global system table.
145
+
146
+
The freestanding functions itself are close to the originals ones but without
147
+
`&BootServices` or `&RuntimeServices` parameters, as you can see for example
There were also a ton of other interesting fixes, changes, and additions!
200
+
Check out our [Changelog](https://github.com/rust-osdev/uefi-rs/blob/main/uefi/CHANGELOG.md).
201
+
202
+
We merged the following PRs this month:
203
+
<!-- todo -->
104
204
105
205
## Other Projects
106
206
@@ -115,7 +215,6 @@ In this section, we describe updates to Rust OS projects that are not directly r
115
215
...<<your project updates>>...
116
216
-->
117
217
118
-
119
218
## Join Us?
120
219
121
220
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