Find a file
Ayush Singh a404015775
std: sys: process: uefi: Use NULL stdin by default
According to the docs in `Command::output`:

> By default, stdout and stderr are captured (and used to provide the
resulting output). Stdin is not inherited from the parent and any attempt
by the child process to read from the stdin stream will result in the
stream immediately closing.

This was being violated by UEFI which was inheriting stdin by default.

While the docs don't explicitly state that the default should be NULL,
the behaviour seems like reading from NULL.

UEFI however, has a bit of a problem. The `EFI_SIMPLE_TEXT_INPUT_PROTOCOL`
only provides support for reading 1 key press. This means that you
either get an error, or it is assumed that the keypress was read
successfully. So there is no way to have a successful read of length 0.
Currently, I am returning UNSUPPORTED error when trying to read from
NULL stdin. On linux however, you will get a read of length 0 for Null
stdin.

One possible way to get around this is to translate one of the UEFI
errors to a read 0 (Maybe unsupported?). It is also possible to have a
non-standard error code, but well, not sure if we go that route.

Alternatively, if meaning of Stdio::Null is platform dependent, it
should be fine to keep the current behaviour of returning an error.

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-04-13 23:22:58 +05:30
.github Add CI metadata to bootstrap metrics 2025-03-27 17:03:08 +01:00
compiler Auto merge of #138947 - madsmtm:refactor-apple-versions, r=Noratrieb 2025-04-06 10:16:28 +00:00
library std: sys: process: uefi: Use NULL stdin by default 2025-04-13 23:22:58 +05:30
LICENSES Synchronize Unicode license text from unicode.org 2024-11-20 00:54:12 -08:00
src Auto merge of #139439 - weihanglo:update-cargo, r=weihanglo 2025-04-06 13:23:48 +00:00
tests Rollup merge of #139438 - Zalathar:fix-test-122600, r=scottmcm 2025-04-06 16:21:03 +10:00
.clang-format Add .clang-format 2024-06-26 05:56:00 +08:00
.editorconfig Don't apply editorconfig to llvm 2025-02-09 16:21:14 -05:00
.git-blame-ignore-revs Git blame ignore recent formatting commit 2025-02-09 12:00:23 -08:00
.gitattributes Mark .pp files as Rust 2025-03-29 12:39:06 +01:00
.gitignore change config.toml to bootstrap.toml for bootstrap module 2025-03-17 12:56:41 +05:30
.gitmodules move autodiff from EnzymeAD/Enzyme to our rust-lang/Enzyme soft-fork 2025-04-01 17:17:39 -04:00
.ignore change config.toml to bootstrap.toml for bootstrap module 2025-03-17 12:56:41 +05:30
.mailmap Rollup merge of #139342 - meithecatte:mailmap, r=compiler-errors 2025-04-04 08:02:09 +02:00
bootstrap.example.toml Add new change-id option in bootstrap.example.toml and update the change-id description references 2025-03-28 08:40:24 +05:30
Cargo.lock let rustc_smir host stable_mir for refactoring 2025-04-05 18:23:07 +08:00
Cargo.toml Update to Cranelift 0.118 2025-03-20 15:37:34 +00:00
CODE_OF_CONDUCT.md Remove the code of conduct; instead link https://www.rust-lang.org/conduct.html 2019-10-05 22:55:19 +02:00
configure Ensure ./configure works when configure.py path contains spaces 2024-02-16 18:57:22 +00:00
CONTRIBUTING.md Fix some typos 2025-03-04 16:05:32 +08:00
COPYRIGHT dist: Re-work how we describe the licence of Rust in our distributions 2024-12-09 10:18:55 +00:00
INSTALL.md change config.toml to bootstrap.toml for bootstrap module 2025-03-17 12:56:41 +05:30
LICENSE-APACHE Remove appendix from LICENCE-APACHE 2019-12-30 14:25:53 +00:00
license-metadata.json Update license metadata 2025-02-15 16:48:37 +01:00
LICENSE-MIT dist: Re-work how we describe the licence of Rust in our distributions 2024-12-09 10:18:55 +00:00
README.md Update Rust Foundation links in Readme 2025-03-16 19:03:40 -07:00
RELEASES.md Apply suggestions from code review 2025-03-30 15:45:44 -07:00
REUSE.toml change config.toml to bootstrap.toml for bootstrap module 2025-03-17 12:56:41 +05:30
rust-bors.toml Increase timeout for new bors bot 2024-03-13 08:31:07 +01:00
rustfmt.toml Allow formatting example/gen_block_iterate.rs 2025-04-01 14:49:15 +00:00
triagebot.toml Change notifications for Exploit Mitigations PG 2025-04-05 03:08:49 +00:00
x Look for python3 first on MacOS, not py 2025-02-13 10:24:54 -05:00
x.ps1 use & instead of start-process in x.ps1 2023-12-09 09:46:16 -05:00
x.py Reformat Python code with ruff 2024-12-04 23:03:44 +01:00

This is the main source code repository for Rust. It contains the compiler, standard library, and documentation.

Why Rust?

  • Performance: Fast and memory-efficient, suitable for critical services, embedded devices, and easily integrated with other languages.

  • Reliability: Our rich type system and ownership model ensure memory and thread safety, reducing bugs at compile-time.

  • Productivity: Comprehensive documentation, a compiler committed to providing great diagnostics, and advanced tooling including package manager and build tool (Cargo), auto-formatter (rustfmt), linter (Clippy) and editor support (rust-analyzer).

Quick Start

Read "Installation" from The Book.

Installing from Source

If you really want to install from source (though this is not recommended), see INSTALL.md.

Getting Help

See https://www.rust-lang.org/community for a list of chat platforms and forums.

Contributing

See CONTRIBUTING.md.

License

Rust is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, LICENSE-MIT, and COPYRIGHT for details.

Trademark

The Rust Foundation owns and protects the Rust and Cargo trademarks and logos (the "Rust Trademarks").

If you want to use these names or brands, please read the Rust language trademark policy.

Third-party logos may be subject to third-party copyrights and trademarks. See Licenses for details.