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
r-efi - UEFI Reference Specification Protocol Constants and Definitions
CHANGES WITH 4.3.0:
* Change alignment of `Guid` to 4 (was 8 before). This deviates from
the specification, but aligns with EDK2. This should fix alignment
mismatches when combining r-efi with EDK2, or other UEFI
implementations.
* `Guid` gained a new constructor `from_bytes()` to allow creating
GUID-abstractions from foreign types based on the standardized
memory representation.
* Add all configuration-table GUIDs mentioned in the spec. These are
often rooted in external specifications, but are strongly related
to UEFI.
* Add configuration-table definitions for RT_PROPERTIES and
CONFORMANCE_PROFILES.
* New protocols: hii_package_list, absolute_pointer
Contributions from: David Rheinsberg, John Schock, Michael Kubacki,
Nicholas Bishop
- Dußlingen, 2023-10-18
CHANGES WITH 4.2.0:
* Bump required compiler version to: rust-1.68
* New Protocols: debugport, debug-support, driver-diagnostics2,
mp-services, shell, shell-dynamic-command,
shell-parameters, udp-4, udp-6
* Use const-generics instead of ZSTs to represent dynamic trailing
members in C structs.
* The `examples` feature has been renamed to `native` (a backwards
compatible feature is left in place).
* Add support for riscv64.
* Use the official rust `efiapi` calling convention. This was
stabilized with rust-1.68.
Contributions from: Ayush Singh, David Rheinsberg, Rob Bradford
- Dußlingen, 2023-03-20
CHANGES WITH 4.1.0:
* New Protocols: device-path-{from,to}-text, ip4, ip6, managed-network,
rng, service-binding, tcp4, tcp6, timestamp
* `ImageEntryPoint` is now correctly annotated as `eficall`.
* `Time` now derives `Default`.
* Fix nullable function pointers to use `Option<fn ...>`.
* Function prototypes now have an explicit type definition and can be
used independent of their protocol definition.
* The new `rust-dep-of-std` feature option allows pulling in r-efi
into the rust standard library. It prepares the crate workspace to
be suitable for the standard library. It has no use outside of this.
* Adopt the MIT license as 3rd licensing option to allow for
integration into the rust compiler and ecosystem.
Contributions from: Ayush Singh, David Rheinsberg, Joe Richey
- Tübingen, 2022-08-23
CHANGES WITH 4.0.0:
* Convert all enums to constants with type-aliases. This is an API
break, but it is needed for spec-compliance. With the old enums, one
couldn't encode all the possible values defined by the spec.
Especially, the vendor-reserved ranges were unable to be encoded in
a safe manner. Also see commit 401a91901e860 for a detailed
discussion.
API users likely need to convert their CamelCase enum usage to the
new UPPER_CASE constants.
* Convert all incomplete types to empty arrays. This affects all
structures that use trailing unbound arrays. These are actually ABI
incompatible with UEFI, since rust represents raw-pointers to such
types as fat-pointers. Such arrays have now been converted to empty
arrays, which should still allow accessing the memory location and
retaining structure properties, but avoids fat-pointers.
This is an API break, so you might have to adjust your accessors of
those trailing structure members.
* Implement `Clone` and `Copy` for most basic structures. Since these
are used as plain carriers, no higher clone/copy logic is needed. It
should be clear from the project-description, that only basic UEFI
compatibility is provided.
* Add the console-control vendor protocol. This protocol allows
controlling console properties. It is not part of the UEFI
specification, but rather defined by the TianoCore project.
* Add a new example showing how to use the GOP functions to query the
active graphics device.
Contributions from: David Rheinsberg, GGRei, Hiroki Tokunaga,
Richard Wiedenhöft
- Tübingen, 2021-06-23
CHANGES WITH 3.2.0:
* Add new protocols: DiskIo, DiskIo2, BlockIo, DriverBinding
* Extend the Device-Path payload structure and add the HardDriveMedia
payload.
* Add HII definitions: A new top-level module `hii` with all the basic
HII constants, as well as a handful of HII protocols (hii_database,
hii_font, hii_string)
* Document new `-Zbuild-std` based cross-compilation, serving as
official rust alternative to cargo-xbuild.
Contributions from: Alex James, Bret Barkelew, David Rheinsberg,
Michael Kubacki
- Tübingen, 2020-10-23
CHANGES WITH 3.1.0:
* Add the basic networking types to `r_efi::base`. This includes MAC
and IP address types.
* Add the EFI_SIMPLE_NETWORK_PROTOCOL definitions and all required
constants to make basic networking available.
* Add a new uefi-cross example, which is copied from upstream rustc
sources, so we can test local modifications to it.
Contributions from: Alex James, David Rheinsberg
- Tübingen, 2020-09-10
CHANGES WITH 3.0.0:
* Fix a missing parameter in `BootServices::locate_device_path()`. The
prototype incorrectly had 2 arguments, while the official version
takes 3. The final `handle` argument was missing.
This is an API break in `r-efi`. It should have a limited impact,
since the function was mostly useless without a handle.
Thanks to Michael Kubacki for catching this!
* Adjust the `device_path` parameter in a bunch of `BootServices`
calls. This used to take a `*mut c_void` parameter, since the device
path protocol was not implemented.
Since we have to bump the major version anyway, we use this to also
fix these argument-types to the correct device-path protocol type,
which has been implemented some time ago.
Contributions from: David Rheinsberg, Michael Kubacki
- Tübingen, 2020-04-24
CHANGES WITH 2.2.0:
* Provide `as_usize()` accessor for `efi::Status` types. This allows
accessing the raw underlying value of a status object.
* The project moved to its new home at: github.com/r-efi/r-efi
Contributions from: David Rheinsberg, Joe Richey
- Tübingen, 2020-04-16
CHANGES WITH 2.1.0:
* Add the graphics-output-protocol.
* Expose reserved fields in open structures, otherwise they cannot be
instantiated from outside the crate itself.
Contributions from: David Herrmann, Richard Wiedenhöft, Rob Bradford
- Tübingen, 2019-03-20
CHANGES WITH 2.0.0:
* Add a set of UEFI protocols, including simple-text-input,
file-protocol, simple-file-system, device-path, and more.
* Fix signature of `BootServices::allocate_pages`.
Contributions from: David Rheinsberg, Richard Wiedenhöft, Tom Gundersen
- Tübingen, 2019-03-01
CHANGES WITH 1.0.0:
* Enhance the basic UEFI type integration with the rust ecosystem. Add
`Debug`, `Eq`, `Ord`, ... derivations, provide converters to/from the
core library, and document the internal workings.
* Fix `Boolean` to use `newtype(u8)` to make it ABI compatible to UEFI.
This now accepts any byte value that UEFI accetps without any
conversion required.
Contributions from: Boris-Chengbiao Zhou, David Rheinsberg, Tom
Gundersen
- Tübingen, 2019-02-14
CHANGES WITH 0.1.1:
* Feature gate examples to make `cargo test` work on non-UEFI systems
like CI.
Contributions from: David Herrmann
- Tübingen, 2018-12-10
CHANGES WITH 0.1.0:
* Initial release of r-efi.
Contributions from: David Herrmann
- Tübingen, 2018-12-10