summaryrefslogtreecommitdiffstats
path: root/vendor/r-efi/NEWS.md
blob: 5378e2d703353ad5f9dcde2db9a96e1e6be5611e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# r-efi - UEFI Reference Specification Protocol Constants and Definitions

## 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