Skip to content

Commit faa52ba

Browse files
committed
doc: add "Comparison to other Projects in the Ecosystem" to lib.rs
This is especially interesting as the `std` implementation of Rust is upcoming.
1 parent e508cd9 commit faa52ba

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

uefi/src/lib.rs

+38
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,39 @@
115115
//! Contributions in the form of a PR are also highly welcome. Check our
116116
//! [contributing guide][contributing] for details.
117117
//!
118+
//! # Comparison to other Projects in the Ecosystem
119+
//!
120+
//! ## Rust `std` implementation
121+
//!
122+
//! There is an ongoing effort for a [`std` implementation][rustc-uefi-std] of
123+
//! the Rust standard library, which allows you to write UEFI programs that look
124+
//! very similar to normal Rust programs running on top of an OS.
125+
//!
126+
//! It is still under development. You can track the progress in the
127+
//! corresponding [tracking issue][uefi-std-tr-issue].
128+
//!
129+
//! Using the `std` implementation simplifies the overall process of producing
130+
//! the binary. For example, our [`#[entry]`][entry-macro] macro won't be
131+
//! required any longer. As the `std` implementation evolves over time, you'll
132+
//! need fewer and fewer abstractions of this crate. For everything not covered
133+
//! by the `std` implementation, you can obtain relevant structures to work with
134+
//! our crate via:
135+
//! - `std::os::uefi::env::boot_services()`
136+
//! - `std::os::uefi::env::get_system_handle()`
137+
//! - `std::os::uefi::env::get_system_table()`
138+
//!
139+
//! ## `r-efi`
140+
//!
141+
//! [`r-efi`] provides Raw UEFI bindings without high-level convenience similar
142+
//! to our `uefi-raw` crate, which is part of this project, but more
143+
//! feature-complete. It targets a lower-level than our `uefi` crate does.
144+
//!
145+
//! # MSRV
146+
//! <!-- Keep in Sync with README! -->
147+
//!
148+
//! The minimum supported Rust version is currently 1.70.
149+
//! Our policy is to support at least the past two stable releases.
150+
//!
118151
//! # License
119152
//! <!-- Keep in Sync with README! -->
120153
//!
@@ -129,18 +162,23 @@
129162
//! Both "EFI" and "UEFI" can be used interchangeably, such as "UEFI image" or
130163
//! "EFI image". We prefer "UEFI" in our crate and its documentation.
131164
//!
165+
//!
132166
//! [LICENSE]: https://github.com/rust-osdev/uefi-rs/blob/main/uefi/LICENSE
133167
//! [Rust UEFI Book]: https://rust-osdev.github.io/uefi-rs/HEAD/
134168
//! [UEFI]: https://uefi.org/
135169
//! [Zulip]: https://rust-osdev.zulipchat.com
136170
//! [`BootServices`]: table::boot::BootServices
137171
//! [`GlobalAlloc`]: alloc::alloc::GlobalAlloc
138172
//! [`SystemTable`]: table::SystemTable
173+
//! [`r-efi`]: https://crates.io/crates/r-efi
174+
//! [`entry-macro`]: uefi_macros::entry
139175
//! [`unsafe_protocol`]: proto::unsafe_protocol
140176
//! [contributing]: https://github.com/rust-osdev/uefi-rs/blob/main/CONTRIBUTING.md
141177
//! [issue tracker]: https://github.com/rust-osdev/uefi-rs/issues
142178
//! [spec]: https://uefi.org/specifications
143179
//! [unstable features]: https://doc.rust-lang.org/unstable-book/
180+
//! [rustc-uefi-std]: https://doc.rust-lang.org/nightly/rustc/platform-support/unknown-uefi.html
181+
//! [uefi-std-tr-issue]: https://github.com/rust-lang/rust/issues/100499
144182
145183
#![cfg_attr(all(feature = "unstable", feature = "alloc"), feature(allocator_api))]
146184
#![cfg_attr(docsrs, feature(doc_auto_cfg))]

0 commit comments

Comments
 (0)