Releases: rust-osdev/uefi-rs
Releases · rust-osdev/uefi-rs
uefi-v0.37.0
uefi - v0.37.0 (2026-03-22)
Added
- Added
proto::ata::AtaRequestBuilder::read_pio(). - Added
proto::shell::Shell::{var(), set_var(), vars()} - Added
proto::pci::root_bridge::PciRootBridgeIo::configuration(). - Added
proto::pci::root_bridge::PciRootBridgeIo::enumerate(). - Added
proto::nvme::pass_thru::NvmePassThru::broadcast(). - Added
proto::media::block::BlockIO2. - Added
proto::device_path::DevicePath::to_pool(). - Added
proto::device_path::DevicePathUtilities::duplicate_path(). - Added
proto::pci::enumeration::PciTree::device_path(). - Added
revision()anddevice_type_guid()toSerialprotocol - Implemented
DisplayforDevicePath,DevicePathNodeandScopedProtocol,
enabling an easy and convenient way to visualize a device path. For example,
this may printPciRoot(0x0)/Pci(0x6,0x0)/MAC(525400000001,0x1).
ScopedProtocolonly implementsDisplayif the underlying protocol also
implementsDisplay. - Added
Handle::component_name()andHandle::device_path()to simplify the
common use-case of querying more information about a handle. - Added
fs::path::Path::join(). - Added
Serial::read_exact()andSerial::write_exact() CStr16::from_bytes_with_nul(): This is especially useful to transform the
retrieved value from a UEFI variable into a UCS2 (CStr16) string.
Changed
- export all
text::{input, output}::*types - Changed ordering of
proto::pci::PciIoAddressto (bus -> dev -> fun -> reg -> ext_reg). - Return request with status as error data object for
proto::ata::pass_thru::AtaDevice. - Breaking:
SimpleNetwork::wait_for_packet- has been renamed to
wait_for_packet_event - now returns
Result<Event>instead of&Event
- has been renamed to
- Breaking:
Http::get_mode_datadoesn't consume a parameter anymore and instead return
an owned value of typeHttpConfigData Input::wait_for_key_event()now returnsResult<Event>rather than an
Option.Pointer::wait_for_input_event()now returnsResult<Event>rather than an
Option.- Breaking:
boot::check_eventnow consumes&Eventrather thanEvent, removing the
need for unnecessaryEvent::unsafe_clone()s. - MSRV increased to 1.88.
- Breaking: Renamed
DevicePath::to_string()toDevicePath::to_string16()
to better differentiate with the newto_string()coming from the new
Display. - Breaking: Renamed
DevicePathNode::to_string()toDevicePathNode::to_string16()
to better differentiate with the newto_string()coming from the new
Display. - Fixed potential partial writes in
fmt::Writeimpl forSerialprotocol
uefi-raw - v0.14.0 (2026-03-22)
Added
- Added
Tcpv4Protocol. - Added
StorageSecurityCommandProtocol. - Added
FirmwareManagementProtocol. - Added
HiiFontProtocol,HiiFontExProtocol. - Added
HiiImageProtocol,HiiImageExProtocol. - Added
HiiStringProtocol. - Added
HiiPopupProtocol. - Added
FormBrowser2Protocol. - Added new type
SerialIoProtocolRevision - Added new type
SerialIoProtocol_1_1as companion forSerialIoProtocol
that includes thedevice_type_guidparameter
Changed
- Switched
*const Selfto*mut SelfinSerialIoProtocol::set_attributes() - Switched field
revisioninSerialIoProtocolfromu32to new type
SerialIoProtocolRevision
PRs
- efi shell interface protocol: add var(), vars(), and set_var() by @RenTrieu in #1679
- uefi: Implement PciRootBridgeIo bus device enumeration logic by @seijikun in #1819
- chore(deps): update crate-ci/typos action to v1.39.2 by @renovate[bot] in #1824
- chore(deps): lock file maintenance by @renovate[bot] in #1826
- uefi-raw: add Tcp4 protocol type definitions by @JayKickliter in #1797
- uefi-raw: add Storage Security Command protocol type definitions by @jasonbking in #1827
- uefi: Fix broken bridge recursion in PCI enumeration by @seijikun in #1829
- uefi: Make AtaDevice::execute_command() return AtaResponse on error by @seijikun in #1828
- chore(deps): update actions/checkout action to v6 by @renovate[bot] in #1833
- uefi-raw: Add bindings for FMP by @crawfxrd in #1834
- chore(deps): update rust crate clap to v4.5.53 by @renovate[bot] in #1832
- chore(deps): update rust crate syn to v2.0.111 by @renovate[bot] in #1821
- uefi-raw: Add bindings for most HII protocols by @crawfxrd in #1822
- uefi: Add special broadcast nvme namespace by @seijikun in #1835
- chore(deps): update crate-ci/typos action to v1.40.0 by @renovate[bot] in #1837
- chore(deps): lock file maintenance by @renovate[bot] in #1838
- Change SimpleNetwork::wait_for_packet to return
Option<Event>by @Virv12 in #1836 - Implement BlockIO2 by @Virv12 in #1841
- chore(deps): lock file maintenance by @renovate[bot] in #1844
- uefi: Refactor PciRootBridgeIo::enumerate() with tree-topology information by @seijikun in #1830
- uefi: http: fix integration test by @phip1611 in #1850
- chore(deps): lock file maintenance by @renovate[bot] in #1849
- chore(deps): lock file maintenance by @renovate[bot] in #1853
- workspace: switch to resolver v3 by @phip1611 in #1859
- flake: update (Nix shell: rust 1.86 -> 1.92) by @phip1611 in #1860
- chore(deps): lock file maintenance by @renovate[bot] in #1863
- chore(deps): lock file maintenance by @renovate[bot] in #1866
- uefi: improve ergonomics of Events by @phip1611 in #1840
- chore(deps): lock file maintenance by @renovate[bot] in #1868
- chore(deps): update crate-ci/typos action to v1.42.0 by @renovate[bot] in #1869
- uefi: improve doc (add short glossary/important terms overview) by @phip1611 in #1857
- Bump MSRV to 1.88 by @nicholasbishop in #1871
- Replace remaining uses of
addr_of/addr_of_mutwith raw pointer syntax by @nicholasbishop in #1870 - export all text::{input, output} types by @yaroslav957 in #1880
- ci/fix: upgrade QEMU on windows by @phip1611 in #1876
- uefi-raw: serial: fix mutability by @phip1611 in #1872
- uefi: serial: improve overall documentation by @phip1611 in #1874
- uefi: boot: improve documentation for handles by @phip1611 in #1877
- Revert "ci/fix: upgrade QEMU on windows" by @nicholasbishop in #1884
- fix(deps): update rust crate nix to 0.31.0 by @renovate[bot] in #1883
- uefi: Add device path generation for discovered devices in a PciTree by @seijikun in #1831
- chore(deps): update crate-ci/typos action to v1.42.3 by @renovate[bot] in #1885
- chore(deps): lock file maintenance by @renovate[bot] in #1889
- uefi-raw & uefi: serial: add support for protocol revision 1.1 by @phip1611 in #1873
- uefi: significantly improve ergonomics of Handle (device path and component2 protocols) by @phip1611 in #1858
- chore(deps): lock file maintenance by @renovate[bot] in #1890
- uefi: Add
handle_protocoldoc alias to open_protocol functions by @nicholasbishop in #1893 - Improve docs of
OpenProtocolAttributesby @nicholasbishop in #1891 - chore(deps): lock file maintenance by @renovate[bot] in #1895
- uefi: serial: improve documentation and correctness of read() and write() by @phip1611 in #1900
- chore(deps): lock file maintenance by @renovate[bot] in #1904
- add
joinonPathby @the-shank in #1903 - Fix new clippy lints by @nicholasbishop in #1908
- chore(deps): update rust crate quote to v1.0.45 by @renovate[bot] in #1910
- chore(deps): update rust crate ovmf-prebuilt to v0.2.8 by @renovate[bot] in #1909
- test-runner: rename cpy -> copy to make
typoshappy by @phip1611 in #1912 - chore(deps): update crate-ci/typos action to v1.44.0 by @renovate[bot] in https://github.com...
uefi-v0.31
Please head to https://github.com/rust-osdev/uefi-rs/blob/main/uefi/CHANGELOG.md
List of merged Pull Requests
- book: Publish the latest release instead of main by @nicholasbishop in #1224
- Drop SystemTable arg from uefi::helpers::init by @nicholasbishop in #1226
- uefi-macros: Allow zero-param function in the entry macro by @nicholasbishop in #1227
- chore(deps): update crate-ci/typos action to v1.23.1 by @renovate in #1232
- chore(deps): lock file maintenance by @renovate in #1233
- uefi: Fix return value lifetime for register_protocol_notify by @nicholasbishop in #1228
- logger: Remove some unnecessary cfgs by @nicholasbishop in #1235
- fix(deps): update rust crate syn to v2.0.70 by @renovate in #1231
- uefi: _print more failsafe by @phip1611 in #1239
- mem: introduce traits MemoryMap and MemoryMapMut by @phip1611 in #1234
- chore(deps): update crate-ci/typos action to v1.23.2 by @renovate in #1242
- chore(deps): lock file maintenance by @renovate in #1245
- Add uefi::system module by @nicholasbishop in #1237
- Add PcrEvent::new_in_box/PcrEventInputs::new_in_box by @nicholasbishop in #1246
- Add uefi::runtime module by @nicholasbishop in #1249
- runtime: Add freestanding functions to get/set/delete UEFI variables by @nicholasbishop in #1250
- boot: Always impl Drop for MemoryMapBackingMemory by @nicholasbishop in #1248
- test-runner: Drop the memory map OOM loop by @nicholasbishop in #1254
- uefi-raw: Add more MemoryType constants by @nicholasbishop in #1253
- Add variable key functions to
uefi::runtimeby @nicholasbishop in #1252 - chore(deps): lock file maintenance by @renovate in #1257
- uefi: mem: mem.rs -> mem/mod.rs by @phip1611 in #1251
- runtime: Add query_variable_info by @nicholasbishop in #1256
- Fix CI for Rust 1.80 by @nicholasbishop in #1261
- Add capsule update functions to
uefi::runtimeby @nicholasbishop in #1259 - Add uefi::boot module by @nicholasbishop in #1255
- runtime: Add uefi::runtime::reset by @nicholasbishop in #1258
- cleanup/follow-up: memory_map by @phip1611 in #1240
- Move the global image handle to uefi::boot by @nicholasbishop in #1262
- chore(deps): update crate-ci/typos action to v1.23.5 by @renovate in #1265
- chore(deps): lock file maintenance by @renovate in #1267
- fix(deps): update rust crate heck to 0.5.0 by @renovate in #1268
- Add
boot::locate_handle_bufferby @nicholasbishop in #1269 - boot: Add freestanding version of open_protocol by @nicholasbishop in #1270
- boot: Add freestanding version of open_protocol_exclusive by @nicholasbishop in #1272
- Finalize memory_map module refactoring by @phip1611 in #1263
- Add
boot::{load_image, unload_image, start_image}by @nicholasbishop in #1273 - clippy: add use_self and const fn by @phip1611 in #1271
- clippy: streamline lints by @phip1611 in #1274
- ci: reorganize nightly CI jobs by @phip1611 in #1275
- chore(deps): lock file maintenance by @renovate in #1277
- boot: Add freestanding version of raise_tpl by @nicholasbishop in #1276
- boot: Add freestanding connect_controller and disconnect_controller by @nicholasbishop in #1278
- nix/niv: update dependencies by @phip1611 in #1279
- boot: Add freestanding exit function by @nicholasbishop in #1283
- uefi: Fix lifetimes in device_path TryFrom<&[u8]> impls by @nicholasbishop in #1282
- uefi: Add release data to 0.30.0 release by @nicholasbishop in #1286
- chore(deps): update crate-ci/typos action to v1.23.6 by @renovate in #1287
- fix(deps): update rust crate regex to v1.10.6 by @renovate in #1288
- doc: unified catchy new Crate introduction [doc: 1/N] by @phip1611 in #1284
- boot: Add freestanding version of
create_eventby @nicholasbishop in #1280 - Merge release-v0.30 branch into main by @phip1611 in #1289
- boot: Add freestanding stall by @nicholasbishop in #1296
- boot: Add freestanding check_event by @nicholasbishop in #1295
- doc: move misc stuff from README to lib.rs [doc: 2/N] by @phip1611 in #1290
- Restore some memory exports to uefi::table::boot by @nicholasbishop in #1299
- Remove dead_code workarounds by @nicholasbishop in #1302
- runtime: Add freestanding set_virtual_address_map by @nicholasbishop in #1301
- Add freestanding set_timer and wait_for_event by @nicholasbishop in #1298
- Add freestanding {install,reinstall,uninstall}_protocol_interface functions by @nicholasbishop in #1300
- boot: Add freestanding close_event by @nicholasbishop in #1304
- boot: Add freestanding install_configuration_table by @nicholasbishop in #1306
- boot: Add freestanding version of protocols_per_handle by @nicholasbishop in #1305
- misc small improvements by @phip1611 in #1308
- boot: Add freestanding test_protocol by @nicholasbishop in #1310
- boot: Add freestanding set_watchdog_timer by @nicholasbishop in #1311
- boot: Add freestanding memory_map by @nicholasbishop in #1312
- chore(deps): lock file maintenance by @renovate in #1319
- boot: Add freestanding create_event_ex by @nicholasbishop in #1313
- boot: Add freestanding get_handle_for_protocol by @nicholasbishop in #1314
- Add doc on freestanding function migration by @nicholasbishop in #1315
- boot: Add freestanding locate_device_path by @nicholasbishop in #1316
- boot: Add freestanding locate_handle and find_handles by @nicholasbishop in #1321
- boot: Add freestanding get_image_file_system by @nicholasbishop in #1322
- boot: Add freestanding exit_boot_services by @nicholasbishop in #1325
- uefi: Add table::system_table_raw by @nicholasbishop in #1323
- boot: Add freestanding register_protocol_notify by @nicholasbishop in #1324
- doc: add comprehensive About section to lib.rs [doc: 3/N] by @phip1611 in #1291
- uefi: Drop BootServices arg from device path <-> text conversions by @nicholasbishop in #1327
- Revert "uefi: Drop BootServices arg from device path <-> text conversions" by @nicholasbishop in #1328
- Update funcs_migration doc by @nicholasbishop in #1329
- uefi: add BootPolicy type by @phip1611 in #1326
- ci: cancel obsolete runs automatically + streamline by @phip1611 in #1332
- fix(deps): update rust crate serde_json to v1.0.124 by @renovate in #1318
- LoadFileProtocol and LoadFile2Protocol by @phip1611 in #1297
- doc: Comparison to Ecosystem (including Rust std impl) [doc: 4/N] by @phip1611 in #1292
- chore(deps): lock file maintenance by @renovate in https://git...
uefi-v0.30.0
What's Changed
- release: uefi-0.30.0 by @nicholasbishop in #1285
Full Changelog (commits): uefi-v0.29.0...uefi-v0.30.0
Full Changelog (document): https://github.com/rust-osdev/uefi-rs/blob/main/CHANGELOG.md
uefi-0.29.0
See CHANGELOG.md
Changelog by PR
What's Changed
- build(deps): bump rustls from 0.22.2 to 0.22.4 by @dependabot in #1142
- Nuke uefi services from repository by @phip1611 in #1141
- [Misc] Add ResetNotification protocol. Add Misc to uefi-test-runner. by @sky5454 in #1116
- Minor import/export cleanups by @nicholasbishop in #1144
- uefi: Drop the panic-on-logger-errors feature by @nicholasbishop in #1143
- Replace
cstr16!with a declarative macro by @nicholasbishop in #1145 - chore(deps): update crate-ci/typos action to v1.20.9 by @renovate in #1146
- fix(deps): update rust crate proc-macro2 to v1.0.81 by @renovate in #1147
- fix(deps): update rust crate syn to v2.0.60 by @renovate in #1149
- fix(deps): update rust crate serde_json to v1.0.116 by @renovate in #1148
- Replace
cstr8!with a declarative macro by @nicholasbishop in #1151 - Remove xtask from MSRV build and update clap by @nicholasbishop in #1152
- chore(deps): lock file maintenance by @renovate in #1150
- chore(deps): update crate-ci/typos action to v1.20.10 by @renovate in #1153
- fix(deps): update rust crate ureq to v2.9.7 by @renovate in #1154
- Fix risc target_arch cfg by @nicholasbishop in #1159
- chore(deps): update crate-ci/typos action to v1.21.0 by @renovate in #1158
- chore(deps): update rust crate trybuild to v1.0.93 by @renovate in #1157
- Match MaximumCapsuleSize to UEFI spec by @andre-braga in #1161
- Add RuntimeServices::update_capsule by @andre-braga in #1162
- chore(deps): lock file maintenance by @renovate in #1165
- Add RuntimeServices::query_capsule_capabilities by @andre-braga in #1166
- Note about feature flags for uefi book by @stillinbeta in #1168
- chore(deps): lock file maintenance by @renovate in #1171
- fix(deps): update rust crate anyhow to v1.0.86 by @renovate in #1164
- uefi-raw: misc by @phip1611 in #1173
- mem: clarify confusion around MemoryDescriptor by @phip1611 in #1174
- uefi/helpers: logger logs to debugcon device by @phip1611 in #1172
- Add basic API for a global system table by @nicholasbishop in #1156
- uefi: BootServices::allocate_pool now returns NonZero instead of *mut u8 by @phip1611 in #1176
- fix(deps): update rust crate itertools to 0.13.0 by @renovate in #1179
- fix(deps): update rust crate nix to 0.29.0 by @renovate in #1180
- chore(deps): update cachix/install-nix-action action to v27 by @renovate in #1181
- chore(deps): lock file maintenance by @renovate in #1182
- Fix uefi-macros trybuild test by @nicholasbishop in #1183
- chore(deps): lock file maintenance by @renovate in #1184
- uefi: Stop enabling
error_in_corefeature by @nicholasbishop in #1194 - chore(deps): update crate-ci/typos action to v1.22.3 by @renovate in #1193
- chore(deps): lock file maintenance by @renovate in #1195
- reorganize deps by @andre-braga in #1196
- uefi: Add TryFrom u8 slice to DevicePathHeader by @andre-braga in #1199
- test-runner: Consistently use global image handle by @nicholasbishop in #1189
- uefi: Add TryFrom u8 slice to DevicePathNode by @andre-braga in #1197
- Clean up duplicate global system table pointer in
uefi::helpersby @nicholasbishop in #1188 - uefi: make DevicePathHeader::try_from idiomatic by @andre-braga in #1202
- uefi: Add TryFrom u8 slice to DevicePath by @andre-braga in #1201
- uefi: re-export CapsuleFlags by @andre-braga in #1203
- ci: Temporarily turn off warnings-as-errors for nightly CI jobs by @nicholasbishop in #1206
- chore(deps): update crate-ci/typos action to v1.22.7 by @renovate in #1207
- chore(deps): lock file maintenance by @renovate in #1208
- uefi: use UNSPECIFIED_TIMEZONE instead of magic number by @andre-braga in #1210
- uefi: Make TimeError more descriptive by @andre-braga in #1211
- Fix versions by @LightAndLight in #1187
- uefi-test-runner: speed up ploting of sierpinski triangle by updating changed pixel only by @JeffLi01 in #1209
- nix/niv: update nixpkgs to nixos-24.05 by @phip1611 in #1213
- memory map: improvements to fight pitfalls (MemoryMap now owns the memory) by @phip1611 in #1175
- uefi: simplify usage of Mode by @phip1611 in #1214
- chore(deps): update crate-ci/typos action to v1.22.9 by @renovate in #1215
- template: fix build failure by @JeffLi01 in #1217
- uefi: Add TryFrom<&[u8]> for Time by @andre-braga in #1212
- chore(deps): lock file maintenance by @renovate in #1218
- fix(deps): update rust crate clap to v4.5.8 by @renovate in #1220
- chore(deps): update rust crate log to v0.4.22 by @renovate in #1219
- release: uefi-macros-0.14.0, uefi-raw-0.6.0, uefi-0.29.0 by @nicholasbishop in #1221
New Contributors
- @sky5454 made their first contribution in #1116
- @andre-braga made their first contribution in #1161
- @stillinbeta made their first contribution in #1168
- @LightAndLight made their first contribution in #1187
- @JeffLi01 made their first contribution in #1209
Full Changelog: uefi-v0.28.0...uefi-v0.29.0