html-to-markdown 2.27.1 → 2.27.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +8 -8
  3. data/ext/html-to-markdown-rb/native/Cargo.toml +1 -1
  4. data/lib/html_to_markdown/version.rb +1 -1
  5. data/rust-vendor/getrandom/.cargo-checksum.json +1 -1
  6. data/rust-vendor/getrandom/.cargo_vcs_info.json +1 -1
  7. data/rust-vendor/getrandom/CHANGELOG.md +62 -43
  8. data/rust-vendor/getrandom/Cargo.lock +49 -56
  9. data/rust-vendor/getrandom/Cargo.toml +2 -2
  10. data/rust-vendor/getrandom/Cargo.toml.orig +2 -2
  11. data/rust-vendor/getrandom/src/backends/efi_rng.rs +8 -10
  12. data/rust-vendor/getrandom/src/backends/getentropy.rs +13 -4
  13. data/rust-vendor/getrandom/src/backends/linux_android_with_fallback.rs +10 -25
  14. data/rust-vendor/getrandom/src/backends/netbsd.rs +17 -25
  15. data/rust-vendor/getrandom/src/backends/rdrand.rs +15 -9
  16. data/rust-vendor/getrandom/src/backends/rndr.rs +2 -1
  17. data/rust-vendor/getrandom/src/backends/vxworks.rs +7 -3
  18. data/rust-vendor/getrandom/src/backends/windows.rs +21 -5
  19. data/rust-vendor/getrandom/src/utils/lazy_bool.rs +39 -0
  20. data/rust-vendor/getrandom/src/utils/lazy_ptr.rs +57 -0
  21. data/rust-vendor/html-to-markdown-rs/Cargo.toml +2 -2
  22. data/rust-vendor/html-to-markdown-rs/src/converter/plain_text.rs +64 -9
  23. data/rust-vendor/html-to-markdown-rs/src/converter/text_node.rs +2 -1
  24. data/rust-vendor/html-to-markdown-rs/tests/issue_216_217_regressions.rs +82 -0
  25. data/rust-vendor/html-to-markdown-rs/tests/plain_output_test.rs +59 -6
  26. data/rust-vendor/quote/.cargo-checksum.json +1 -1
  27. data/rust-vendor/quote/.cargo_vcs_info.json +1 -1
  28. data/rust-vendor/quote/.github/workflows/ci.yml +2 -2
  29. data/rust-vendor/quote/Cargo.lock +21 -21
  30. data/rust-vendor/quote/Cargo.toml +2 -2
  31. data/rust-vendor/quote/Cargo.toml.orig +2 -2
  32. data/rust-vendor/quote/README.md +0 -1
  33. data/rust-vendor/quote/src/lib.rs +1 -1
  34. data/rust-vendor/quote/src/to_tokens.rs +7 -0
  35. data/rust-vendor/quote/tests/ui/not-quotable.stderr +1 -1
  36. data/rust-vendor/quote/tests/ui/not-repeatable.stderr +3 -11
  37. data/rust-vendor/r-efi/.cargo-checksum.json +1 -1
  38. data/rust-vendor/r-efi/.cargo_vcs_info.json +1 -1
  39. data/rust-vendor/r-efi/AUTHORS +1 -0
  40. data/rust-vendor/r-efi/Cargo.lock +1 -1
  41. data/rust-vendor/r-efi/Cargo.toml +1 -3
  42. data/rust-vendor/r-efi/Cargo.toml.orig +1 -5
  43. data/rust-vendor/r-efi/NEWS.md +16 -0
  44. data/rust-vendor/r-efi/src/base.rs +1 -1
  45. data/rust-vendor/r-efi/src/lib.rs +27 -12
  46. data/rust-vendor/r-efi/src/protocols/absolute_pointer.rs +4 -4
  47. data/rust-vendor/r-efi/src/protocols/block_io.rs +8 -8
  48. data/rust-vendor/r-efi/src/protocols/bus_specific_driver_override.rs +2 -2
  49. data/rust-vendor/r-efi/src/protocols/debug_support.rs +10 -10
  50. data/rust-vendor/r-efi/src/protocols/debugport.rs +8 -8
  51. data/rust-vendor/r-efi/src/protocols/decompress.rs +4 -4
  52. data/rust-vendor/r-efi/src/protocols/device_path_from_text.rs +4 -4
  53. data/rust-vendor/r-efi/src/protocols/device_path_to_text.rs +4 -4
  54. data/rust-vendor/r-efi/src/protocols/device_path_utilities.rs +16 -16
  55. data/rust-vendor/r-efi/src/protocols/disk_io.rs +4 -4
  56. data/rust-vendor/r-efi/src/protocols/disk_io2.rs +8 -8
  57. data/rust-vendor/r-efi/src/protocols/driver_binding.rs +6 -6
  58. data/rust-vendor/r-efi/src/protocols/driver_diagnostics2.rs +2 -2
  59. data/rust-vendor/r-efi/src/protocols/driver_family_override.rs +2 -2
  60. data/rust-vendor/r-efi/src/protocols/file.rs +28 -28
  61. data/rust-vendor/r-efi/src/protocols/graphics_output.rs +6 -6
  62. data/rust-vendor/r-efi/src/protocols/hii_database.rs +24 -24
  63. data/rust-vendor/r-efi/src/protocols/hii_font.rs +8 -8
  64. data/rust-vendor/r-efi/src/protocols/hii_font_ex.rs +10 -10
  65. data/rust-vendor/r-efi/src/protocols/hii_string.rs +10 -10
  66. data/rust-vendor/r-efi/src/protocols/ip4.rs +16 -16
  67. data/rust-vendor/r-efi/src/protocols/ip6.rs +18 -18
  68. data/rust-vendor/r-efi/src/protocols/load_file.rs +2 -2
  69. data/rust-vendor/r-efi/src/protocols/loaded_image.rs +2 -2
  70. data/rust-vendor/r-efi/src/protocols/managed_network.rs +16 -16
  71. data/rust-vendor/r-efi/src/protocols/memory_attribute.rs +6 -6
  72. data/rust-vendor/r-efi/src/protocols/mp_services.rs +15 -15
  73. data/rust-vendor/r-efi/src/protocols/pci_io.rs +26 -26
  74. data/rust-vendor/r-efi/src/protocols/platform_driver_override.rs +6 -6
  75. data/rust-vendor/r-efi/src/protocols/rng.rs +4 -4
  76. data/rust-vendor/r-efi/src/protocols/service_binding.rs +4 -4
  77. data/rust-vendor/r-efi/src/protocols/shell.rs +81 -81
  78. data/rust-vendor/r-efi/src/protocols/shell_dynamic_command.rs +4 -4
  79. data/rust-vendor/r-efi/src/protocols/simple_file_system.rs +2 -2
  80. data/rust-vendor/r-efi/src/protocols/simple_network.rs +26 -26
  81. data/rust-vendor/r-efi/src/protocols/simple_text_input.rs +4 -4
  82. data/rust-vendor/r-efi/src/protocols/simple_text_input_ex.rs +11 -11
  83. data/rust-vendor/r-efi/src/protocols/simple_text_output.rs +18 -18
  84. data/rust-vendor/r-efi/src/protocols/tcp4.rs +20 -20
  85. data/rust-vendor/r-efi/src/protocols/tcp6.rs +18 -18
  86. data/rust-vendor/r-efi/src/protocols/timestamp.rs +3 -3
  87. data/rust-vendor/r-efi/src/protocols/udp4.rs +16 -16
  88. data/rust-vendor/r-efi/src/protocols/udp6.rs +14 -14
  89. data/rust-vendor/r-efi/src/system.rs +115 -115
  90. data/rust-vendor/r-efi/src/vendor/intel/console_control.rs +6 -6
  91. data/rust-vendor/r-efi-5.3.0/.cargo-checksum.json +1 -0
  92. data/rust-vendor/r-efi-5.3.0/.cargo_vcs_info.json +6 -0
  93. data/rust-vendor/r-efi-5.3.0/.github/workflows/publish.yml +39 -0
  94. data/rust-vendor/r-efi-5.3.0/.github/workflows/rust-tests.yml +125 -0
  95. data/rust-vendor/r-efi-5.3.0/AUTHORS +74 -0
  96. data/rust-vendor/r-efi-5.3.0/Cargo.lock +16 -0
  97. data/rust-vendor/r-efi-5.3.0/Cargo.toml +70 -0
  98. data/rust-vendor/r-efi-5.3.0/Cargo.toml.orig +51 -0
  99. data/rust-vendor/r-efi-5.3.0/Makefile +85 -0
  100. data/rust-vendor/r-efi-5.3.0/NEWS.md +301 -0
  101. data/rust-vendor/r-efi-5.3.0/README.md +99 -0
  102. data/rust-vendor/r-efi-5.3.0/examples/freestanding.rs +34 -0
  103. data/rust-vendor/r-efi-5.3.0/examples/gop-query.rs +188 -0
  104. data/rust-vendor/r-efi-5.3.0/examples/hello-world.rs +55 -0
  105. data/rust-vendor/r-efi-5.3.0/src/base.rs +993 -0
  106. data/rust-vendor/r-efi-5.3.0/src/hii.rs +1300 -0
  107. data/rust-vendor/r-efi-5.3.0/src/lib.rs +182 -0
  108. data/rust-vendor/r-efi-5.3.0/src/protocols/absolute_pointer.rs +69 -0
  109. data/rust-vendor/r-efi-5.3.0/src/protocols/block_io.rs +70 -0
  110. data/rust-vendor/r-efi-5.3.0/src/protocols/bus_specific_driver_override.rs +32 -0
  111. data/rust-vendor/r-efi-5.3.0/src/protocols/debug_support.rs +835 -0
  112. data/rust-vendor/r-efi-5.3.0/src/protocols/debugport.rs +42 -0
  113. data/rust-vendor/r-efi-5.3.0/src/protocols/decompress.rs +37 -0
  114. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path.rs +82 -0
  115. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path_from_text.rs +26 -0
  116. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path_to_text.rs +30 -0
  117. data/rust-vendor/r-efi-5.3.0/src/protocols/device_path_utilities.rs +63 -0
  118. data/rust-vendor/r-efi-5.3.0/src/protocols/disk_io.rs +40 -0
  119. data/rust-vendor/r-efi-5.3.0/src/protocols/disk_io2.rs +58 -0
  120. data/rust-vendor/r-efi-5.3.0/src/protocols/driver_binding.rs +42 -0
  121. data/rust-vendor/r-efi-5.3.0/src/protocols/driver_diagnostics2.rs +38 -0
  122. data/rust-vendor/r-efi-5.3.0/src/protocols/driver_family_override.rs +23 -0
  123. data/rust-vendor/r-efi-5.3.0/src/protocols/file.rs +183 -0
  124. data/rust-vendor/r-efi-5.3.0/src/protocols/graphics_output.rs +103 -0
  125. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_database.rs +299 -0
  126. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_font.rs +87 -0
  127. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_font_ex.rs +107 -0
  128. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_package_list.rs +14 -0
  129. data/rust-vendor/r-efi-5.3.0/src/protocols/hii_string.rs +71 -0
  130. data/rust-vendor/r-efi-5.3.0/src/protocols/ip4.rs +202 -0
  131. data/rust-vendor/r-efi-5.3.0/src/protocols/ip6.rs +264 -0
  132. data/rust-vendor/r-efi-5.3.0/src/protocols/load_file.rs +26 -0
  133. data/rust-vendor/r-efi-5.3.0/src/protocols/load_file2.rs +15 -0
  134. data/rust-vendor/r-efi-5.3.0/src/protocols/loaded_image.rs +39 -0
  135. data/rust-vendor/r-efi-5.3.0/src/protocols/loaded_image_device_path.rs +13 -0
  136. data/rust-vendor/r-efi-5.3.0/src/protocols/managed_network.rs +147 -0
  137. data/rust-vendor/r-efi-5.3.0/src/protocols/memory_attribute.rs +40 -0
  138. data/rust-vendor/r-efi-5.3.0/src/protocols/mp_services.rs +121 -0
  139. data/rust-vendor/r-efi-5.3.0/src/protocols/pci_io.rs +203 -0
  140. data/rust-vendor/r-efi-5.3.0/src/protocols/platform_driver_override.rs +46 -0
  141. data/rust-vendor/r-efi-5.3.0/src/protocols/rng.rs +83 -0
  142. data/rust-vendor/r-efi-5.3.0/src/protocols/service_binding.rs +20 -0
  143. data/rust-vendor/r-efi-5.3.0/src/protocols/shell.rs +295 -0
  144. data/rust-vendor/r-efi-5.3.0/src/protocols/shell_dynamic_command.rs +33 -0
  145. data/rust-vendor/r-efi-5.3.0/src/protocols/shell_parameters.rs +23 -0
  146. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_file_system.rs +26 -0
  147. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_network.rs +196 -0
  148. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_text_input.rs +38 -0
  149. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_text_input_ex.rs +85 -0
  150. data/rust-vendor/r-efi-5.3.0/src/protocols/simple_text_output.rs +86 -0
  151. data/rust-vendor/r-efi-5.3.0/src/protocols/tcp4.rs +224 -0
  152. data/rust-vendor/r-efi-5.3.0/src/protocols/tcp6.rs +202 -0
  153. data/rust-vendor/r-efi-5.3.0/src/protocols/timestamp.rs +32 -0
  154. data/rust-vendor/r-efi-5.3.0/src/protocols/udp4.rs +151 -0
  155. data/rust-vendor/r-efi-5.3.0/src/protocols/udp6.rs +137 -0
  156. data/rust-vendor/r-efi-5.3.0/src/protocols.rs +54 -0
  157. data/rust-vendor/r-efi-5.3.0/src/system.rs +1130 -0
  158. data/rust-vendor/r-efi-5.3.0/src/vendor/intel/console_control.rs +37 -0
  159. data/rust-vendor/r-efi-5.3.0/src/vendor.rs +10 -0
  160. data/rust-vendor/tokio/.cargo-checksum.json +1 -1
  161. data/rust-vendor/tokio/.cargo_vcs_info.json +1 -1
  162. data/rust-vendor/tokio/CHANGELOG.md +94 -0
  163. data/rust-vendor/tokio/Cargo.lock +1549 -0
  164. data/rust-vendor/tokio/Cargo.toml +96 -83
  165. data/rust-vendor/tokio/Cargo.toml.orig +7 -7
  166. data/rust-vendor/tokio/README.md +1 -1
  167. data/rust-vendor/tokio/src/fs/open_options.rs +4 -1
  168. data/rust-vendor/tokio/src/fs/read.rs +4 -1
  169. data/rust-vendor/tokio/src/fs/write.rs +4 -1
  170. data/rust-vendor/tokio/src/io/async_write.rs +3 -4
  171. data/rust-vendor/tokio/src/io/poll_evented.rs +23 -1
  172. data/rust-vendor/tokio/src/io/stderr.rs +15 -1
  173. data/rust-vendor/tokio/src/io/stdout.rs +14 -0
  174. data/rust-vendor/tokio/src/io/util/async_write_ext.rs +2 -2
  175. data/rust-vendor/tokio/src/io/util/write_buf.rs +11 -2
  176. data/rust-vendor/tokio/src/lib.rs +12 -28
  177. data/rust-vendor/tokio/src/macros/select.rs +6 -8
  178. data/rust-vendor/tokio/src/net/tcp/socket.rs +25 -1
  179. data/rust-vendor/tokio/src/net/tcp/stream.rs +40 -1
  180. data/rust-vendor/tokio/src/process/unix/pidfd_reaper.rs +1 -41
  181. data/rust-vendor/tokio/src/runtime/blocking/pool.rs +18 -14
  182. data/rust-vendor/tokio/src/runtime/builder.rs +10 -4
  183. data/rust-vendor/tokio/src/runtime/handle.rs +3 -2
  184. data/rust-vendor/tokio/src/runtime/io/driver/uring.rs +49 -61
  185. data/rust-vendor/tokio/src/runtime/io/driver.rs +6 -5
  186. data/rust-vendor/tokio/src/runtime/mod.rs +20 -1
  187. data/rust-vendor/tokio/src/runtime/runtime.rs +71 -1
  188. data/rust-vendor/tokio/src/runtime/scheduler/current_thread/mod.rs +24 -8
  189. data/rust-vendor/tokio/src/runtime/scheduler/multi_thread/worker.rs +5 -0
  190. data/rust-vendor/tokio/src/runtime/task/core.rs +1 -0
  191. data/rust-vendor/tokio/src/runtime/task/join.rs +7 -3
  192. data/rust-vendor/tokio/src/runtime/task/list.rs +5 -3
  193. data/rust-vendor/tokio/src/runtime/task/mod.rs +0 -5
  194. data/rust-vendor/tokio/src/runtime/tests/loom_blocking.rs +39 -1
  195. data/rust-vendor/tokio/src/signal/mod.rs +6 -17
  196. data/rust-vendor/tokio/src/signal/registry.rs +1 -1
  197. data/rust-vendor/tokio/src/signal/unix.rs +24 -44
  198. data/rust-vendor/tokio/src/signal/windows/sys.rs +52 -64
  199. data/rust-vendor/tokio/src/signal/windows.rs +35 -23
  200. data/rust-vendor/tokio/src/sync/mpsc/mod.rs +3 -1
  201. data/rust-vendor/tokio/src/sync/oneshot.rs +13 -0
  202. data/rust-vendor/tokio/src/sync/rwlock.rs +4 -5
  203. data/rust-vendor/tokio/src/sync/tests/loom_oneshot.rs +27 -1
  204. data/rust-vendor/tokio/src/task/blocking.rs +16 -1
  205. data/rust-vendor/tokio/src/task/builder.rs +2 -2
  206. data/rust-vendor/tokio/src/task/mod.rs +1 -1
  207. data/rust-vendor/tokio/src/task/spawn.rs +8 -3
  208. data/rust-vendor/tokio/src/task/yield_now.rs +13 -23
  209. data/rust-vendor/tokio/src/time/clock.rs +62 -0
  210. data/rust-vendor/tokio/src/util/memchr.rs +32 -4
  211. data/rust-vendor/tokio/src/util/sharded_list.rs +6 -4
  212. data/rust-vendor/tokio/tests/fs_link.rs +54 -0
  213. data/rust-vendor/tokio/tests/io_async_fd_memory_leak.rs +209 -0
  214. data/rust-vendor/tokio/tests/io_write_buf.rs +56 -0
  215. data/rust-vendor/tokio/tests/process_issue_7144.rs +8 -0
  216. data/rust-vendor/tokio/tests/rt_basic.rs +41 -0
  217. data/rust-vendor/tokio/tests/rt_common_before_park.rs +92 -0
  218. data/rust-vendor/tokio/tests/rt_metrics.rs +1 -1
  219. data/rust-vendor/tokio/tests/rt_panic.rs +12 -0
  220. data/rust-vendor/tokio/tests/rt_shutdown_err.rs +82 -0
  221. data/rust-vendor/tokio/tests/rt_threaded.rs +49 -1
  222. data/rust-vendor/tokio/tests/rt_unstable_metrics.rs +32 -0
  223. data/rust-vendor/tokio/tests/tcp_connect.rs +2 -3
  224. data/rust-vendor/tokio/tests/tcp_shutdown.rs +1 -3
  225. data/rust-vendor/tokio/tests/tcp_socket.rs +3 -4
  226. data/rust-vendor/tokio/tests/tcp_stream.rs +3 -0
  227. metadata +78 -3
  228. data/rust-vendor/getrandom/src/utils/lazy.rs +0 -64
