Skip to content

Commit

Permalink
Auto merge of rust-lang#130710 - GuillaumeGomez:rollup-mfuha68, r=Gui…
Browse files Browse the repository at this point in the history
…llaumeGomez

Rollup of 5 pull requests

Successful merges:

 - rust-lang#130658 (Fix docs of compare_bytes)
 - rust-lang#130670 (delay uncapping the max_read_size in File::read_to_end)
 - rust-lang#130690 (interpret: remove outdated FIXME)
 - rust-lang#130692 (make unstable Result::flatten a const fn)
 - rust-lang#130702 (Add some missing unstable book tracking issue links)

r? `@ghost`
`@rustbot` modify labels: rollup
  • Loading branch information
bors committed Sep 22, 2024
2 parents 8ed95d1 + a34e0f5 commit 6c6d210
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 7 deletions.
1 change: 0 additions & 1 deletion compiler/rustc_const_eval/src/interpret/call.rs
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,6 @@ impl<'tcx, M: Machine<'tcx>> InterpCx<'tcx, M> {
}

// Fall back to exact equality.
// FIXME: We are missing the rules for "repr(C) wrapping compatible types".
Ok(caller == callee)
}

Expand Down
2 changes: 1 addition & 1 deletion library/core/src/intrinsics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2733,7 +2733,7 @@ extern "rust-intrinsic" {

/// Lexicographically compare `[left, left + bytes)` and `[right, right + bytes)`
/// as unsigned bytes, returning negative if `left` is less, zero if all the
/// bytes match, or positive if `right` is greater.
/// bytes match, or positive if `left` is greater.
///
/// This underlies things like `<[u8]>::cmp`, and will usually lower to `memcmp`.
///
Expand Down
1 change: 1 addition & 0 deletions library/core/src/option.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2538,6 +2538,7 @@ impl<T> Option<Option<T>> {
#[stable(feature = "option_flattening", since = "1.40.0")]
#[rustc_const_unstable(feature = "const_option", issue = "67441")]
pub const fn flatten(self) -> Option<T> {
// FIXME(const-hack): could be written with `and_then`
match self {
Some(inner) => inner,
None => None,
Expand Down
9 changes: 7 additions & 2 deletions library/core/src/result.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1676,8 +1676,13 @@ impl<T, E> Result<Result<T, E>, E> {
/// ```
#[inline]
#[unstable(feature = "result_flattening", issue = "70142")]
pub fn flatten(self) -> Result<T, E> {
self.and_then(convert::identity)
#[rustc_const_unstable(feature = "result_flattening", issue = "70142")]
pub const fn flatten(self) -> Result<T, E> {
// FIXME(const-hack): could be written with `and_then`
match self {
Ok(inner) => inner,
Err(e) => Err(e),
}
}
}

Expand Down
16 changes: 13 additions & 3 deletions library/std/src/io/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -398,8 +398,7 @@ where
// - avoid passing large buffers to readers that always initialize the free capacity if they perform short reads (#23815, #23820)
// - pass large buffers to readers that do not initialize the spare capacity. this can amortize per-call overheads
// - and finally pass not-too-small and not-too-large buffers to Windows read APIs because they manage to suffer from both problems
// at the same time, i.e. small reads suffer from syscall overhead, all reads incur initialization cost
// proportional to buffer size (#110650)
// at the same time, i.e. small reads suffer from syscall overhead, all reads incur costs proportional to buffer size (#110650)
//
pub(crate) fn default_read_to_end<R: Read + ?Sized>(
r: &mut R,
Expand Down Expand Up @@ -444,6 +443,8 @@ pub(crate) fn default_read_to_end<R: Read + ?Sized>(
}
}

let mut consecutive_short_reads = 0;

loop {
if buf.len() == buf.capacity() && buf.capacity() == start_cap {
// The buffer might be an exact fit. Let's read into a probe buffer
Expand Down Expand Up @@ -489,6 +490,12 @@ pub(crate) fn default_read_to_end<R: Read + ?Sized>(
return Ok(buf.len() - start_len);
}

if bytes_read < buf_len {
consecutive_short_reads += 1;
} else {
consecutive_short_reads = 0;
}

// store how much was initialized but not filled
initialized = unfilled_but_initialized;

Expand All @@ -503,7 +510,10 @@ pub(crate) fn default_read_to_end<R: Read + ?Sized>(
// The reader is returning short reads but it doesn't call ensure_init().
// In that case we no longer need to restrict read sizes to avoid
// initialization costs.
if !was_fully_initialized {
// When reading from disk we usually don't get any short reads except at EOF.
// So we wait for at least 2 short reads before uncapping the read buffer;
// this helps with the Windows issue.
if !was_fully_initialized && consecutive_short_reads > 1 {
max_read_size = usize::MAX;
}

Expand Down
4 changes: 4 additions & 0 deletions src/doc/unstable-book/src/compiler-flags/branch-protection.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# `branch-protection`

The tracking issue for this feature is: [#113369](https://github.com/rust-lang/rust/issues/113369).

------------------------

This option lets you enable branch authentication instructions on AArch64.
This option is only accepted when targeting AArch64 architectures.
It takes some combination of the following values, separated by a `,`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
The `more_qualified_paths` feature can be used in order to enable the
use of qualified paths in patterns.

The tracking issue for this feature is: [#86935](https://github.com/rust-lang/rust/issues/86935).

------------------------

## Example

```rust
Expand Down
4 changes: 4 additions & 0 deletions src/doc/unstable-book/src/language-features/postfix-match.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
`postfix-match` adds the feature for matching upon values postfix
the expressions that generate the values.

The tracking issue for this feature is: [#121618](https://github.com/rust-lang/rust/issues/121618).

------------------------

```rust,edition2021
#![feature(postfix_match)]
Expand Down

0 comments on commit 6c6d210

Please sign in to comment.