Skip to content

Rollup of 9 pull requests - #99023

Closed
matthiaskrgr wants to merge 21 commits into
rust-lang:masterfrom
matthiaskrgr:rollup-r8chfnp
Closed

Rollup of 9 pull requests#99023
matthiaskrgr wants to merge 21 commits into
rust-lang:masterfrom
matthiaskrgr:rollup-r8chfnp

Conversation

@matthiaskrgr

Copy link
Copy Markdown
Member

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

AronParkerand others added 21 commits June 9, 2022 15:32
I've seen people using `optimize = false` and `full-bootstrap = true` in the past, without knowing
that they're not recommended. Remove `optimize` and a few other options that are always a bad idea,
and document that full-bootstrap is only for testing reproducible builds.
also use nice new format string syntax in interpret/error.rs
Implement ExitCodeExt for Windows
Fixesrust-lang#97914
### Motivation:
On Windows it is common for applications to return `HRESULT` (`i32`) or `DWORD` (`u32`) values. These stem from COM based components ([HRESULTS](https://docs.microsoft.com/en-us/windows/win32/api/objbase/nf-objbase-coinitialize)), Win32 errors ([GetLastError](https://docs.microsoft.com/en-us/windows/win32/api/errhandlingapi/nf-errhandlingapi-getlasterror)), GUI applications ([WM_QUIT](https://docs.microsoft.com/en-us/windows/win32/winmsg/wm-quit)) and more. The newly stabilized `ExitCode` provides an excellent fit for propagating these values, because `std::process::exit` does not run deconstructors which can result in errors. However, `ExitCode` currently only implements `From<u8> for ExitCode`, which disallows the full range of `i32`/`u32` values. This pull requests attempts to address that shortcoming by providing windows specific extensions that accept a `u32` value (which covers all possible `HRESULTS` and Win32 errors) analog to [ExitStatusExt::from_raw](https://doc.rust-lang.org/std/os/windows/process/trait.ExitStatusExt.html#tymethod.from_raw).
This was also intended by the original Stabilization rust-lang#93840 (comment) as pointed out by `@eggyal` in rust-lang#97914 (comment):
> Issues around platform specific representations: We resolved this issue by changing the return type of report from i32 to the opaque type ExitCode. __That way we can change the underlying representation without affecting the API, letting us offer full support for platform specific exit code APIs in the future.__
[Emphasis added]
### API
```rust
/// Windows-specific extensions to [`process::ExitCode`].
///
/// This trait is sealed: it cannot be implemented outside the standard library.
/// This is so that future additional methods are not breaking changes.
#[stable(feature = "windows_process_exit_code_from", since = "1.63.0")]
pub trait ExitCodeExt: Sealed {
/// Creates a new `ExitCode` from the raw underlying `u32` return value of
/// a process.
#[stable(feature = "windows_process_exit_code_from", since = "1.63.0")]
fn from_raw(raw: u32) -> Self;
}
#[stable(feature = "windows_process_exit_code_from", since = "1.63.0")]
impl ExitCodeExt for process::ExitCode {
fn from_raw(raw: u32) -> Self {
process::ExitCode::from_inner(From::from(raw))
}
}
```
### Misc
I apologize in advance if I misplaced any attributes regarding stabilzation, as far as I learned traits are insta-stable so I chose to make them stable. If this is an error, please let me know and I'll correct it. I also added some additional machinery to make it work, analog to [ExitStatus](https://doc.rust-lang.org/std/process/struct.ExitStatus.html#).
EDIT: Proposal: rust-lang/libs-team#48
Remove unsupported options in configure.py
I've seen people using `optimize = false` and `full-bootstrap = true` in the past, without knowing
that they're not recommended. Remove `optimize` and a few other options that are always a bad idea,
and document that full-bootstrap is only for testing reproducible builds.
interpret: use AllocRange in UninitByteAccess
also use nice new format string syntax in `interpret/error.rs`, and use the `#` flag to add `0x` prefixes where applicable.
r? `@oli-obk`
…chaelwoerister
suggest adding a derive for #[default] applied to variants
cc `@TaKO8Ki` as followup to rust-lang#98873.
… r=notriddle
Replace boolean argument for print_where_clause with an enum to make code more clear
As you suggested `@notriddle.` Just not sure if the naming seems good to you?
r? `@notriddle`
@rustbotrustbot added T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Jul 7, 2022
@matthiaskrgr

Copy link
Copy Markdown
MemberAuthor

@bors r+ rollup=never p=10

@bors

bors commented Jul 7, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 28da75b has been approved by matthiaskrgr

It is now in the queue for this repository.

@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jul 7, 2022
@bors

bors commented Jul 7, 2022

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 28da75b with merge fb07f58821d437e96b10c776d887d10b09463cf3...

@bors

bors commented Jul 7, 2022

Copy link
Copy Markdown
Collaborator

💔 Test failed - checks-actions

@borsbors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jul 7, 2022
@matthiaskrgr

Copy link
Copy Markdown
MemberAuthor

hm configure: error: Option '--enable-optimize' is not recognized

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job x86_64-gnu-debug failed! Check out the build log: (web)(plain)

Click to see the possible cause of the failure (guessed by this bot)

@matthiaskrgr
matthiaskrgr deleted the rollup-r8chfnp branch July 30, 2022 10:33
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

rollupA PR which is a rollupS-waiting-on-reviewStatus: Awaiting review from the assignee but also interested parties.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-libsRelevant to the library team, which will review and decide on the PR/issue.T-rustdocRelevant to the rustdoc team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

12 participants

@matthiaskrgr@bors@rust-log-analyzer@rustbot@AronParker@jyn514@RalfJung@pierwill@TaKO8Ki@fee1-dead@cjgillot@GuillaumeGomez