@@ -89,7 +89,7 @@
89
89
  //! [prettyplease]: https://github.com/dtolnay/prettyplease
90
90
 
91
91
  #![no_std]
92
- #![doc(html_root_url = "https://docs.rs/quote/1.0.44")]
92
+ #![doc(html_root_url = "https://docs.rs/quote/1.0.45")]
93
93
  #![allow(
94
94
  clippy::doc_markdown,
95
95
  clippy::elidable_lifetime_names,
@@ -1,4 +1,5 @@
1
1
  use super::TokenStreamExt;
2
+ use std::sync::Arc;
2
3
  use alloc::borrow::{Cow, ToOwned};
3
4
  use alloc::boxed::Box;
4
5
  use alloc::ffi::CString;
@@ -104,6 +105,12 @@ impl<T: ?Sized + ToTokens> ToTokens for Rc<T> {
104
105
  }
105
106
  }
106
107
 
108
+ impl<T: ?Sized + ToTokens> ToTokens for Arc<T> {
109
+ fn to_tokens(&self, tokens: &mut TokenStream) {
110
+ (**self).to_tokens(tokens);
111
+ }
112
+ }
113
+
107
114
  impl<T: ToTokens> ToTokens for Option<T> {
108
115
  fn to_tokens(&self, tokens: &mut TokenStream) {
109
116
  if let Some(t) = self {
@@ -10,11 +10,11 @@ error[E0277]: the trait bound `Ipv4Addr: ToTokens` is not satisfied
10
10
  = help: the following other types implement trait `ToTokens`:
11
11
  &T
12
12
  &mut T
13
+ Arc<T>
13
14
  Box<T>
14
15
  CStr
15
16
  CString
16
17
  Cow<'a, T>
17
18
  Option<T>
18
- Rc<T>
19
19
  and $N others
20
20
  = note: this error originates in the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -2,7 +2,7 @@ error[E0599]: the method `quote_into_iter` exists for struct `Ipv4Addr`, but its
2
2
  --> tests/ui/not-repeatable.rs:7:13
3
3
  |
4
4
  3 | struct Ipv4Addr;
5
- | --------------- method `quote_into_iter` not found for this struct because it doesn't satisfy `Ipv4Addr: Iterator`, `Ipv4Addr: ToTokens`, `Ipv4Addr: quote::__private::ext::RepIteratorExt` or `Ipv4Addr: quote::__private::ext::RepToTokensExt`
5
+ | --------------- method `quote_into_iter` not found for this struct because `Ipv4Addr` doesn't implement `Iterator` or `ToTokens`
6
6
  ...
7
7
  7 | let _ = quote! { #(#ip)* };
8
8
  | ^^^^^^^^^^^^^^^^^^ method cannot be called on `Ipv4Addr` due to unsatisfied trait bounds
@@ -19,8 +19,8 @@ error[E0599]: the method `quote_into_iter` exists for struct `Ipv4Addr`, but its
19
19
  note: the traits `Iterator` and `ToTokens` must be implemented
20
20
  --> $RUST/core/src/iter/traits/iterator.rs
21
21
  |
22
- | pub trait Iterator {
23
- | ^^^^^^^^^^^^^^^^^^
22
+ | pub const trait Iterator {
23
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
24
24
  |
25
25
  ::: src/to_tokens.rs
26
26
  |
@@ -32,11 +32,3 @@ note: the traits `Iterator` and `ToTokens` must be implemented
32
32
  candidate #2: `quote::__private::ext::RepIteratorExt`
33
33
  candidate #3: `quote::__private::ext::RepToTokensExt`
34
34
  = note: this error originates in the macro `$crate::quote_bind_into_iter` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
35
-
36
- error[E0282]: type annotations needed
37
- --> tests/ui/not-repeatable.rs:7:13
38
- |
39
- 7 | let _ = quote! { #(#ip)* };
40
- | ^^^^^^^^^^^^^^^^^^ cannot infer type
41
- |
42
- = note: this error originates in the macro `$crate::quote_bind_next_or_break` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
@@ -1 +1 @@
1
- {"files":{".cargo_vcs_info.json":"50e0c72ee0164f182d7b5db0213cdb1626bad950f2443b05d006c28c7f0641b5",".github/workflows/publish.yml":"431c68b9d566180134e8771ea9cb9339d72ec77c3010b4cedfd423e271dc7386",".github/workflows/rust-tests.yml":"ca7ba173da0a6510676770b103119ce57029d424afe9e1027541d529af6c7f3f","AUTHORS":"ff92bed461f50338dd703a9ba9aee496a425957873df1d91192776e4bdf5dda7","Cargo.lock":"cc335892128a13fb1431213f65cfd3281ff098cf47b97882ca097f0206d7e0b0","Cargo.toml":"dba000c0173b09b1e3b69afa42a715b5ab64355e6502ce6d9d1767c7845cf402","Cargo.toml.orig":"57b6d9b9a1b6524f6b4dcc1dd24970ac03e6959786a6cfedaec9ba52878b4d3e","Makefile":"b445cfadd750b564ba8ef072754a4eed5aa127f12faa6e5b15a35b748d28b6fb","NEWS.md":"a8924309f9b5d8cf035b12ee47d4afe99c3ca57ea60061239263ac0b0e2161ba","README.md":"420f65fec3ba2e89d49da51b222d2881d26959037a7b7d3794143db4bd4627b1","examples/freestanding.rs":"0be5eb60397228306aa9f8afc533e32926d210205a7359e14da903159482416d","examples/gop-query.rs":"3257c55d6ae4572db1bfcaf20bc05990ea92d46c5d292eb99c278242f1007e2c","examples/hello-world.rs":"1a398f93a54bfddaab6ba3e0145cf70496266c44b9748a11ff569a9a18063bc4","src/base.rs":"e0f0b69967dc436e302f37230f5aff0e8bf748f6a1159b968180e6d0ac0b9644","src/hii.rs":"d0b19b7cc7b0c2c4d70e2891554ed6d7f941388709476eab6fa7bad129c583ed","src/lib.rs":"289fdfa8384062616aa39b49c4094b93849ff0a2e5f6d7125b40124299a0837e","src/protocols.rs":"a8f1c0d9abf2af2d7962fce68160a3bf8083165bb70861808423afedadee6602","src/protocols/absolute_pointer.rs":"46ad9792ea021f47e4fedf8d3c07769872e056c39936c9647492a52455558b41","src/protocols/block_io.rs":"4f70d38453f057bb240988d7fac593ffa0f38a0057c6e8855f34ff37801e7f3d","src/protocols/bus_specific_driver_override.rs":"a695a18e6729020919f99880fb14c2a26f565471f15d6300cb67475d33ec6087","src/protocols/debug_support.rs":"a03fc44a2ad151e58eff3bd72f910b63bfadd5802ac2fc157fc94c2030bd9fa9","src/protocols/debugport.rs":"bc491b03444ec35593a9cde519d0ab5fc863a046073dd813f1eb58c075da45dc","src/protocols/decompress.rs":"a4c67d958f0b9a392840a53eef69369acc6f545f90369685b3cae3c32e5cbc51","src/protocols/device_path.rs":"1a8c897f8e392fd7fe60d829b7852d22dd847f5f64bf1382e58e7776d9a176a2","src/protocols/device_path_from_text.rs":"e972d7699fb031df9da2c4d5623ae289d4cc282116b634218039b97d1e7628fe","src/protocols/device_path_to_text.rs":"9929d0797ab4892051bd15ac831dc2566f7106ec9edec0fd289b3c780a2b0976","src/protocols/device_path_utilities.rs":"7d7e9ba66e9f8add3c77718bd605e6e434598f2834236e7805aba57b531eba30","src/protocols/disk_io.rs":"01a68686dae958b4fbd9fd5bbc556cf41b61e7da281a0b4ea56e62e61822d843","src/protocols/disk_io2.rs":"33aeb807ab9b78534787f44e0a3a8c52afe057e23b48ecb6703195cd0b135a8e","src/protocols/driver_binding.rs":"f48363c5afd21aac39cbd2644be0e861acc4b182bc14c68a4f84e94a5f001f8d","src/protocols/driver_diagnostics2.rs":"62b0ffe6760ae0e90e51652c667ec623cef3bbd44c17fb89881a24167b1b446c","src/protocols/driver_family_override.rs":"004aceae8540766d87eb2cef9c8c37ab5aa3755920af6d960cb9171a41acb4a1","src/protocols/file.rs":"25f09f54cf3ebd69366bde5160218247c6712ae19dac17a36ec4e2881b214f93","src/protocols/graphics_output.rs":"9e9b7ac05b92ac0a9680506edb3ed36ebbac2dc9c800268b2c54cbf539e9dd9e","src/protocols/hii_database.rs":"faa82d420085dee851f8a332db00c888e7ed1685d43e2c286790a34b2ecfdf7a","src/protocols/hii_font.rs":"092f45c74335c524ee379508e2b6925ed9033c7c10928e64b2489ca3778a4723","src/protocols/hii_font_ex.rs":"2400b2092c14da2aa09c62266356321d4b96838dc41c5918a2f3e0e1e3920318","src/protocols/hii_package_list.rs":"6bb29d076697bb3b672913b98f55995f9efcba830b4ab6bfed29bd8402aa70ab","src/protocols/hii_string.rs":"1327ba9e108900ddafec98c02534c81104c3c47cad32a7d17c7b7a7ee723c86f","src/protocols/ip4.rs":"252d244ec9b098fcee6a185ffa98cbdee34164c7872fe30b07d5e8dfdf7a8fe3","src/protocols/ip6.rs":"72a51653aa4535f7b136a7bacaa1718e0a68be847d4a716c6e76b7f75a94e6ea","src/protocols/load_file.rs":"8aa4a43db3da6c71398eb9408b2be9b893eb2147e5317a0f977e998db2910cba","src/protocols/load_file2.rs":"5be9c5d501b4f10a44ba91448fce5d4a20c01eab9a8f7fb3c63eaa62cbb1c2f4","src/protocols/loaded_image.rs":"508cf1514071e611f3c70776463a19f53685b3569c52a2350f307cbeac9cbbcc","src/protocols/loaded_image_device_path.rs":"66e8fe3477785dadf96401da10e203ba729e54d7eddedaffc4d17acc9a0daf7f","src/protocols/managed_network.rs":"592111dee58137a21f3b49211baf0d9c73a14ca9de95fa31d7e87435ded3808d","src/protocols/memory_attribute.rs":"c512ae777b95248127fc39b63eb99d746aaf8a5dc2cfda167d15ea5aa627653c","src/protocols/mp_services.rs":"509e7d483df52ab1ba1f9241bb7b286ffe205c4328557b3115cd290b4c9f8278","src/protocols/pci_io.rs":"43dac18dfa284d83836ff1ccfb8e40d48ef94533b72cdb99ce30a768f70be67c","src/protocols/platform_driver_override.rs":"f0ada483bccd90f31a6f0ce8831ea00885b66ca558e34e347ec775cbc171534c","src/protocols/rng.rs":"279ce976d190889064d0159b10586bab9a2e5670368b460be4497ead523d6dda","src/protocols/service_binding.rs":"256920333ea26fabd3b62ba8a8b25068349acab6da01a807dfba3307a45d79a0","src/protocols/shell.rs":"3259b0bf2574da6b2343da0b9ce46980d296a8e6d8c2fe36df3a07d0629ad653","src/protocols/shell_dynamic_command.rs":"9c2f977fe4e0757b633de49627a9645d81c821a39e752cb329f6285d376fe52d","src/protocols/shell_parameters.rs":"fb88c63822a14dc94e96f7912fa5409f68b669105fb81459b969ec066002e352","src/protocols/simple_file_system.rs":"e3d870bdaf3ae0f0cded7817a4eda6d5dea2e0b77855cd21c7ac05046c77b564","src/protocols/simple_network.rs":"8b8c49872488cc0e759efe74c04fc65f5d7637dca7d9a0a1cedb5dafb2597acb","src/protocols/simple_text_input.rs":"d9a7e8cbf508daedaa26dc8301e52be957edfcc12be9e962b8504584aee669a8","src/protocols/simple_text_input_ex.rs":"84ccd2ff2c354c0447a9c46406ad76de018495d5f85979cf35d78b7070a8f63c","src/protocols/simple_text_output.rs":"05857880b5c0a6fb6ce83eedcc7fa25107f368950ab18a3d0ef1ed669d3456df","src/protocols/tcp4.rs":"2131cf06fd856017ea45135fb59264a43fabc3db1b7ddc90cd19c169ccdacae9","src/protocols/tcp6.rs":"98c24c43632acc60f2dc558c13a03657f93edca735435c50b9f2cc5625f7d3bb","src/protocols/timestamp.rs":"118cc4a54da4f53a4bb2fbf66cde8c433208266a22b59b4e370393f5a40c20a9","src/protocols/udp4.rs":"c4d344a40c674524383be51621a485d15ccfffaa94a1050c7a4642199fa91bf6","src/protocols/udp6.rs":"ea4ee2154e045a4e5992688e6cafed2d5a5de41f2796f5c070e739818b361550","src/system.rs":"2428de82301085a5c99b1b54411530adf2c895aa311a58c94c1b8e9eb247b18f","src/vendor.rs":"6cc53fe0e98220fe627d82c9b27f1468095358bb26634a8c19274495888138af","src/vendor/intel/console_control.rs":"03a7fdf97ab1836353266786811ac47171d1c425dcead707f5ed0e2e834873fb"},"package":"69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"}
1
+ {"files":{".cargo_vcs_info.json":"d8d0d853429b028d5e3c7b969f7c6b77b04e17486c57fac0759eb8083a359f3f",".github/workflows/publish.yml":"431c68b9d566180134e8771ea9cb9339d72ec77c3010b4cedfd423e271dc7386",".github/workflows/rust-tests.yml":"ca7ba173da0a6510676770b103119ce57029d424afe9e1027541d529af6c7f3f","AUTHORS":"d027e91dbc9cdbb2f1190068e498bd6b61cff022b6a032b191021ba658d96111","Cargo.lock":"78ff5baf710cdea584efe5a5178a658f368a4de740bd53d8733347d004767c4c","Cargo.toml":"a021f9fb0645cc5de5770cf7f41594c1deff4b388eca933b289752aa52666829","Cargo.toml.orig":"b8e89c393831c2161b6d390bd40422910ac34f02903ad39edd85ec38d4513fef","Makefile":"b445cfadd750b564ba8ef072754a4eed5aa127f12faa6e5b15a35b748d28b6fb","NEWS.md":"e815ccc6fb453ed64d5e1b73fb4ca6204a3f8f65e3ab0afdb86da65b5209e33d","README.md":"420f65fec3ba2e89d49da51b222d2881d26959037a7b7d3794143db4bd4627b1","examples/freestanding.rs":"0be5eb60397228306aa9f8afc533e32926d210205a7359e14da903159482416d","examples/gop-query.rs":"3257c55d6ae4572db1bfcaf20bc05990ea92d46c5d292eb99c278242f1007e2c","examples/hello-world.rs":"1a398f93a54bfddaab6ba3e0145cf70496266c44b9748a11ff569a9a18063bc4","src/base.rs":"864924a118f60edcdc9eaf8bdab31879ab1143166905e6eb0657f6f08d17b9a1","src/hii.rs":"d0b19b7cc7b0c2c4d70e2891554ed6d7f941388709476eab6fa7bad129c583ed","src/lib.rs":"6215dd213f39f5180f7cfad599df1d17d50f089dc1ad0c840bc647a0bc421953","src/protocols.rs":"a8f1c0d9abf2af2d7962fce68160a3bf8083165bb70861808423afedadee6602","src/protocols/absolute_pointer.rs":"b486324e1d2e352ca15e865afe97132a4b260609541f327c041bc947b2ddcd09","src/protocols/block_io.rs":"7fc213e8c07897b9318982e1d1f8b7c492ce0c881c4cd1d38d3eb91e590585ed","src/protocols/bus_specific_driver_override.rs":"e482a908e9d5027f10e449f5039a66db035fdef18329778a5ae97a094586888a","src/protocols/debug_support.rs":"16f17179ef274ef45c65d2fc8ff5db1e2131d8b3b4c86b9b531926642009a468","src/protocols/debugport.rs":"abe5b09e2192e6b8290205538947a79f433529ba2bb57708f74ea2b6f4172f6b","src/protocols/decompress.rs":"d10500f1f155ade02164e87c42ea81e7a767f20888a1f6ef189291492196ddbc","src/protocols/device_path.rs":"1a8c897f8e392fd7fe60d829b7852d22dd847f5f64bf1382e58e7776d9a176a2","src/protocols/device_path_from_text.rs":"9a4bb364b57e3dc39b40b93e2096e82a10b3251643e81de9f2c8abd40e705005","src/protocols/device_path_to_text.rs":"b2b1325aed4a4fcf142fae8208308590f2fa53eea999bb1bf22f592bf25109eb","src/protocols/device_path_utilities.rs":"36960de844fcf2634a9180ffd621f0b9771ffb4acc364d74c34680bbf58ee224","src/protocols/disk_io.rs":"831e774ddd1a75839c5d89cd704c2d59bb0adce554eecdc8bb12e9569b7a8747","src/protocols/disk_io2.rs":"645a83979e91679036ebc90fd8ab584158055a6c8316aaf620300470aac4ba2d","src/protocols/driver_binding.rs":"60bf714b8bb5d2ed183335e1d745a7150eb59d0d59241eb29251682ec1224434","src/protocols/driver_diagnostics2.rs":"dcbcd95b327768d70637ded79140e609a36aa1369f16c58764c8d161d072e615","src/protocols/driver_family_override.rs":"42ae2f96a94ea516f9696162d12e65613f4acc3cb78831be22d868846574d231","src/protocols/file.rs":"a4136bedb02272296b2246a9b4bee1096456d4c2e078bed5d1330c77d8666a6d","src/protocols/graphics_output.rs":"7c185179a32558f506eb84402c26e3bdb8bee795c1403d493fd24c7d9c3a07a9","src/protocols/hii_database.rs":"4af0d8ab357faffd568c12f2ce8df518dd3e186c1da980fbe2198f20e3ce0ac5","src/protocols/hii_font.rs":"d8a418f8b0776cd2cce0c60b457f8c09b63aadd64e6f9ce75526ddc1c5c32b80","src/protocols/hii_font_ex.rs":"f856de80e759a9c503ce5d3cca5092ec12739ab0b157f4bac8819b5275b730e9","src/protocols/hii_package_list.rs":"6bb29d076697bb3b672913b98f55995f9efcba830b4ab6bfed29bd8402aa70ab","src/protocols/hii_string.rs":"e8e725fae9860fdcdd777a0b99e48b7e4a5f5f464827414bb0aeed139ea5b993","src/protocols/ip4.rs":"09290d2a5a2cafd2b834ce86b59917d0f25d7d16f4f329aeedc171a8147ebef7","src/protocols/ip6.rs":"511de9f36af4c320f74e424c64433a70f1bd66e8b6fc9daa0e1744a0b46b1a5d","src/protocols/load_file.rs":"e8c845eb1812c3967bb026ef60ab40826e35e6fa3185007357b19311cef67eaf","src/protocols/load_file2.rs":"5be9c5d501b4f10a44ba91448fce5d4a20c01eab9a8f7fb3c63eaa62cbb1c2f4","src/protocols/loaded_image.rs":"64447c64a0a4ac3b79263bf2564ff1a930b2424ca2fd93e37d714c16c31a7205","src/protocols/loaded_image_device_path.rs":"66e8fe3477785dadf96401da10e203ba729e54d7eddedaffc4d17acc9a0daf7f","src/protocols/managed_network.rs":"f1acc8d727fa9a1fba7b376ed093c129dd8fddc8d164ca59c201e37f276e0525","src/protocols/memory_attribute.rs":"1aa7a99ed6fd268e1921dc073634cf9346759c048f5c90bef2928ac27e56a125","src/protocols/mp_services.rs":"d98a27d29f835b011a09eafaf276dd921328dc7b676713c1c437f4adef5409a6","src/protocols/pci_io.rs":"4b7ad8d7b9ee0d5e50e09b6ca12467ec4b43dfb3e455cfdd1e6e10617e26d171","src/protocols/platform_driver_override.rs":"5eb7cbc2609b0369cf380fa54be963f331124cae3fc5fd19fe75212dba4d3d9c","src/protocols/rng.rs":"a9f4854fa54acab7e8638d37e9c0b71ce36d02fcdc37b2d43726ba9686e8a3a9","src/protocols/service_binding.rs":"7c3b7c4256499451efc922d00f021479ae743706b5ed36c86aaf55c225612675","src/protocols/shell.rs":"e9fb2ab62988067d13ee839c10aacf47d94f5e92c213e1670530fe1c472925f8","src/protocols/shell_dynamic_command.rs":"e13f152c2ca57988d1b2b476b45cd6e6dc899e76359ecb2d8e04aeb55ca480ca","src/protocols/shell_parameters.rs":"fb88c63822a14dc94e96f7912fa5409f68b669105fb81459b969ec066002e352","src/protocols/simple_file_system.rs":"019910e8f5c44ba6a98ff9848eafa31e05c32833a69fbee108f2dd322bdb1748","src/protocols/simple_network.rs":"fd12bd27444634064fe5e2308b0504d452b18092d5f6e0fcba2e35cc40998b54","src/protocols/simple_text_input.rs":"673944368289c1f11313944416512169a461a8703cef039e50e1414e291152b1","src/protocols/simple_text_input_ex.rs":"b9514fe34f105dc88b9241c88adeefc18e33cbd692acc164fa0a25dbaee24c6d","src/protocols/simple_text_output.rs":"835f5ec786c1a688384b3280dcc5f75383f7822938b9ea16c9e9b802a183d293","src/protocols/tcp4.rs":"90facae493a4a5ca192c45cc323528613398f076b5d4449ac9ad617a32217f4d","src/protocols/tcp6.rs":"cf99e4cb9cadcd9ea4ef349afbb343090cae71a1324bb4e7812834f465a5b8c6","src/protocols/timestamp.rs":"ea8e5ed87c9fce83c037038bdee5daf92946631cc41774b288e6dfc5811cb64f","src/protocols/udp4.rs":"bc85ba588df857a233132c42b7fb3418acb6d89581a5b4ab2d6156e18bb17547","src/protocols/udp6.rs":"806ed1cbd53874f8a171aa3f86fdd40f2fcaa493dc2eadb0c286d8e4d67078e8","src/system.rs":"54ebb9a3842fc62a7dd4a2240490f6563c66904a14c1f81961a3677a54d85390","src/vendor.rs":"6cc53fe0e98220fe627d82c9b27f1468095358bb26634a8c19274495888138af","src/vendor/intel/console_control.rs":"05363b80feb22aa585cbe16ec4a1c8e1ef592e8e57b1a676de0562723c729275"},"package":"f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "git": {
3
- "sha1": "97b55bed1c2c91dcbf787674849f05337ff80b33"
3
+ "sha1": "7e1b0322d31d625f81a5656096330934f9cd835d"
4
4
  },
5
5
  "path_in_vcs": ""
6
6
  }
@@ -56,6 +56,7 @@ COPYRIGHT: (ordered alphabetically)
56
56
  Copyright (C) 2022-2023 David Rheinsberg
57
57
 
58
58
  AUTHORS: (ordered alphabetically)
59
+ Alan Egerton <eggyal@gmail.com>
59
60
  Alex James <theracermaster@gmail.com>
60
61
  Ayush Singh <ayushsingh1325@gmail.com>
61
62
  Boris-Chengbiao Zhou <bobo1239@web.de>
@@ -4,7 +4,7 @@ version = 3
4
4
 
5
5
  [[package]]
6
6
  name = "r-efi"
7
- version = "5.3.0"
7
+ version = "6.0.0"
8
8
  dependencies = [
9
9
  "rustc-std-workspace-core",
10
10
  ]
@@ -13,7 +13,7 @@
13
13
  edition = "2018"
14
14
  rust-version = "1.68"
15
15
  name = "r-efi"
16
- version = "5.3.0"
16
+ version = "6.0.0"
17
17
  build = false
18
18
  autolib = false
19
19
  autobins = false
@@ -40,8 +40,6 @@ license = "MIT OR Apache-2.0 OR LGPL-2.1-or-later"
40
40
  repository = "https://github.com/r-efi/r-efi"
41
41
 
42
42
  [features]
43
- efiapi = []
44
- examples = ["native"]
45
43
  native = []
46
44
  rustc-dep-of-std = ["core"]
47
45
 
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "r-efi"
3
- version = "5.3.0"
3
+ version = "6.0.0"
4
4
 
5
5
  categories = [
6
6
  "embedded",
@@ -28,10 +28,6 @@ rust-version = "1.68"
28
28
  core = { version = '1.0.0', optional = true, package = 'rustc-std-workspace-core' }
29
29
 
30
30
  [features]
31
- # No-op for backwards compatibility.
32
- efiapi = []
33
- # Maps to `native` for backwards compatibility.
34
- examples = ['native']
35
31
  # We feature-gate all native code, since it will not link correctly, unless you
36
32
  # use a UEFI target configuration. To make `cargo test` work, we exclude all
37
33
  # these from normal runs.
@@ -1,5 +1,21 @@
1
1
  # r-efi - UEFI Reference Specification Protocol Constants and Definitions
2
2
 
3
+ ## CHANGES WITH 6.0.0:
4
+
5
+ * Change all function prototypes to use `unsafe fn`. This is a major
6
+ change, but reflects what all downstream users have already assumed.
7
+
8
+ * Drop the obsolete `efiapi` and `examples` feature flags. The former
9
+ was unused, and the latter is an alias for `native`.
10
+
11
+ * The `eficall!{}` macro is now fully inline in all of r-efi. It is
12
+ still provided for external users, but will no longer be used by
13
+ r-efi. All users are recommended to use `extern "efiapi"` directly.
14
+
15
+ Contributions from: Alan Egerton, David Rheinsberg
16
+
17
+ - Dußlingen, 2026-02-03
18
+
3
19
  ## CHANGES WITH 5.3.0:
4
20
 
5
21
  * Remove the optional dependency on `compiler-builtins`, which was
@@ -353,7 +353,7 @@ pub type VirtualAddress = u64;
353
353
  /// invocation, if invoked as an UEFI driver.
354
354
  /// In most cases it is perfectly fine to cast the pointer to a real rust reference. However, this
355
355
  /// should be an explicit decision by the caller.
356
- pub type ImageEntryPoint = eficall! {fn(Handle, *mut crate::system::SystemTable) -> Status};
356
+ pub type ImageEntryPoint = unsafe extern "efiapi" fn(Handle, *mut crate::system::SystemTable) -> Status;
357
357
 
358
358
  /// Globally Unique Identifiers
359
359
  ///
@@ -71,22 +71,37 @@
71
71
  //! pointers, we use `Option<fn ...>`.
72
72
  //!
73
73
  //! * `prefer *mut over *const`: Whenever we transpose pointers from the
74
- //! specification into Rust, we prefer `*mut` in almost all cases. `*const`
75
- //! should only be used if the underlying value is known not to be accessible
76
- //! via any other mutable pointer type. Since this is rarely the case in
77
- //! UEFI, we avoid it.
78
- //!
79
- //! The reasoning is that Rust allows coercing immutable types into `*const`
80
- //! pointers, without any explicit casting required. However, immutable Rust
81
- //! references require that no other mutable reference exists simultaneously.
82
- //! This is not a guarantee of `const`-pointers in C / UEFI, hence this
83
- //! coercion is usually ill-advised or even wrong.
84
- //!
85
- //! Lastly, note that `*mut` and `*const` and be `as`-casted in both
74
+ //! specification into Rust, we default to `*mut`. So far, there is no
75
+ //! reason to use `*const`. We prefer `*mut T`, because:
76
+ //!
77
+ //! * it is invariant over `T`, unlike `*const T`, which is covariant over
78
+ //! `T`. This variance is useful when treating the raw pointer like a
79
+ //! shared reference (which is also covariant over `T`). However, if the
80
+ //! raw pointer can be aliases by mutable pointers somewhere in the UEFI
81
+ //! stack, the variance might no longer apply. Using `*mut T` avoids this
82
+ //! default covariance, and requires callers to introduce manually if
83
+ //! desired.
84
+ //! * it cannot be automatically coerced from shared references. This
85
+ //! coercion is not necessarily correct, given that `const T *` pointers
86
+ //! in C do not share the immutability guarantee of Rust shared
87
+ //! references. By using `*mut T` an explicit pointer cast is required,
88
+ //! which we definitely want.
89
+ //! * it correctly conveys mutability to Miri Stacked Borrows. While Tree
90
+ //! Borrows do not distinguish raw pointers, Stacked Borrows do, and they
91
+ //! require a pointer to originate from a mutable reference if mutability
92
+ //! is desired.
93
+ //!
94
+ //! Lastly, note that `*mut` and `*const` can be `as`-casted in both
86
95
  //! directions without violating any Rust guarantees. Any UB concerns always
87
96
  //! stem from the safety guarantees of the surrounding code, not of the
88
97
  //! raw-pointer handling.
89
98
  //!
99
+ //! * `default to unsafe fn`: Always use `unsafe fn` for function prototypes.
100
+ //! UEFI makes no guarantees about global state, as such any implementation
101
+ //! of any UEFI prototype might introduce unsafety. Use `unsafe fn`
102
+ //! unconditionally, so the prototypes can be used for externally provided
103
+ //! code.
104
+ //!
90
105
  //! # Specification Details
91
106
  //!
92
107
  //! This section lists errata of, and general comments on, the UEFI
@@ -50,15 +50,15 @@ pub struct State {
50
50
  pub active_buttons: u32,
51
51
  }
52
52
 
53
- pub type Reset = eficall! {fn(
53
+ pub type Reset = unsafe extern "efiapi" fn(
54
54
  this: *mut Protocol,
55
55
  extended_verification: bool,
56
- ) -> crate::base::Status};
56
+ ) -> crate::base::Status;
57
57
 
58
- pub type GetState = eficall! {fn(
58
+ pub type GetState = unsafe extern "efiapi" fn(
59
59
  this: *mut Protocol,
60
60
  state: *mut State,
61
- ) -> crate::base::Status};
61
+ ) -> crate::base::Status;
62
62
 
63
63
  #[repr(C)]
64
64
  pub struct Protocol {
@@ -34,30 +34,30 @@ pub struct Media {
34
34
  pub optimal_transfer_length_granularity: u32,
35
35
  }
36
36
 
37
- pub type ProtocolReset = eficall! {fn(
37
+ pub type ProtocolReset = unsafe extern "efiapi" fn(
38
38
  *mut Protocol,
39
39
  crate::base::Boolean,
40
- ) -> crate::base::Status};
40
+ ) -> crate::base::Status;
41
41
 
42
- pub type ProtocolReadBlocks = eficall! {fn(
42
+ pub type ProtocolReadBlocks = unsafe extern "efiapi" fn(
43
43
  *mut Protocol,
44
44
  u32,
45
45
  crate::base::Lba,
46
46
  usize,
47
47
  *mut core::ffi::c_void,
48
- ) -> crate::base::Status};
48
+ ) -> crate::base::Status;
49
49
 
50
- pub type ProtocolWriteBlocks = eficall! {fn(
50
+ pub type ProtocolWriteBlocks = unsafe extern "efiapi" fn(
51
51
  *mut Protocol,
52
52
  u32,
53
53
  crate::base::Lba,
54
54
  usize,
55
55
  *mut core::ffi::c_void,
56
- ) -> crate::base::Status};
56
+ ) -> crate::base::Status;
57
57
 
58
- pub type ProtocolFlushBlocks = eficall! {fn(
58
+ pub type ProtocolFlushBlocks = unsafe extern "efiapi" fn(
59
59
  *mut Protocol,
60
- ) -> crate::base::Status};
60
+ ) -> crate::base::Status;
61
61
 
62
62
  #[repr(C)]
63
63
  pub struct Protocol {
@@ -21,10 +21,10 @@ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
21
21
  &[0x4d, 0x7d, 0x13, 0xfb, 0x32, 0x65],
22
22
  );
23
23
 
24
- pub type ProtocolGetDriver = eficall! {fn(
24
+ pub type ProtocolGetDriver = unsafe extern "efiapi" fn(
25
25
  *mut Protocol,
26
26
  *mut crate::base::Handle,
27
- ) -> crate::base::Status};
27
+ ) -> crate::base::Status;
28
28
 
29
29
  #[repr(C)]
30
30
  pub struct Protocol {
@@ -796,34 +796,34 @@ pub const EXCEPT_RISCV_MACHINE_TIMER_INT: ExceptionType = 7;
796
796
  pub const EXCEPT_RISCV_SUPERVISOR_EXTERNAL_INT: ExceptionType = 9;
797
797
  pub const EXCEPT_RISCV_MACHINE_EXTERNAL_INT: ExceptionType = 11;
798
798
 
799
- pub type GetMaximumProcessorIndex = eficall! {fn(
799
+ pub type GetMaximumProcessorIndex = unsafe extern "efiapi" fn(
800
800
  *mut Protocol,
801
801
  *mut usize,
802
- ) -> crate::base::Status};
802
+ ) -> crate::base::Status;
803
803
 
804
- pub type PeriodicCallback = eficall! {fn(SystemContext)};
804
+ pub type PeriodicCallback = unsafe extern "efiapi" fn(SystemContext);
805
805
 
806
- pub type RegisterPeriodicCallback = eficall! {fn(
806
+ pub type RegisterPeriodicCallback = unsafe extern "efiapi" fn(
807
807
  *mut Protocol,
808
808
  usize,
809
809
  Option<PeriodicCallback>,
810
- ) -> crate::base::Status};
810
+ ) -> crate::base::Status;
811
811
 
812
- pub type ExceptionCallback = eficall! {fn(ExceptionType, SystemContext)};
812
+ pub type ExceptionCallback = unsafe extern "efiapi" fn(ExceptionType, SystemContext);
813
813
 
814
- pub type RegisterExceptionCallback = eficall! {fn(
814
+ pub type RegisterExceptionCallback = unsafe extern "efiapi" fn(
815
815
  *mut Protocol,
816
816
  usize,
817
817
  Option<ExceptionCallback>,
818
818
  ExceptionType,
819
- ) -> crate::base::Status};
819
+ ) -> crate::base::Status;
820
820
 
821
- pub type InvalidateInstructionCache = eficall! {fn(
821
+ pub type InvalidateInstructionCache = unsafe extern "efiapi" fn(
822
822
  *mut Protocol,
823
823
  usize,
824
824
  *mut core::ffi::c_void,
825
825
  u64,
826
- ) -> crate::base::Status};
826
+ ) -> crate::base::Status;
827
827
 
828
828
  #[repr(C)]
829
829
  pub struct Protocol {
@@ -11,27 +11,27 @@ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
11
11
  &[0x26, 0x47, 0xba, 0x96, 0x60, 0xd0],
12
12
  );
13
13
 
14
- pub type Reset = eficall! {fn(
14
+ pub type Reset = unsafe extern "efiapi" fn(
15
15
  *mut Protocol,
16
- ) -> *mut crate::base::Status};
16
+ ) -> *mut crate::base::Status;
17
17
 
18
- pub type Write = eficall! {fn(
18
+ pub type Write = unsafe extern "efiapi" fn(
19
19
  *mut Protocol,
20
20
  u32,
21
21
  *mut usize,
22
22
  *mut core::ffi::c_void
23
- ) -> *mut crate::base::Status};
23
+ ) -> *mut crate::base::Status;
24
24
 
25
- pub type Read = eficall! {fn(
25
+ pub type Read = unsafe extern "efiapi" fn(
26
26
  *mut Protocol,
27
27
  u32,
28
28
  *mut usize,
29
29
  *mut core::ffi::c_void
30
- ) -> *mut crate::base::Status};
30
+ ) -> *mut crate::base::Status;
31
31
 
32
- pub type Poll = eficall! {fn(
32
+ pub type Poll = unsafe extern "efiapi" fn(
33
33
  *mut Protocol,
34
- ) -> *mut crate::base::Status};
34
+ ) -> *mut crate::base::Status;
35
35
 
36
36
  #[repr(C)]
37
37
  pub struct Protocol {
@@ -12,15 +12,15 @@ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
12
12
  &[0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d],
13
13
  );
14
14
 
15
- pub type ProtocolGetInfo = eficall! {fn(
15
+ pub type ProtocolGetInfo = unsafe extern "efiapi" fn(
16
16
  *mut Protocol,
17
17
  *mut core::ffi::c_void,
18
18
  u32,
19
19
  *mut u32,
20
20
  *mut u32,
21
- ) -> crate::base::Status};
21
+ ) -> crate::base::Status;
22
22
 
23
- pub type ProtocolDecompress = eficall! {fn(
23
+ pub type ProtocolDecompress = unsafe extern "efiapi" fn(
24
24
  *mut Protocol,
25
25
  *mut core::ffi::c_void,
26
26
  u32,
@@ -28,7 +28,7 @@ pub type ProtocolDecompress = eficall! {fn(
28
28
  u32,
29
29
  *mut core::ffi::c_void,
30
30
  u32,
31
- ) -> crate::base::Status};
31
+ ) -> crate::base::Status;
32
32
 
33
33
  #[repr(C)]
34
34
  pub struct Protocol {
@@ -11,13 +11,13 @@ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
11
11
  &[0x35, 0xdf, 0x33, 0x43, 0xf5, 0x1e],
12
12
  );
13
13
 
14
- pub type DevicePathFromTextNode = eficall! {fn(
14
+ pub type DevicePathFromTextNode = unsafe extern "efiapi" fn(
15
15
  *const crate::base::Char16,
16
- ) -> *mut crate::protocols::device_path::Protocol};
16
+ ) -> *mut crate::protocols::device_path::Protocol;
17
17
 
18
- pub type DevicePathFromTextPath = eficall! {fn(
18
+ pub type DevicePathFromTextPath = unsafe extern "efiapi" fn(
19
19
  *const crate::base::Char16,
20
- ) -> *mut crate::protocols::device_path::Protocol};
20
+ ) -> *mut crate::protocols::device_path::Protocol;
21
21
 
22
22
  #[repr(C)]
23
23
  pub struct Protocol {
@@ -11,17 +11,17 @@ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
11
11
  &[0x55, 0x1a, 0x4e, 0x4a, 0x7f, 0x1c],
12
12
  );
13
13
 
14
- pub type DevicePathToTextNode = eficall! {fn(
14
+ pub type DevicePathToTextNode = unsafe extern "efiapi" fn(
15
15
  *mut crate::protocols::device_path::Protocol,
16
16
  crate::base::Boolean,
17
17
  crate::base::Boolean,
18
- ) -> *mut crate::base::Char16};
18
+ ) -> *mut crate::base::Char16;
19
19
 
20
- pub type DevicePathToTextPath = eficall! {fn(
20
+ pub type DevicePathToTextPath = unsafe extern "efiapi" fn(
21
21
  *mut crate::protocols::device_path::Protocol,
22
22
  crate::base::Boolean,
23
23
  crate::base::Boolean,
24
- ) -> *mut crate::base::Char16};
24
+ ) -> *mut crate::base::Char16;
25
25
 
26
26
  #[repr(C)]
27
27
  pub struct Protocol {
@@ -12,43 +12,43 @@ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
12
12
  &[0xed, 0xb8, 0x2f, 0xb7, 0x72, 0xa4],
13
13
  );
14
14
 
15
- pub type ProtocolGetDevicePathSize = eficall! {fn(
15
+ pub type ProtocolGetDevicePathSize = unsafe extern "efiapi" fn(
16
16
  *const crate::protocols::device_path::Protocol,
17
- ) -> usize};
17
+ ) -> usize;
18
18
 
19
- pub type ProtocolDuplicateDevicePath = eficall! {fn(
19
+ pub type ProtocolDuplicateDevicePath = unsafe extern "efiapi" fn(
20
20
  *const crate::protocols::device_path::Protocol,
21
- ) -> *mut crate::protocols::device_path::Protocol};
21
+ ) -> *mut crate::protocols::device_path::Protocol;
22
22
 
23
- pub type ProtocolAppendDevicePath = eficall! {fn(
23
+ pub type ProtocolAppendDevicePath = unsafe extern "efiapi" fn(
24
24
  *const crate::protocols::device_path::Protocol,
25
25
  *const crate::protocols::device_path::Protocol,
26
- ) -> *mut crate::protocols::device_path::Protocol};
26
+ ) -> *mut crate::protocols::device_path::Protocol;
27
27
 
28
- pub type ProtocolAppendDeviceNode = eficall! {fn(
28
+ pub type ProtocolAppendDeviceNode = unsafe extern "efiapi" fn(
29
29
  *const crate::protocols::device_path::Protocol,
30
30
  *const crate::protocols::device_path::Protocol,
31
- ) -> *mut crate::protocols::device_path::Protocol};
31
+ ) -> *mut crate::protocols::device_path::Protocol;
32
32
 
33
- pub type ProtocolAppendDevicePathInstance = eficall! {fn(
33
+ pub type ProtocolAppendDevicePathInstance = unsafe extern "efiapi" fn(
34
34
  *const crate::protocols::device_path::Protocol,
35
35
  *const crate::protocols::device_path::Protocol,
36
- ) -> *mut crate::protocols::device_path::Protocol};
36
+ ) -> *mut crate::protocols::device_path::Protocol;
37
37
 
38
- pub type ProtocolGetNextDevicePathInstance = eficall! {fn(
38
+ pub type ProtocolGetNextDevicePathInstance = unsafe extern "efiapi" fn(
39
39
  *mut *mut crate::protocols::device_path::Protocol,
40
40
  *mut usize,
41
- ) -> *mut crate::protocols::device_path::Protocol};
41
+ ) -> *mut crate::protocols::device_path::Protocol;
42
42
 
43
- pub type ProtocolIsDevicePathMultiInstance = eficall! {fn(
43
+ pub type ProtocolIsDevicePathMultiInstance = unsafe extern "efiapi" fn(
44
44
  *const crate::protocols::device_path::Protocol,
45
- ) -> crate::base::Boolean};
45
+ ) -> crate::base::Boolean;
46
46
 
47
- pub type ProtocolCreateDeviceNode = eficall! {fn(
47
+ pub type ProtocolCreateDeviceNode = unsafe extern "efiapi" fn(
48
48
  u8,
49
49
  u8,
50
50
  u16,
51
- ) -> *mut crate::protocols::device_path::Protocol};
51
+ ) -> *mut crate::protocols::device_path::Protocol;
52
52
 
53
53
  #[repr(C)]
54
54
  pub struct Protocol {
@@ -16,21 +16,21 @@ pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields(
16
16
 
17
17
  pub const REVISION: u64 = 0x0000000000010000u64;
18
18
 
19
- pub type ProtocolReadDisk = eficall! {fn(
19
+ pub type ProtocolReadDisk = unsafe extern "efiapi" fn(
20
20
  *mut Protocol,
21
21
  u32,
22
22
  u64,
23
23
  usize,
24
24
  *mut core::ffi::c_void,
25
- ) -> crate::base::Status};
25
+ ) -> crate::base::Status;
26
26
 
27
- pub type ProtocolWriteDisk = eficall! {fn(
27
+ pub type ProtocolWriteDisk = unsafe extern "efiapi" fn(
28
28
  *mut Protocol,
29
29
  u32,
30
30
  u64,
31
31
  usize,
32
32
  *mut core::ffi::c_void,
33
- ) -> crate::base::Status};
33
+ ) -> crate::base::Status;
34
34
 
35
35
  #[repr(C)]
36
36
  pub struct Protocol {
@@ -21,32 +21,32 @@ pub struct Token {
21
21
  transaction_status: crate::base::Status,
22
22
  }
23
23
 
24
- pub type ProtocolCancel = eficall! {fn(
24
+ pub type ProtocolCancel = unsafe extern "efiapi" fn(
25
25
  *mut Protocol,
26
- ) -> crate::base::Status};
26
+ ) -> crate::base::Status;
27
27
 
28
- pub type ProtocolReadDiskEx = eficall! {fn(
28
+ pub type ProtocolReadDiskEx = unsafe extern "efiapi" fn(
29
29
  *mut Protocol,
30
30
  u32,
31
31
  u64,
32
32
  *mut Token,
33
33
  usize,
34
34
  *mut core::ffi::c_void,
35
- ) -> crate::base::Status};
35
+ ) -> crate::base::Status;
36
36
 
37
- pub type ProtocolWriteDiskEx = eficall! {fn(
37
+ pub type ProtocolWriteDiskEx = unsafe extern "efiapi" fn(
38
38
  *mut Protocol,
39
39
  u32,
40
40
  u64,
41
41
  *mut Token,
42
42
  usize,
43
43
  *mut core::ffi::c_void,
44
- ) -> crate::base::Status};
44
+ ) -> crate::base::Status;
45
45
 
46
- pub type ProtocolFlushDiskEx = eficall! {fn(
46
+ pub type ProtocolFlushDiskEx = unsafe extern "efiapi" fn(
47
47
  *mut Protocol,
48
48
  *mut Token,
49
- ) -> crate::base::Status};
49
+ ) -> crate::base::Status;
50
50
 
51
51
  #[repr(C)]
52
52
  pub struct Protocol {