Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

offset_from: always allow pointers to point to the same address #124921

Merged
merged 1 commit into from
Jul 15, 2024

Conversation

RalfJung
Copy link
Member

@RalfJung RalfJung commented May 9, 2024

This PR implements the last remaining part of the t-opsem consensus in rust-lang/unsafe-code-guidelines#472: always permits offset_from when both pointers have the same address, no matter how they are computed. This is required to achieve provenance monotonicity.

Tracking issue: #117945

What is provenance monotonicity and why does it matter?

Provenance monotonicity is the property that adding arbitrary provenance to any no-provenance pointer must never make the program UB. More specifically, in the program state, data in memory is stored as a sequence of abstract bytes, where each byte can optionally carry provenance. When a pointer is stored in memory, all of the bytes it is stored in carry that provenance. Provenance monotonicity means: if we take some byte that does not have provenance, and give it some arbitrary provenance, then that cannot change program behavior or introduce UB into a UB-free program.

We care about provenance monotonicity because we want to allow the optimizer to remove provenance-stripping operations. Removing a provenance-stripping operation effectively means the program after the optimization has provenance where the program before the optimization did not -- since the provenance removal does not happen in the optimized program. IOW, the compiler transformation added provenance to previously provenance-free bytes. This is exactly what provenance monotonicity lets us do.

We care about removing provenance-stripping operations because *ptr = *ptr is, in general, (likely) a provenance-stripping operation. Specifically, consider ptr: *mut usize (or any integer type), and imagine the data at *ptr is actually a pointer (i.e., we are type-punning between pointers and integers). Then *ptr on the right-hand side evaluates to the data in memory without any provenance (because integers do not have provenance). Storing that back to *ptr means that the abstract bytes ptr points to are the same as before, except their provenance is now gone. This makes *ptr = *ptr a provenance-stripping operation (Here we assume *ptr is fully initialized. If it is not initialized, evaluating *ptr to a value is UB, so removing *ptr = *ptr is trivially correct.)

What does offset_from have to do with provenance monotonicity?

With ptr = without_provenance(N), ptr.offset_from(ptr) is always well-defined and returns 0. By provenance monotonicity, I can now add provenance to the two arguments of offset_from and it must still be well-defined. Crucially, I can add different provenance to the two arguments, and it must still be well-defined. In other words, this must always be allowed: ptr1.with_addr(N).offset_from(ptr2.with_addr(N)) (and it returns 0). But the current spec for offset_from says that the two pointers must either both be derived from an integer or both be derived from the same allocation, which is not in general true for arbitrary ptr1, ptr2.

To obtain provenance monotonicity, this PR hence changes the spec for offset_from to say that if both pointers have the same address, the function is always well-defined.

What further consequences does this have?

It means the compiler can no longer transform end2 = begin.offset(end.offset_from(begin)) into end2 = end. However, it can still be transformed into end2 = begin.with_addr(end.addr()), which later parts of the backend (when provenance has been erased) can trivially turn into end2 = end.

The only alternative I am aware of is a fundamentally different handling of zero-sized accesses, where a "no provenance" pointer is not allowed to do zero-sized accesses and instead we have a special provenance that indicates "may be used for zero-sized accesses (and nothing else)". offset and offset_from would then always be UB on a "no provenance" pointer, and permit zero-sized offsets on a "zero-sized provenance" pointer. This achieves provenance monotonicity. That is, however, a breaking change as it contradicts what we landed in #117329. It's also a whole bunch of extra UB, which doesn't seem worth it just to achieve that transformation.

What about the backend?

LLVM currently doesn't have an intrinsic for pointer difference, so we anyway cast to integer and subtract there. That's never UB so it is compatible with any relaxation we may want to apply.

If LLVM gets a ptrsub in the future, then plausibly it will be consistent with ptradd and consider two equal pointers to be inbounds.

@rustbot
Copy link
Collaborator

rustbot commented May 9, 2024

r? @oli-obk

rustbot has assigned @oli-obk.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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. labels May 9, 2024
@RalfJung RalfJung added S-blocked Status: Blocked on something else such as an RFC or other implementation work. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 9, 2024
@RalfJung RalfJung changed the title offset_from intrinsic: always allow pointers to point to the same addreess offset_from intrinsic: always allow pointers to point to the same address May 9, 2024
@RalfJung RalfJung force-pushed the offset-from-same-addr branch 2 times, most recently from 5862cbb to 6d7b305 Compare May 9, 2024 16:13
@RalfJung RalfJung changed the title offset_from intrinsic: always allow pointers to point to the same address offset_from: always allow pointers to point to the same address May 9, 2024
@bors
Copy link
Contributor

bors commented May 9, 2024

☔ The latest upstream changes (presumably #124934) made this pull request unmergeable. Please resolve the merge conflicts.

@RalfJung RalfJung force-pushed the offset-from-same-addr branch from 6d7b305 to 8f8766a Compare May 10, 2024 05:44
@bors
Copy link
Contributor

bors commented May 13, 2024

☔ The latest upstream changes (presumably #124914) made this pull request unmergeable. Please resolve the merge conflicts.

@RalfJung RalfJung force-pushed the offset-from-same-addr branch from 8f8766a to 36716b1 Compare May 22, 2024 17:43
@RalfJung
Copy link
Member Author

#117329 landed, so we can consider this now.

@nikic the only point that's giving me pause here are compatibility concerns with a potential future ptrsub operation in LLVM. If such an operation gets added, do you think there will be a variant of it (with the right flags set) that matches the semantics given in this PR? I think all the provenance monotonicity arguments also apply to LLVM, but it's hard to say as LLVM hasn't decided yet how integer-typed loads of data with provenance behave.

@RalfJung RalfJung added T-lang Relevant to the language team, which will review and decide on the PR/issue. T-opsem Relevant to the opsem team and removed 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. labels Jun 5, 2024
@RalfJung
Copy link
Member Author

RalfJung commented Jul 2, 2024

@nikic any thoughts?

In principle we don't need provenance monotonicity in Rust-the-surface language, we only need it in an IR that wants to do optimizations like removing redundant load-store roundtrips. However, I think it would also be desirable to be able to teach programmers that having provenance attached with some data is just giving that data "extra capabilities" (namely to be used as a pointer), and can never lose anything. Such symmetries can make complicated topics easier to understand. So I think if at all possible we should strive to achieve provenance monotonicity in our surface syntax -- which means we should land something like this PR.

@nikic
Copy link
Contributor

nikic commented Jul 3, 2024

@RalfJung I can't tell the future, but I would expect that if LLVM introduces "ptrsub inbounds" that the semantics would mirror those of "ptradd inbounds", which includes the "equal pointers are always inbounds" special case.

@RalfJung RalfJung added I-lang-nominated Nominated for discussion during a lang team meeting. and removed S-blocked Status: Blocked on something else such as an RFC or other implementation work. labels Jul 3, 2024
@RalfJung
Copy link
Member Author

RalfJung commented Jul 3, 2024

Thanks! It's a bit of a different case here since we have two pointers, and inbounds is relative to the provenance of a single pointer, so then one could ask -- what is the pointer for which the range between the two pointers has to be "inbounds"? But the most conservative option seems to be "both".

In fact I quite like this, it lets us frame all of offset_from, offset, and "dereferenceable" in terms of the same underlying predicate. Let's say a pointer p is dereferenceable for n bytes if either n == 0 or the allocation p points to is live and fully contains the range p.addr() .. (p.addr() + n). We extend this to negative n by using the range (p.addr() + n) .. p.addr() in case n < 0. Then we can define:

  • offset::<T>(p, i) requires p to be dereferenceable for i*size_of::<T>() bytes. This in particular implies that i*size_of::<T>() fits in an isize (as there is no allocation larger than that) and that adding i*size_of::<T>() does not overflow (as there is no allocation that crosses the edge of the address space).
  • for offset_from::<T>(p1, p2), let diff = p1.addr().wrapping_sub(p2.addr()) as isize; now we require p1 to be dereferenceable for -diff bytes and p2 to be dereferenceable for diff bytes. This in particular implies that the absolute distance fits in an isize (as there is no allocation larger than that).

So the offset_from requirement "p1 and p2 have to point to the same allocation" would actually not be a fundamental requirement, it would merely fall out of the fact that the only way two pointers can both be dereferenceable for the same non-empty memory range is for them to point to the same allocation.

@RalfJung RalfJung marked this pull request as ready for review July 3, 2024 11:39
@rustbot
Copy link
Collaborator

rustbot commented Jul 3, 2024

Some changes occurred to the CTFE / Miri engine

cc @rust-lang/miri

The Miri subtree was changed

cc @rust-lang/miri

@RalfJung
Copy link
Member Author

@oli-obk FCP passed, PR is ready for review. :)

@RalfJung RalfJung added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-team Status: Awaiting decision from the relevant subteam (see the T-<team> label). labels Jul 14, 2024
@oli-obk
Copy link
Contributor

oli-obk commented Jul 15, 2024

@bors r+

@bors
Copy link
Contributor

bors commented Jul 15, 2024

📌 Commit f6c377c has been approved by oli-obk

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 15, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jul 15, 2024
…oli-obk

offset_from: always allow pointers to point to the same address

This PR implements the last remaining part of the t-opsem consensus in rust-lang/unsafe-code-guidelines#472: always permits offset_from when both pointers have the same address, no matter how they are computed. This is required to achieve *provenance monotonicity*.

Tracking issue: rust-lang#117945

### What is provenance monotonicity and why does it matter?

Provenance monotonicity is the property that adding arbitrary provenance to any no-provenance pointer must never make the program UB. More specifically, in the program state, data in memory is stored as a sequence of [abstract bytes](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#abstract-byte), where each byte can optionally carry provenance. When a pointer is stored in memory, all of the bytes it is stored in carry that provenance. Provenance monotonicity means: if we take some byte that does not have provenance, and give it some arbitrary provenance, then that cannot change program behavior or introduce UB into a UB-free program.

We care about provenance monotonicity because we want to allow the optimizer to remove provenance-stripping operations. Removing a provenance-stripping operation effectively means the program after the optimization has provenance where the program before the optimization did not -- since the provenance removal does not happen in the optimized program. IOW, the compiler transformation added provenance to previously provenance-free bytes. This is exactly what provenance monotonicity lets us do.

We care about removing provenance-stripping operations because `*ptr = *ptr` is, in general, (likely) a provenance-stripping operation. Specifically, consider `ptr: *mut usize` (or any integer type), and imagine the data at `*ptr` is actually a pointer (i.e., we are type-punning between pointers and integers). Then `*ptr` on the right-hand side evaluates to the data in memory *without* any provenance (because [integers do not have provenance](https://rust-lang.github.io/rfcs/3559-rust-has-provenance.html#integers-do-not-have-provenance)). Storing that back to `*ptr` means that the abstract bytes `ptr` points to are the same as before, except their provenance is now gone. This makes  `*ptr = *ptr`  a provenance-stripping operation  (Here we assume `*ptr` is fully initialized. If it is not initialized, evaluating `*ptr` to a value is UB, so removing `*ptr = *ptr` is trivially correct.)

### What does `offset_from` have to do with provenance monotonicity?

With `ptr = without_provenance(N)`, `ptr.offset_from(ptr)` is always well-defined and returns 0. By provenance monotonicity, I can now add provenance to the two arguments of `offset_from` and it must still be well-defined. Crucially, I can add *different* provenance to the two arguments, and it must still be well-defined. In other words, this must always be allowed: `ptr1.with_addr(N).offset_from(ptr2.with_addr(N))` (and it returns 0). But the current spec for `offset_from` says that the two pointers must either both be derived from an integer or both be derived from the same allocation, which is not in general true for arbitrary `ptr1`, `ptr2`.

To obtain provenance monotonicity, this PR hence changes the spec for offset_from to say that if both pointers have the same address, the function is always well-defined.

### What further consequences does this have?

It means the compiler can no longer transform `end2 = begin.offset(end.offset_from(begin))` into `end2 = end`. However, it can still be transformed into `end2 = begin.with_addr(end.addr())`, which later parts of the backend (when provenance has been erased) can trivially turn into `end2 = end`.

The only alternative I am aware of is a fundamentally different handling of zero-sized accesses, where a "no provenance" pointer is not allowed to do zero-sized accesses and instead we have a special provenance that indicates "may be used for zero-sized accesses (and nothing else)". `offset` and `offset_from` would then always be UB on a "no provenance" pointer, and permit zero-sized offsets on a "zero-sized provenance" pointer. This achieves provenance monotonicity. That is, however, a breaking change as it contradicts what we landed in rust-lang#117329. It's also a whole bunch of extra UB, which doesn't seem worth it just to achieve that transformation.

### What about the backend?

LLVM currently doesn't have an intrinsic for pointer difference, so we anyway cast to integer and subtract there. That's never UB so it is compatible with any relaxation we may want to apply.

If LLVM gets a `ptrsub` in the future, then plausibly it will be consistent with `ptradd` and [consider two equal pointers to be inbounds](rust-lang#124921 (comment)).
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 15, 2024
…iaskrgr

Rollup of 5 pull requests

Successful merges:

 - rust-lang#124921 (offset_from: always allow pointers to point to the same address)
 - rust-lang#127407 (Make parse error suggestions verbose and fix spans)
 - rust-lang#127675 (Remove invalid help diagnostics for const pointer)
 - rust-lang#127684 (consolidate miri-unleashed tests for mutable refs into one file)
 - rust-lang#127758 (coverage: Restrict `ExpressionUsed` simplification to `Code` mappings)

r? `@ghost`
`@rustbot` modify labels: rollup
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Jul 15, 2024
…oli-obk

offset_from: always allow pointers to point to the same address

This PR implements the last remaining part of the t-opsem consensus in rust-lang/unsafe-code-guidelines#472: always permits offset_from when both pointers have the same address, no matter how they are computed. This is required to achieve *provenance monotonicity*.

Tracking issue: rust-lang#117945

### What is provenance monotonicity and why does it matter?

Provenance monotonicity is the property that adding arbitrary provenance to any no-provenance pointer must never make the program UB. More specifically, in the program state, data in memory is stored as a sequence of [abstract bytes](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#abstract-byte), where each byte can optionally carry provenance. When a pointer is stored in memory, all of the bytes it is stored in carry that provenance. Provenance monotonicity means: if we take some byte that does not have provenance, and give it some arbitrary provenance, then that cannot change program behavior or introduce UB into a UB-free program.

We care about provenance monotonicity because we want to allow the optimizer to remove provenance-stripping operations. Removing a provenance-stripping operation effectively means the program after the optimization has provenance where the program before the optimization did not -- since the provenance removal does not happen in the optimized program. IOW, the compiler transformation added provenance to previously provenance-free bytes. This is exactly what provenance monotonicity lets us do.

We care about removing provenance-stripping operations because `*ptr = *ptr` is, in general, (likely) a provenance-stripping operation. Specifically, consider `ptr: *mut usize` (or any integer type), and imagine the data at `*ptr` is actually a pointer (i.e., we are type-punning between pointers and integers). Then `*ptr` on the right-hand side evaluates to the data in memory *without* any provenance (because [integers do not have provenance](https://rust-lang.github.io/rfcs/3559-rust-has-provenance.html#integers-do-not-have-provenance)). Storing that back to `*ptr` means that the abstract bytes `ptr` points to are the same as before, except their provenance is now gone. This makes  `*ptr = *ptr`  a provenance-stripping operation  (Here we assume `*ptr` is fully initialized. If it is not initialized, evaluating `*ptr` to a value is UB, so removing `*ptr = *ptr` is trivially correct.)

### What does `offset_from` have to do with provenance monotonicity?

With `ptr = without_provenance(N)`, `ptr.offset_from(ptr)` is always well-defined and returns 0. By provenance monotonicity, I can now add provenance to the two arguments of `offset_from` and it must still be well-defined. Crucially, I can add *different* provenance to the two arguments, and it must still be well-defined. In other words, this must always be allowed: `ptr1.with_addr(N).offset_from(ptr2.with_addr(N))` (and it returns 0). But the current spec for `offset_from` says that the two pointers must either both be derived from an integer or both be derived from the same allocation, which is not in general true for arbitrary `ptr1`, `ptr2`.

To obtain provenance monotonicity, this PR hence changes the spec for offset_from to say that if both pointers have the same address, the function is always well-defined.

### What further consequences does this have?

It means the compiler can no longer transform `end2 = begin.offset(end.offset_from(begin))` into `end2 = end`. However, it can still be transformed into `end2 = begin.with_addr(end.addr())`, which later parts of the backend (when provenance has been erased) can trivially turn into `end2 = end`.

The only alternative I am aware of is a fundamentally different handling of zero-sized accesses, where a "no provenance" pointer is not allowed to do zero-sized accesses and instead we have a special provenance that indicates "may be used for zero-sized accesses (and nothing else)". `offset` and `offset_from` would then always be UB on a "no provenance" pointer, and permit zero-sized offsets on a "zero-sized provenance" pointer. This achieves provenance monotonicity. That is, however, a breaking change as it contradicts what we landed in rust-lang#117329. It's also a whole bunch of extra UB, which doesn't seem worth it just to achieve that transformation.

### What about the backend?

LLVM currently doesn't have an intrinsic for pointer difference, so we anyway cast to integer and subtract there. That's never UB so it is compatible with any relaxation we may want to apply.

If LLVM gets a `ptrsub` in the future, then plausibly it will be consistent with `ptradd` and [consider two equal pointers to be inbounds](rust-lang#124921 (comment)).
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 15, 2024
…iaskrgr

Rollup of 6 pull requests

Successful merges:

 - rust-lang#124921 (offset_from: always allow pointers to point to the same address)
 - rust-lang#127407 (Make parse error suggestions verbose and fix spans)
 - rust-lang#127684 (consolidate miri-unleashed tests for mutable refs into one file)
 - rust-lang#127729 (Stop using the `gen` identifier in the compiler)
 - rust-lang#127736 (Add myself to the review rotation)
 - rust-lang#127758 (coverage: Restrict `ExpressionUsed` simplification to `Code` mappings)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 78529d9 into rust-lang:master Jul 15, 2024
6 checks passed
@rustbot rustbot added this to the 1.81.0 milestone Jul 15, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jul 15, 2024
Rollup merge of rust-lang#124921 - RalfJung:offset-from-same-addr, r=oli-obk

offset_from: always allow pointers to point to the same address

This PR implements the last remaining part of the t-opsem consensus in rust-lang/unsafe-code-guidelines#472: always permits offset_from when both pointers have the same address, no matter how they are computed. This is required to achieve *provenance monotonicity*.

Tracking issue: rust-lang#117945

### What is provenance monotonicity and why does it matter?

Provenance monotonicity is the property that adding arbitrary provenance to any no-provenance pointer must never make the program UB. More specifically, in the program state, data in memory is stored as a sequence of [abstract bytes](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#abstract-byte), where each byte can optionally carry provenance. When a pointer is stored in memory, all of the bytes it is stored in carry that provenance. Provenance monotonicity means: if we take some byte that does not have provenance, and give it some arbitrary provenance, then that cannot change program behavior or introduce UB into a UB-free program.

We care about provenance monotonicity because we want to allow the optimizer to remove provenance-stripping operations. Removing a provenance-stripping operation effectively means the program after the optimization has provenance where the program before the optimization did not -- since the provenance removal does not happen in the optimized program. IOW, the compiler transformation added provenance to previously provenance-free bytes. This is exactly what provenance monotonicity lets us do.

We care about removing provenance-stripping operations because `*ptr = *ptr` is, in general, (likely) a provenance-stripping operation. Specifically, consider `ptr: *mut usize` (or any integer type), and imagine the data at `*ptr` is actually a pointer (i.e., we are type-punning between pointers and integers). Then `*ptr` on the right-hand side evaluates to the data in memory *without* any provenance (because [integers do not have provenance](https://rust-lang.github.io/rfcs/3559-rust-has-provenance.html#integers-do-not-have-provenance)). Storing that back to `*ptr` means that the abstract bytes `ptr` points to are the same as before, except their provenance is now gone. This makes  `*ptr = *ptr`  a provenance-stripping operation  (Here we assume `*ptr` is fully initialized. If it is not initialized, evaluating `*ptr` to a value is UB, so removing `*ptr = *ptr` is trivially correct.)

### What does `offset_from` have to do with provenance monotonicity?

With `ptr = without_provenance(N)`, `ptr.offset_from(ptr)` is always well-defined and returns 0. By provenance monotonicity, I can now add provenance to the two arguments of `offset_from` and it must still be well-defined. Crucially, I can add *different* provenance to the two arguments, and it must still be well-defined. In other words, this must always be allowed: `ptr1.with_addr(N).offset_from(ptr2.with_addr(N))` (and it returns 0). But the current spec for `offset_from` says that the two pointers must either both be derived from an integer or both be derived from the same allocation, which is not in general true for arbitrary `ptr1`, `ptr2`.

To obtain provenance monotonicity, this PR hence changes the spec for offset_from to say that if both pointers have the same address, the function is always well-defined.

### What further consequences does this have?

It means the compiler can no longer transform `end2 = begin.offset(end.offset_from(begin))` into `end2 = end`. However, it can still be transformed into `end2 = begin.with_addr(end.addr())`, which later parts of the backend (when provenance has been erased) can trivially turn into `end2 = end`.

The only alternative I am aware of is a fundamentally different handling of zero-sized accesses, where a "no provenance" pointer is not allowed to do zero-sized accesses and instead we have a special provenance that indicates "may be used for zero-sized accesses (and nothing else)". `offset` and `offset_from` would then always be UB on a "no provenance" pointer, and permit zero-sized offsets on a "zero-sized provenance" pointer. This achieves provenance monotonicity. That is, however, a breaking change as it contradicts what we landed in rust-lang#117329. It's also a whole bunch of extra UB, which doesn't seem worth it just to achieve that transformation.

### What about the backend?

LLVM currently doesn't have an intrinsic for pointer difference, so we anyway cast to integer and subtract there. That's never UB so it is compatible with any relaxation we may want to apply.

If LLVM gets a `ptrsub` in the future, then plausibly it will be consistent with `ptradd` and [consider two equal pointers to be inbounds](rust-lang#124921 (comment)).
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request Jul 16, 2024
offset_from: always allow pointers to point to the same address

This PR implements the last remaining part of the t-opsem consensus in rust-lang/unsafe-code-guidelines#472: always permits offset_from when both pointers have the same address, no matter how they are computed. This is required to achieve *provenance monotonicity*.

Tracking issue: rust-lang/rust#117945

### What is provenance monotonicity and why does it matter?

Provenance monotonicity is the property that adding arbitrary provenance to any no-provenance pointer must never make the program UB. More specifically, in the program state, data in memory is stored as a sequence of [abstract bytes](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#abstract-byte), where each byte can optionally carry provenance. When a pointer is stored in memory, all of the bytes it is stored in carry that provenance. Provenance monotonicity means: if we take some byte that does not have provenance, and give it some arbitrary provenance, then that cannot change program behavior or introduce UB into a UB-free program.

We care about provenance monotonicity because we want to allow the optimizer to remove provenance-stripping operations. Removing a provenance-stripping operation effectively means the program after the optimization has provenance where the program before the optimization did not -- since the provenance removal does not happen in the optimized program. IOW, the compiler transformation added provenance to previously provenance-free bytes. This is exactly what provenance monotonicity lets us do.

We care about removing provenance-stripping operations because `*ptr = *ptr` is, in general, (likely) a provenance-stripping operation. Specifically, consider `ptr: *mut usize` (or any integer type), and imagine the data at `*ptr` is actually a pointer (i.e., we are type-punning between pointers and integers). Then `*ptr` on the right-hand side evaluates to the data in memory *without* any provenance (because [integers do not have provenance](https://rust-lang.github.io/rfcs/3559-rust-has-provenance.html#integers-do-not-have-provenance)). Storing that back to `*ptr` means that the abstract bytes `ptr` points to are the same as before, except their provenance is now gone. This makes  `*ptr = *ptr`  a provenance-stripping operation  (Here we assume `*ptr` is fully initialized. If it is not initialized, evaluating `*ptr` to a value is UB, so removing `*ptr = *ptr` is trivially correct.)

### What does `offset_from` have to do with provenance monotonicity?

With `ptr = without_provenance(N)`, `ptr.offset_from(ptr)` is always well-defined and returns 0. By provenance monotonicity, I can now add provenance to the two arguments of `offset_from` and it must still be well-defined. Crucially, I can add *different* provenance to the two arguments, and it must still be well-defined. In other words, this must always be allowed: `ptr1.with_addr(N).offset_from(ptr2.with_addr(N))` (and it returns 0). But the current spec for `offset_from` says that the two pointers must either both be derived from an integer or both be derived from the same allocation, which is not in general true for arbitrary `ptr1`, `ptr2`.

To obtain provenance monotonicity, this PR hence changes the spec for offset_from to say that if both pointers have the same address, the function is always well-defined.

### What further consequences does this have?

It means the compiler can no longer transform `end2 = begin.offset(end.offset_from(begin))` into `end2 = end`. However, it can still be transformed into `end2 = begin.with_addr(end.addr())`, which later parts of the backend (when provenance has been erased) can trivially turn into `end2 = end`.

The only alternative I am aware of is a fundamentally different handling of zero-sized accesses, where a "no provenance" pointer is not allowed to do zero-sized accesses and instead we have a special provenance that indicates "may be used for zero-sized accesses (and nothing else)". `offset` and `offset_from` would then always be UB on a "no provenance" pointer, and permit zero-sized offsets on a "zero-sized provenance" pointer. This achieves provenance monotonicity. That is, however, a breaking change as it contradicts what we landed in rust-lang/rust#117329. It's also a whole bunch of extra UB, which doesn't seem worth it just to achieve that transformation.

### What about the backend?

LLVM currently doesn't have an intrinsic for pointer difference, so we anyway cast to integer and subtract there. That's never UB so it is compatible with any relaxation we may want to apply.

If LLVM gets a `ptrsub` in the future, then plausibly it will be consistent with `ptradd` and [consider two equal pointers to be inbounds](rust-lang/rust#124921 (comment)).
celinval added a commit to celinval/rust-dev that referenced this pull request Jul 17, 2024
5e4edba Rollup merge of rust-lang#127789 - Sword-Destiny:master, r=petrochenkov
686f75b Rollup merge of rust-lang#127047 - tspiteri:f128-aconsts-lsd, r=tgross35
8b1d874 deny unsafe_op_in_unsafe_fn for teeos
f8bb325 clean unsafe op in unsafe fn
b597017 clean unsafe op in unsafe fn
9fd9c61 clean unsafe op in unsafe fn
e0c57e4 delete #![allow(unsafe_op_in_unsafe_fn)]
a778c83 Auto merge of rust-lang#127777 - matthiaskrgr:rollup-qp2vkan, r=matthiaskrgr
6535591 Rollup merge of rust-lang#124921 - RalfJung:offset-from-same-addr, r=oli-obk
ac443f2 Auto merge of rust-lang#127020 - tgross35:f16-f128-classify, r=workingjubilee
eae9451 Rollup merge of rust-lang#127750 - ChrisDenton:safe-unsafe-unsafe, r=workingjubilee
6257980 Rollup merge of rust-lang#127744 - workingjubilee:deny-unsafe-op-in-std, r=jhpratt
05614f3 Rollup merge of rust-lang#127712 - ChrisDenton:raw-types, r=workingjubilee
14c24b1 Mark some `f16` and `f128` functions unstably const
1b70afd Move safety comment outside unsafe block
3c286d5 Make os/windows default to deny unsafe in unsafe
d96ed86 Make pal/windows default to deny unsafe in unsafe
bb3f60f Fix Windows 7
9fc6710 Auto merge of rust-lang#127719 - devnexen:math_log_fix_solill, r=Amanieu
decdb06 Don't re-export `c_int` from `c`
a1a1c6a Remove DWORD
7d18991 Remove ULONG
d89bce6 Remove PSRWLOCK
d3205de Remove LPVOID
68ac381 Remove LPSECURITY_ATTRIBUTES
6d037b8 Remove LPOVERLAPPED
61f617d Remove LPCVOID
8a25371 Remove SIZE_T
cd51de1 Remove CHAR
00a5b3b Remove USHORT
d621d21 Remove LPWSTR
0b22ecb Remove UINT
18adcef Remove LONG
4eaaf7d Remove LARGE_INTEGER
aa45985 Remove NonZeroDWORD
d7aa7cf Auto merge of rust-lang#127732 - GrigorenkoPV:teeos-safe-sys-init, r=Amanieu
5ff7b40 std: Unsafe-wrap std::sync
e8fa3ef std: Unsafe-wrap in Wtf8 impl
8c3a9c1 std: Unsafe-wrap std::io
91b7331 std: Directly call unsafe {un,}setenv in env
8c75111 std: Unsafe-wrap OSStr{,ing}::from_encoded_bytes_unchecked
4679f9a std: Unsafe-wrap HashMap::get_many_unchecked_mut
ac0fd27 std: deny(unsafe_op_in_unsafe_fn) but allow sites
f710e38 Add `classify` and related methods for `f16` and `f128`
009660d std: removes logarithms family function edge cases handling for solaris.
3492a6b Auto merge of rust-lang#127728 - matthiaskrgr:rollup-ercdbjd, r=matthiaskrgr
0873299 sys::init is not unsafe on teeos
6c4029a Rollup merge of rust-lang#127592 - tesuji:patch-1, r=Mark-Simulacrum
7cd8086 Auto merge of rust-lang#125935 - madsmtm:merge-os-apple, r=workingjubilee
cfb0556 Merge Apple `std::os` extensions modules into `std::os::darwin`
54435f7 Rollup merge of rust-lang#127704 - workingjubilee:fixup-better-than, r=ChrisDenton
e122949 Auto merge of rust-lang#127706 - workingjubilee:rollup-d07ij30, r=workingjubilee
3033120 Rollup merge of rust-lang#127659 - saethlin:manually-drop-bufwriter, r=joboet
e9eb7de Rollup merge of rust-lang#127446 - zachs18:miri-stdlib-leaks-core-alloc, r=Mark-Simulacrum
3ad2560 Rollup merge of rust-lang#127370 - ChrisDenton:win-sys, r=Mark-Simulacrum
05bf6bc doc: Suggest `str::repeat` over `iter::repeat().take().collect()`
96e8ba7 Fix minor typos in std::process doc on Win argv
6b67c66 Auto merge of rust-lang#126958 - dtolnay:u32char, r=Mark-Simulacrum
591aaaf std::unix::fs: removing, now useless, layers predating macOs 10.10.
94ec6e7 Auto merge of rust-lang#127674 - jhpratt:rollup-0dxy3k7, r=jhpratt
a7c1f60 Rollup merge of rust-lang#127668 - spencer3035:improve-slice-doc, r=jhpratt
1e49e05 Rollup merge of rust-lang#127661 - eduardosm:stabilize-io_slice_advance, r=cuviper
c79e003 Auto merge of rust-lang#127397 - jyn514:multi-thread-panic-hook, r=workingjubilee
206678c Auto merge of rust-lang#126606 - zachs18:patch-2, r=joboet
1bb0350 Updated slice documentation
c8b79dd Use ManuallyDrop in BufWriter::into_parts
6e26e27 Stabilize io_slice_advance
cac6664 Rename the internal `const_strlen` to just `strlen`
39647ab fix interleaved panic output
0476fc4 Rollup merge of rust-lang#127433 - dtolnay:conststrlen, r=workingjubilee
f66bd5f Rollup merge of rust-lang#126827 - the8472:pidfd-spawn, r=workingjubilee
1e5cd21 Rollup merge of rust-lang#124980 - zachs18:rc-allocator, r=Amanieu
949f0d6 Add instability attribute on private const_strlen function
20bfac6 Rollup merge of rust-lang#127422 - greaka:master, r=workingjubilee
f937ef1 Rollup merge of rust-lang#127599 - tgross35:lazy_cell_consume-rename, r=workingjubilee
fde7fd2 Rollup merge of rust-lang#127588 - uweigand:s390x-f16-doctests, r=tgross35
ed47f98 Rollup merge of rust-lang#127572 - tbu-:pr_debug_event_nonpacked, r=jhpratt
e5c8b85 Rollup merge of rust-lang#124599 - estebank:issue-41708, r=wesleywiser
b71b538 Rename `lazy_cell_consume` to `lazy_cell_into_inner`
9efc1cb core: Limit remaining f16 doctests to x86_64 linux
a18fbd0 Rollup merge of rust-lang#127554 - ferrocene:tshepang-add-missing-attribute, r=pietroalbini
e419147 Don't mark `DEBUG_EVENT` struct as `repr(packed)`
4552576 Auto merge of rust-lang#126690 - andyolivares:feature/show_window, r=dtolnay
6f6e343 Rollup merge of rust-lang#127091 - Sky9x:fused-error-sources-iter, r=dtolnay
0d64105 Fixed doc links
4fb7b22 Few changes to doc comments. Added tracking issue number.
fe62f6f Exposing STARTUPINFOW.wShowWindow in CommandExt (show_window function) to control how a new process should display its window (normal, minimized, maximized, etc)
7d20047  do not run test where it cannot run
c5f1c76 Auto merge of rust-lang#127235 - martn3:no-mips-f16, r=tgross35,scottmcm
3fefa04 Rollup merge of rust-lang#127460 - Borgerr:clarify-drop-comment, r=jhpratt
895175a Rollup merge of rust-lang#127355 - aceArt-GmbH:126475, r=oli-obk
57cea32 Rollup merge of rust-lang#120248 - WaffleLapkin:bonk-ptr-object-casts, r=compiler-errors,oli-obk,lnicola
e74955e Attempt to fix CI
e466bf5 Rollup merge of rust-lang#127367 - ChrisDenton:run-sync, r=Nilstrieb
90504f8 Rollup merge of rust-lang#126921 - workingjubilee:outline-va-list, r=Nilstrieb
c6b3f3d Auto merge of rust-lang#127454 - matthiaskrgr:rollup-k3vfen2, r=matthiaskrgr
29d7923 Move/change declaration of `mod exit_guard;`
ecc9025 clarify `sys::unix::fd::FileDesc::drop` comment (rust-lang#66876)
35c5a45 Rollup merge of rust-lang#127447 - RalfJung:once_lock_miri, r=joboet
9f7100d Rollup merge of rust-lang#127354 - nicholasbishop:bishop-sized-doc, r=Nilstrieb
ee06e7d Rollup merge of rust-lang#127297 - the8472:path-new-hash, r=Nilstrieb
2206c6b Rollup merge of rust-lang#127189 - GrigorenkoPV:linkedlist-cursor-list, r=Nilstrieb
41bcc36 Rollup merge of rust-lang#127179 - tgross35:typeid-debug-hex, r=Nilstrieb
7177ac8 once_lock: make test not take as long in Miri
294d87f Remove non-focused memory leak in `std` doctest for Miri.
a86fd0f Specialize `TrustedLen` for `Iterator::unzip()`
5515bba Mitigate focused memory leaks in `core` doctests for Miri.
3a0fe26 Remove non-focused memory leaks in `core` doctests for Miri.
20d6cb3 Mitigate focused memory leaks in `alloc` doctests for Miri.
cac8902 Remove non-focused memory leaks in `alloc` doctests for Miri.
bcdc8e8 Stabilize const_cstr_from_ptr (CStr::from_ptr, CStr::count_bytes)
a48f566 offset_from intrinsic: always allow pointers to point to the same address
9919a83 Mark format! with must_use hint
0907955 as_simd: fix comment to be in line with 507583a (rust-lang#121201)
5569ece Rollup merge of rust-lang#127275 - RalfJung:offset-from-isize-min, r=Amanieu
2337ab5 Rollup merge of rust-lang#125751 - pitaj:new_range_api, r=jhpratt
ad4fde6 Rollup merge of rust-lang#127363 - GuillaumeGomez:improve-fmt-code-readability, r=Amanieu
3eeca5f Rollup merge of rust-lang#127107 - mu001999-contrib:dead/enhance-2, r=pnkfelix
1b5e5ac Rollup merge of rust-lang#123600 - tisonkun:path_with_extension, r=dtolnay
5e9d445 Attempt to fix CI
d8965d3 add `new_range_api` for RFC 3550
ca0f659 Move exit guard from sys::common::exit_guard to sys::exit_guard.
cf300a7 Update library/std/src/sys/pal/common/exit_guard.rs
ba4c71a add unit tests for extra extension feature
55fc20b update comments
6b7a259 Add experimental raw-dylib feature to std
c452e62 Use windows_targets macro for alloc
521c81a Run alloc sync tests
2fcdebb Improve readability of some fmt code examples
625bcc4 Rollup merge of rust-lang#127320 - ChrisDenton:win-sys, r=Mark-Simulacrum
f8caf5f Rollup merge of rust-lang#127214 - bjorn3:miri_native_unwind, r=oli-obk
1862054 Describe Sized requirements for mem::offset_of
e26c881 impl FusedIterator and a size hint for the error sources iter
8f1c664 core: erase redundant stability attrs in va_list
60c33a5 library: outline VaList into ffi::va_list
03d11c2 Auto merge of rust-lang#126171 - RalfJung:simd_bitmask_multibyte, r=workingjubilee
297850a Add more checks for pointers with vtable meta
f58a3d6 Improve dead code analysis
515bd30 Add comments to windows_targets.rs
89d2de0 Update windows-bindgen to 0.58.0
0860a04 also remove redundant requirements from offset()
6f80604 offset_from: "the difference must fit in an isize" is a corollary
de4f5c2 Rollup merge of rust-lang#127303 - cuishuang:master, r=jhpratt
56c73c3 Rollup merge of rust-lang#127195 - biabbas:vxworks_cleanup, r=jhpratt
5dfdef7 Rollup merge of rust-lang#126792 - wooden-worm:master, r=Mark-Simulacrum
4df2059 chore: remove repeat words
acbefbb impl PathBuf::add_extension and Path::with_added_extension
13d5a42 Auto merge of rust-lang#127226 - mat-1:optimize-siphash-round, r=nnethercote
ed3d487 stir the hash state a little to avoid prefix collisions
5ca124f Add more test cases for path comparisons
33bc557 Add test case demonstrating equality of paths "foo/bar" and "foobar"
079f999 Move unique_thread_exit call to lang_start_internal so it is not in a generic function, and wrap it in `catch_unwind`
47d0cbc Remove Miri special-case
596be7e Use pthread_t instead of numeric thread id
2e90f6f Use libc::pause instead of std::thread::park in wait-for-exit loop
1fd23e8 core: Limit four f16 doctests to x86_64 linux
e6f15c5 std: Set has_reliable_f16 to false for MIPS targets in build.rs
67535b6 library/std/build.rs: "powerpc64le" is not a target_arch
5b0d82f Rollup merge of rust-lang#127204 - dimpolo:stabilize_atomic_bool_fetch_not, r=jhpratt
b184a84 Rollup merge of rust-lang#123588 - tgross35:stabilize-assert_unchecked, r=dtolnay
2a81053 Fall back on remove dir implementation for vxworks
a8b6d0a Rollup merge of rust-lang#127230 - hattizai:patch01, r=saethlin
4d7cbb2 chore: remove duplicate words
645e9f2 Optimize SipHash by reordering compress instructions
c5ab1f0 Rollup merge of rust-lang#127128 - elomatreb:elomatreb/stabilize-duration_abs_diff, r=joboet
f090672 Rollup merge of rust-lang#126732 - StackOverflowExcept1on:master, r=m-ou-se
1dc4f05 Use the native unwind function in miri where possible
4fff335 Avoid MIR bloat in inlining
4385efd Stabilize atomic_bool_fetch_not
6c3359c Rollup merge of rust-lang#127182 - danielhuang:patch-4, r=Nilstrieb
a0a438a Remove unqualified import io:: Error for vxworks as all Error references are qualified in process_vxworks.rs
2a65e9f Auto merge of rust-lang#127026 - Urgau:cleanup-bootstrap-check-cfg, r=Kobzol
bba2200 LinkedList's Cursor: method to get a ref to the cursor's list
40a9be9 Update ip_addr.rs
986dbd1 Print `TypeId` as hex for debugging
f27723e Rollup merge of rust-lang#127069 - Sky9x:fmt-pointer-use-addr, r=Nilstrieb
b068fce Rollup merge of rust-lang#126895 - betelgeuse:improve_simd_gather_documentation, r=Amanieu
a6b22e9 Rollup merge of rust-lang#127134 - tgross35:typeid-debug, r=Nilstrieb
7f0bb45 Rollup merge of rust-lang#126906 - GrigorenkoPV:fixme-split_at_first, r=Mark-Simulacrum
b0feb54 Rollup merge of rust-lang#126705 - safinaskar:panic, r=Mark-Simulacrum
b8977f5 Auto merge of rust-lang#127133 - matthiaskrgr:rollup-jxkp3yf, r=matthiaskrgr
affa2f9 Print `TypeId` as a `u128` for `Debug`
05a472c Rollup merge of rust-lang#127122 - TDecking:div_ceil, r=Nilstrieb
9b3a511 Auto merge of rust-lang#120639 - fee1-dead-contrib:new-effects-desugaring, r=oli-obk
f96a321 Stabilize `duration_abs_diff`
bf9096f small correction to fmt::Pointer impl
171f5db Auto merge of rust-lang#127121 - GuillaumeGomez:rollup-xjjjckn, r=GuillaumeGomez
50a6646 Remove uneccessary condition in `div_ceil`
7914389 Updated docs on `#[panic_handler]` in `library/core/src/lib.rs`
1858bdc Rollup merge of rust-lang#127073 - Sky9x:unnecessary-seqcst, r=Nilstrieb
aaed209 Rollup merge of rust-lang#127072 - Sky9x:docs-includes-vs-does-include, r=scottmcm
e5a577d Auto merge of rust-lang#127119 - RalfJung:miri-sync, r=RalfJung
77a5b51 Rollup merge of rust-lang#126953 - joboet:lazy_key, r=jhpratt
8641f6a Merge from rustc
402992c Rollup merge of rust-lang#127071 - Sky9x:remove-ptr-to-from-bits, r=scottmcm
0a2d8e4 Rollup merge of rust-lang#127070 - Sky9x:unit-const-param-ty, r=BoxyUwU
663f3d5 Rollup merge of rust-lang#127055 - shepmaster:hash-finish-must-use, r=dtolnay
729a10a address review comments
db228b8 general fixups and turn `TODO`s into `FIXME`s
47492c9 Implement `Min` trait in new solver
cc4a029 implement new effects desugaring
d6fadf5 std: add safety comments
8c3c7dc Rollup merge of rust-lang#126970 - DaniPopes:simplify-str-clone_into, r=cuviper
ae98528 Rollup merge of rust-lang#126956 - joboet:fmt_no_extern_ty, r=RalfJung
652f0b8 Merge from rustc
48dc678 Remove unnecessary SeqCst in `impl fmt::Pointer for AtomicPtr`
e6e5e84 docs: say "includes" instead of "does include"
a722d39 Remove (deprecated & unstable) {to,from}_bits pointer methods
2ed9c9f add () to the marker_impls macro for ConstParamTy
fdfe014 Mark `Hasher::finish` as #[must_use]
2bd2069 fix least significant digits of f128 associated constants
8db57c2 core: improve comment
1f8c8f4 Cleanup bootstrap check-cfg
6c38c60 Rollup merge of rust-lang#126980 - Borgerr:fix-extendfromslice-check, r=workingjubilee
a2dc9b5 Rollup merge of rust-lang#126929 - nnethercote:rm-__rust_force_expr, r=oli-obk
cf231e8 Merge from rustc
a8b311e Auto merge of rust-lang#126608 - tgross35:f16-f128-library, r=Mark-Simulacrum
4788a93 std: test a variety of ways to extend a Wtf8Buf
57c2de8 set self.is_known_utf8 to false in extend_from_slice
c14a130 Rollup merge of rust-lang#126879 - the8472:next-chunk-filter-drop, r=cuviper
f6fdef3 core: avoid `extern` types in formatting infrastructure
43a865a fix UI test, simplify error message
ff33a66 regression test for leaks in the the Filter::next_chunk implementation
f90972a add comments explaining optimizations for Filter::next_chunk
4039a7f fix Drop items getting leaked in Filter::next_chunk
0351c53 Simplify `str::clone_into`
5aedb8a Rollup merge of rust-lang#126946 - cyrgani:patch-1, r=compiler-errors
5664da3 Rollup merge of rust-lang#126927 - workingjubilee:vaargsafe-is-unsafe, r=joboet
9273373 Rollup merge of rust-lang#126885 - Borgerr:rm_internal_pathbuf_asmutvec, r=workingjubilee
46074aa Rollup merge of rust-lang#126302 - mu001999-contrib:ignore/default, r=michaelwoerister
0fe5362 Stabilize const unchecked conversion from u32 to char
9dcaa15 std: separate TLS key creation from TLS access
5d08a54 Detect unused structs which derived Default
e6c45e4 `PathBuf::as_mut_vec` removed and verified for UEFI and Windows platforms rust-lang#126333
7cec6ef remove references to `PathBuf::as_mut_vec` in `PathBuf::_set_extension`
37f78f4 inner truncate methods for UEFI platforms
cfb8021 rust-lang#126333 remove `PathBuf::as_mut_vec` reference at top of `PathBuf::_push`
3edb521 simd_bitmask intrinsic: add a non-power-of-2 multi-byte example
2ddf794 Add missing slash in const_eval_select doc comment
19cfdb2 Add tests for `f16` and `f128`
561daff Add more `f16` and `f128` library functions and constants
6cb3d34 Add doctests to existing `f16` and `f128` functions
b0e0503 Add build.rs config for reliable `f16` and `f128`
028026b Remove `__rust_force_expr`.
1069a68 core: VaArgSafe is an unsafe trait
a451b2a Auto merge of rust-lang#126852 - scottmcm:more-checked-math-tweaks, r=Amanieu
17d03b9 Check that we get somewhat sane PIDs when spawning with pidfds
4c9a96e more fine-grained feature-detection for pidfd spawning
bf06e43 document safety properties of the internal Process::new constructor
9212236 use pidfd_spawn for faster process creation when pidfds are requested
4815f29 document the cvt methods
1bd207e Rollup merge of rust-lang#126904 - GrigorenkoPV:nonzero-fixme, r=joboet
2676918 Rollup merge of rust-lang#125575 - dingxiangfei2009:derive-smart-ptr, r=davidtwco
9dcffa5 Rollup merge of rust-lang#125082 - kpreid:const-uninit, r=dtolnay
cf34f71 Replace `MaybeUninit::uninit_array()` with array repeat expression.
e51d8a2 Auto merge of rust-lang#126523 - joboet:the_great_big_tls_refactor, r=Mark-Simulacrum
2b8c7a3 Small fixme in core now that split_first has no codegen issues
532304b Small fixme in core now that NonZero is generic
5ae0378 std: fix wasm builds
ae08c58 Rollup merge of rust-lang#126213 - zachs18:atomicbool-u8-i8-from-ptr-alignment, r=Nilstrieb
071e80d Fix simd_gather documentation
0c4a661 wasm64 build with target-feature=+simd128,+atomics
36a20f7 Reword docs for `f32` and `f64`
6839ec5 Extract repeated constants from `f32` and `f64` source
c26bd79 Rollup merge of rust-lang#126854 - devnexen:std_unix_os_fallback_upd, r=Mark-Simulacrum
828e528 Rollup merge of rust-lang#126807 - devnexen:copy_file_macos_simpl, r=Mark-Simulacrum
e4bc79d Also get `add nuw` from `uN::checked_add`
7c83a04 SmartPointer derive-macro
f0b95fc fix build
12ec5b7 Rollup merge of rust-lang#126783 - tguichaoua:fix_tcplistener_into_incoming_issue_number, r=workingjubilee
eb265d0 std::unix::os::home_dir: fallback's optimisation.
a48f3d6 Auto merge of rust-lang#126838 - matthiaskrgr:rollup-qkop22o, r=matthiaskrgr
ec8af4b Rollup merge of rust-lang#126552 - fee1-dead-contrib:rmfx, r=compiler-errors
6d6ba92 Rollup merge of rust-lang#126140 - eduardosm:stabilize-fs_try_exists, r=Amanieu
e1edea8 Auto merge of rust-lang#116113 - kpreid:arcmut, r=dtolnay
49d4fdb Generalize `{Rc,Arc}::make_mut()` to unsized types.
5ac719e Replace `WriteCloneIntoRaw` with `CloneToUninit`.
a4ca461 Add `core::clone::CloneToUninit`.
7836843 Auto merge of rust-lang#126750 - scottmcm:less-unlikely, r=jhpratt
934e728 Auto merge of rust-lang#124101 - the8472:pidfd-methods, r=cuviper
c2ec99b to extract a pidfd we must consume the child
f7cf777 Add PidFd::{kill, wait, try_wait}
d688595 std::unix::fs: copy simplification for apple.
bb602cf Auto merge of rust-lang#125853 - tesuji:promote-fail-fast, r=cjgillot
1f17936 update intrinsic const param counting
5e7ce0b Remove `feature(effects)` from the standard library
8902c17 Auto merge of rust-lang#126781 - matthiaskrgr:rollup-5u4pens, r=matthiaskrgr
54eaed7 fix issue number
2e01ae3 Rollup merge of rust-lang#126613 - tgross35:log-test-update, r=cuviper
306d7bf Stop using `unlikely` in `strict_*` methods
a8ab1ce [GVN] Add tests for generic pointees with PtrMetadata
a272844 Don't perform mitigation for thread-unsafe libc::exit under Miri.
5035a17 fix rustdoc URL
1530977 On `target_os = "linux"`, ensure that only one Rust thread calls `libc::exit` or returns from `main`.
7e940ba Auto merge of rust-lang#126578 - scottmcm:inlining-bonuses-too, r=davidtwco
9a945fd Auto merge of rust-lang#124032 - Voultapher:a-new-sort, r=thomcc
dbaf524 Rollup merge of rust-lang#126737 - fee1-dead-contrib:rm-const-closures, r=compiler-errors
0f6922d Fix wrong big O star bracing in the doc comments
7bf7f57 Remove `feature(const_closures)` from libcore
b4e2e4a Auto merge of rust-lang#126736 - matthiaskrgr:rollup-rb20oe3, r=matthiaskrgr
0829ab8 Rollup merge of rust-lang#126717 - nnethercote:rustfmt-use-pre-cleanups, r=jieyouxu
f1c9c80 Rollup merge of rust-lang#126711 - GKFX:const-option-as-slice, r=oli-obk
e057232 Auto merge of rust-lang#116088 - nbdd0121:unwind, r=Amanieu,RalfJung
13ea648 Stabilize `PanicInfo::message()` and `PanicMessage`
b6a3858 Rollup merge of rust-lang#126703 - the8472:on-blackbox-crypto-use, r=scottmcm
847726d Shrink some slice iterator MIR
1ba2fa4 Stabilize `hint_assert_unchecked`
9d0041c Update documentation for `hint::assert_unchecked`
e3e84a7 Add blank lines after module-level `//` comments.
36ad0db Add blank lines after module-level `//!` comments.
4e67110 Convert some module-level `//` and `///` comments to `//!`.
669d6fc Make Option::as_[mut_]slice const
4ae781c reword the hint::blackbox non-guarantees
dd7c901 core: add tracking issue for `array::repeat`
5ddeaca core: simplify implementation of `array::repeat`, address other nits
62f7a4e core: implement `UncheckedIterator` for `RepeatN`
387fd1f core: implement `array::repeat`
3fc18d0 Add a hack to prevent proc_macro misopt in CI
a95938d Stabilise c_unwind
2a5e5b8 Rollup merge of rust-lang#125787 - Oneirical:infinite-test-a-novel, r=jieyouxu
227994d try implementing suggestions
78867ab run_make_support nm implementation + bin-emit-no-symbols rmake rewrite
76e61bf Replace `move||` with `move ||` in `compiler/` and `library/`
13a31b6 Auto merge of rust-lang#126330 - m-ou-se:panic-message-type, r=Amanieu
42802a3 Print the tested value in int_log tests
ea1ab74 Add missing CopyMarker impl
384c205 Revert panic_safe test changes
ca458ba Add PanicMessage type for PanicInfo::message().
2238945 Add tracking issue to async_drop API
0b3227b std: rename module for clarity
2b9a4f3 std: update TLS module documentation
00d4964 std: use the `c_int` from `core::ffi` instead of `libc`
bd3b9ec std: simplify `#[cfg]`s for TLS
78eaad5 Fix unintended regression for Freeze + Copy types
8cd20cb Auto merge of rust-lang#126569 - jieyouxu:rollup-1uvkb2y, r=jieyouxu
c1acd7a Rollup merge of rust-lang#126531 - slanterns:error_provider, r=workingjubilee
cd1c998 Rollup merge of rust-lang#126468 - RalfJung:euclid, r=Mark-Simulacrum
2730879 Rollup merge of rust-lang#126346 - hermit-os:fd, r=Amanieu
ebbce69 Rollup merge of rust-lang#126288 - x4exr:patch-1, r=dtolnay
4aa43c7 Auto merge of rust-lang#125720 - folkertdev:optimize_for_size-ptr-rotate, r=Amanieu
7912329 doc: Added commas where needed
48e1578 Fix doc-link issue
489dfce Remove reliance on const_trait in sort implementations
89b5784 std: move `sys_common::backtrace` to `sys`
90dbe22 use rustc-dep-of-std in panic_unwind
6832ad3 Rollup merge of rust-lang#126539 - lukaslueg:patch-1, r=jhpratt
04e46c2 Rollup merge of rust-lang#125112 - tbu-:pr_create_dir_all_empty, r=dtolnay
e77b474 Update `Arc::try_unwrap()` docs
83c530f Apply review comments
ae7f43e Auto merge of rust-lang#126299 - scottmcm:tune-sliceindex-ubchecks, r=saethlin
339f266 Redo SliceIndex implementations
2388743 update comment
4cc1c37 Rollup merge of rust-lang#126229 - ChrisDenton:bindgen, r=Mark-Simulacrum
b40c54b std: refactor the TLS implementation
7e3c4f8 Auto merge of rust-lang#126518 - matthiaskrgr:rollup-wb70rzq, r=matthiaskrgr
2678593 std: suggest OnceLock over Once
b509ed2 Polish `std::path::absolute` documentation.
c3c1757 Auto merge of rust-lang#126473 - matthiaskrgr:rollup-8w2xm09, r=matthiaskrgr
a135342 Rollup merge of rust-lang#126285 - kpreid:unique-rc, r=dtolnay
7fafb6d Rollup merge of rust-lang#126266 - tbu-:pr_doc_alloc_default_system, r=jhpratt
afee9f5 Rollup merge of rust-lang#126135 - hermit-os:fuse, r=jhpratt
4a32b4b Rollup merge of rust-lang#123769 - dtolnay:literal, r=fee1-dead
3909d51 div_euclid, rem_euclid: clarify/extend documentation
ca52a2c Rollup merge of rust-lang#126351 - devnexen:to_sol11_upd, r=ChrisDenton
369fa55 Rollup merge of rust-lang#126402 - firefighterduck:fix-unsafe-precon-copy, r=Nilstrieb
2acb995 Rollup merge of rust-lang#126390 - Kriskras99:master, r=Nilstrieb
b3c1dcb Rollup merge of rust-lang#126360 - compiler-errors:uplift-structural-traits, r=lcnr
bdb9aa2 Rollup merge of rust-lang#123726 - jieyouxu:command-new-docs, r=Nilstrieb
307d1af Remove superfluous escaping from byte, byte str, and c str literals
78d94ee LangItem-ify Coroutine trait in solvers
891f00c fix wrong assert_unsafe_precondition message for core::ptr::copy
9adf702 Rollup merge of rust-lang#126384 - RalfJung:is_none_or, r=workingjubilee
02cb1e9 Rollup merge of rust-lang#126347 - slanterns:try_simplify, r=scottmcm
fa2a54a Fix wording in {checked_}next_power_of_two
3ef894f add tracking issue for is_none_or
a5fe19d std::unix::fs::link using direct linkat call for Solaris and macOs.
9921cd2 Rollup merge of rust-lang#126328 - RalfJung:is_none_or, r=workingjubilee
93583a6 Simplify `try_*` on `Iterator`
47090b1 export std::os::fd module on HermitOS
17c90d8 Auto merge of rust-lang#126273 - pietroalbini:pa-bootstrap-update, r=Mark-Simulacrum
b482e06 add is_none_or
027c82e Rollup merge of rust-lang#126322 - m-ou-se:panicinfo-and-panicinfo-2, r=RalfJung
db03ec6 Rollup merge of rust-lang#126242 - yaahc:simplify-provider, r=jhpratt
956efde Rollup merge of rust-lang#126039 - dpaoliello:arm64ecbuild, r=davidtwco
3acb41f Fix deprecated version.
bc5e618 Update doc comment on PanicInfo::message().
249d63e Use payload_as_str instead of two downcasts.
15677e9 Fix deprecation version.
a239d5b Clarify doc comment.
209f8c8 Auto merge of rust-lang#126319 - workingjubilee:rollup-lendnud, r=workingjubilee
6ec98e7 Rollup merge of rust-lang#126305 - workingjubilee:fix-os-string-to-string-utf8-invariant, r=joboet
80467da Rollup merge of rust-lang#126287 - nnethercote:reformat-cranelift-patch, r=bjorn3
5760a4e Rollup merge of rust-lang#126281 - ChrisDenton:env, r=jhpratt
439c2ae Rollup merge of rust-lang#126249 - workingjubilee:simplify-try-map-signature, r=scottmcm
23e3dbf Rollup merge of rust-lang#126210 - lolbinarycat:ptr_doctest_assert, r=workingjubilee
d469394 Rollup merge of rust-lang#123374 - mgeier:doc-slice-from-raw-parts, r=scottmcm
63fe960 Require any function with a tait in its signature to actually constrain a hidden type
e1d73c2 Revert "Rollup merge of rust-lang#125362 - joboet:tait_hack, r=Nilstrieb"
382ed52 Make PathBuf less Ok with adding UTF-16 then `into_string`
548e7a4 Update a cranelift patch file for formatting changes.
8ccbe9e `UniqueRc`: support allocators and `T: ?Sized`.
b3dcee6 set_env: State the conclusion upfront
f56c023 Rename `std::fs::try_exists` to  `std::fs::exists` and stabilize fs_try_exists
c16d8b1 Unify guarantees about the default allocator
d8fe589 remove cfg(bootstrap)
a2ff49b replace version placeholder
f72e4a9 Formatting.
0503ca7 Bump deprecation of std's PanicInfo alias to 1.82.0.
fea6b03 Add PanicHookInfo::payload_as_str().
0c8a9e0 Fix display of panic message in recursive panic.
2f85702 Mention core's PanicInfo in error.md.
ad0667f Add note on panic payload type.
518722e Downcast panic payload to String too in example.
c4dea81 Move deprecation of std::panic::PanicInfo to 1.80.0.
143e4c4 Fix deprecation version.
c6749ae Rename std::panic::PanicInfo to PanicHookInfo.
db2e055 Formatting.
51f20ac Fix invalid markdown/html.
d4b7304 Reorder body of begin_panic for consistency.
373fb60 Impl Display for PanicPayload to simplify things.
224d45c Use unnamed lifetimes for [..]Payload impl blocks.
cf984e0 Move downcasting panic payload to str to a function.
a18eeac Mark some PanicInfo methods as #[inline] for consistency.
47f359b Remove std::panic::PanicInfo::internal_constructor+set_payload.
701d6a2 Remove core::panic::PanicInfo::internal_constructor.
cca865d Update doc comment about core::panicking.
221a90c Fix doc link.
d6658a5 Add core::panic::PanicInfo::payload() for compatibility.
ca0bfeb Document difference between core and std's PanicInfo.
702405e Split core's PanicInfo and std's PanicInfo.
483f641 Simplify `[T; N]::try_map` signature
8b6f468 Simplify provider api to improve llvm ir
c8170e6 Rollup merge of rust-lang#126212 - SteveLauC:fix/haiku, r=joboet
58bb5cf Rollup merge of rust-lang#126191 - ivan-shrimp:nonzero_doc, r=scottmcm
d2f8ddf Bump windows-bindgen to 0.57
02bf152 Clarify `Command::new` behavior if passed programs with arguments
e17d6b9 Remove some unused crate dependencies.
5840184 Update docs for AtomicU8/I8.
8791549 fix: build on haiku
263861f Update safety docs for AtomicBool::from_ptr.
e25ae61 docs(core): make more const_ptr doctests assert instead of printing
cf9de23 Auto merge of rust-lang#126205 - jieyouxu:rollup-s64z5ng, r=jieyouxu
c5da756 Rollup merge of rust-lang#126194 - ChrisDenton:winerror, r=Mark-Simulacrum
c4bd74c Rollup merge of rust-lang#125253 - sunsided:feature/FRAC_1_SQRT_PI, r=Mark-Simulacrum
c9c5d8f Auto merge of rust-lang#126193 - RalfJung:miri-sync, r=RalfJung
e39299d Migrate more things to WinError
0df0a38 fix `NonZero` doctest inconsistencies
818933d Rollup merge of rust-lang#126168 - devnexen:current_exe_haiku_simpl, r=ChrisDenton
a9bd569 Rollup merge of rust-lang#126146 - devnexen:signal_fbsd, r=ChrisDenton
05812a0 Merge from rustc
56bdaf3 std::unix::os current_exe implementation simplification for haiku.
e6c378f Auto merge of rust-lang#125966 - schvv31n:impl_os_string_pathbuf_leak, r=workingjubilee
e000ecb std::unix::process adding few specific freebsd signals to be able to id.
67454f5 Rollup merge of rust-lang#126138 - wbk:patch-1, r=lqd
ca932c8 Rollup merge of rust-lang#125998 - devnexen:get_mode_illumos, r=Nilstrieb
397e9cb Rollup merge of rust-lang#125951 - slanterns:error_in_core_stabilization, r=Amanieu
4655eca Fix typo in docs for std::pin
bb2e2d9 add HermitOS support of vectored read/write operations
dd7ccb7 Rollup merge of rust-lang#126089 - wutchzone:option_take_if, r=scottmcm
199da77 Rollup merge of rust-lang#126030 - ChrisDenton:update-wingen-readme, r=Mark-Simulacrum
8a4b11a Rollup merge of rust-lang#124012 - slanterns:as_slice_stabilize, r=BurntSushi
05a92c2 Auto merge of rust-lang#126110 - workingjubilee:backtrace-0.3.73, r=workingjubilee
cd73cbe Update backtrace to 0.3.73
c6e53ce Merge from rustc
3b60335 Rollup merge of rust-lang#125606 - diondokter:opt-size-int-fmt, r=cuviper
7014731 fix doc comments about `error_generic_member_access`
3f48168 Stabilize `error_in_core`
20f15f4 fixed memory leaks in PathBuf::leak & OsString::leak tests
fa66a61 Rollup merge of rust-lang#126096 - c410-f3r:tests-tests-tests, r=jhpratt
5736944 [RFC-2011] Allow `core_intrinsics` when activated
dfddd7e Stabilize Option::take_if
051c6c6 Raise `DEFAULT_MIN_STACK_SIZE` to at least 64KiB
29932f3 Auto merge of rust-lang#126038 - matthiaskrgr:rollup-h4rm3x2, r=matthiaskrgr
149a237 Promote `arm64ec-pc-windows-msvc` to tier 2
4a81c12 Rollup merge of rust-lang#126032 - ChrisDenton:update-docs, r=joboet
7450cf0 Rollup merge of rust-lang#125800 - fortanix:raoul/rte-99-fix_mut_static_task_queue, r=jethrogb
ed91d55 Rollup merge of rust-lang#125940 - devnexen:unix_fs_netbsd_get_path, r=cuviper
bf7430f Update description of the `IsTerminal` example
91c8b23 Update `./x fmt` command
1632165 Rollup merge of rust-lang#125995 - kpreid:const-uninit-stable, r=Nilstrieb
2c5f1ac Rollup merge of rust-lang#125982 - xTachyon:fix-linked-list, r=jhpratt
80cee25 Rollup merge of rust-lang#123168 - joshtriplett:size-of-prelude, r=Amanieu
28dc012 std::unix::fs::get_mode implementation for illumos/solaris.
14a6f29 Use inline const instead of unsafe to implement `MaybeUninit::uninit_array()`.
a2c3406 Use inline const instead of unsafe to construct arrays in `MaybeUninit` examples.
f8ee355 Rollup merge of rust-lang#125932 - schvv31n:patch-1, r=lqd
49dad46 Rollup merge of rust-lang#125927 - ferrocene:lw-alloc-unwind-test, r=pietroalbini
e38c13a Rollup merge of rust-lang#125696 - workingjubilee:please-dont-say-you-are-lazy, r=Nilstrieb
1764910 Rollup merge of rust-lang#106186 - rossmacarthur:ft/iter-chain, r=Amanieu
fbb5246 Make deleting on LinkedList aware of the allocator
85aa4b6 impl OsString::leak & PathBuf::leak
b19dd14 Add function `core::iter::chain`
25245bb Rollup merge of rust-lang#125919 - tbu-:pr_fix_typo, r=lqd
a415ddd Rollup merge of rust-lang#125504 - mqudsi:once_nominal, r=cuviper
ea7e91c Let compiler auto impl `Send` for `Task`
55f3d10 Store `Task::p` as `dyn FnOnce() + Send`
92b604f Pass function for `Thread` as `Send` to `Thread::imp`
175ad22 Auto merge of rust-lang#125525 - joboet:tls_accessor, r=cuviper
31e0022 std::unix::fs::get_path: using fcntl codepath for netbsd instead.
82e24ad Fix typo in the docs of `HashMap::raw_entry_mut`
fcc07af Ignore `vec_deque_alloc_error::test_shrink_to_unwind` test on non-unwind targets
6ef46b3 Auto merge of rust-lang#125912 - nnethercote:rustfmt-tests-mir-opt, r=oli-obk
7927138 Remove stray "this"
06d9b0e Add "OnceList" example to motivate OnceLock
6d001c5 Move first OnceLock example to LazyLock
7e47256 Differ LazyLock vs. OnceLock in std::sync overview
a198721 Explain LazyCell in core::cell overview
ae5598a Reformat `mir!` macro invocations to use braces.
494f05c Rollup merge of rust-lang#125898 - RalfJung:typo, r=Nilstrieb
7881d33 Rollup merge of rust-lang#125884 - Rua:integer_sign_cast, r=Mark-Simulacrum
380d9a3 Rollup merge of rust-lang#121062 - RustyYato:f32-midpoint, r=the8472
81b9e26 Wording of the documentation
1c707b6 typo: depending from -> on
fe5adb9 Auto merge of rust-lang#125577 - devnexen:netbsd_stack_min, r=joboet
876458e Implement feature `integer_sign_cast`
e929c7f Change f32::midpoint to upcast to f64
cd04000 Auto merge of rust-lang#124294 - tspiteri:ilog-first-iter, r=the8472
7f0b19d stablize `const_binary_heap_constructor` & create an unstable feature `const_binary_heap_new_in` for `BinaryHeap::new_in`
5c2e274 Rollup merge of rust-lang#125730 - mu001999-contrib:clippy-fix, r=oli-obk
9fe1803 Auto merge of rust-lang#124662 - zetanumbers:needs_async_drop, r=oli-obk
8943103 Avoid `mut` and simplify initialization of `TASK_QUEUE`
ba98164 Auto merge of rust-lang#124636 - tbu-:pr_env_unsafe, r=petrochenkov
bbaaa79 Rollup merge of rust-lang#125746 - jmillikin:duration-from-weeks-typo, r=lqd
1329a62 Rollup merge of rust-lang#125739 - RalfJung:drop-in-place-docs, r=workingjubilee
8883bcf Rollup merge of rust-lang#125342 - tbu-:pr_doc_write, r=ChrisDenton
14d5dcb explain what the open questions are, and add a Miri test for that
6f01ba7 Apply x clippy --fix and x fmt
c9c0713 Fix copy-paste error in `Duration::from_weeks` panic message.
e935223 Rollup merge of rust-lang#125733 - compiler-errors:async-fn-assoc-item, r=fmease
4feb881 Elaborate about modifying env vars in multi-threaded programs
2500719 Add note about safety of `std::env::set_var` on Windows
c4b1ff8 Make `std::env::{set_var, remove_var}` unsafe in edition 2024
07d3009 drop_in_place: weaken the claim of equivalence with drop(ptr.read())
99eabb4 Add lang item for AsyncFnKindHelper::Upvars
a8f468f Add lang item for Future::Output
2e1896e Add lang items for AsyncFn's associated types
d82378a [ACP 362] genericize `ptr::from_raw_parts`
619e33b Add FRAC_1_SQRT_2PI doc alias to FRAC_1_SQRT_TAU
1265244 make `ptr::rotate` smaller when using `optimize_for_size`
bb6d4eb Add safety comment to fix tidy
c8b699c Optimize async drop glue for some old types
0444ab8 Add FRAC_1_SQRT_2PI constant to f16/f32/f64/f128
1aaf0a9 Rollup merge of rust-lang#125226 - madsmtm:fix-mac-catalyst-tests, r=workingjubilee
565dce2 Rollup merge of rust-lang#124251 - scottmcm:unop-ptr-metadata, r=oli-obk
a4025eb Add custom mir support for `PtrMetadata`
87b9f24 Add an intrinsic for `ptr::metadata`
914d2c0 Rollup merge of rust-lang#125637 - nnethercote:rustfmt-fixes, r=GuillaumeGomez
3170156 Make more of the test suite run on Mac Catalyst
9753338 Disable stack overflow handler tests on iOS-like platforms
3548389 Don't format `tests/run-make/*/rmake.rs`.
6fcf130 Rollup merge of rust-lang#125647 - tspiteri:track-lazy_cell_consume, r=workingjubilee
385e1b8 Rollup merge of rust-lang#125551 - clarfonthey:ip-bits, r=jhpratt
457f5ee update tracking issue for lazy_cell_consume
893db81 Auto merge of rust-lang#125636 - workingjubilee:bump-backtrace-0.3.72, r=workingjubilee
6785858 Sync libstd deps with backtrace
b214872 Bump backtrace to 0.3.72
0ef7706 Auto merge of rust-lang#125609 - diondokter:opt-size-char-count, r=thomcc
3578f42 Rollup merge of rust-lang#124870 - Lokathor:update-result-docs, r=dtolnay
d4fb66b Always use the general case char count
1e8098b Size optimize int formatting
a74509c Rollup merge of rust-lang#125559 - scottmcm:simplify-shift-ubcheck, r=workingjubilee
bc346a0 Auto merge of rust-lang#122079 - tbu-:pr_copy_file_range_probe, r=the8472
fdcee4d std::pal::unix::thread fetching min stack size on netbsd.
d14171d Auto merge of rust-lang#125574 - matthiaskrgr:rollup-1oljoup, r=matthiaskrgr
3e545bc Rollup merge of rust-lang#125571 - tesuji:dummy-pi, r=Nilstrieb
8409442 Rollup merge of rust-lang#125561 - Cyborus04:stabilize-slice-flatten, r=scottmcm
8981ee4 Auto merge of rust-lang#125570 - tesuji:stdout-handle, r=Nilstrieb
addaaed f32: use constants instead of reassigning a dummy value as PI
8a6d10d use proper name instead of magic number
64671fa Stabilize `slice_flatten`
4014081 Auto merge of rust-lang#125070 - tbu-:pr_set_extension_panic, r=jhpratt
f54c557 Auto merge of rust-lang#125518 - saethlin:check-arguments-new-in-const, r=joboet
a4bac2b It seems that anchor names are implicitly all lowercase
7cddfd4 Simplify the `unchecked_sh[lr]` ub-checks a bit
805f56b Fix URL target, it's in the module not the type.
3b77f19 github showed that weird.
65726c0 correct for copy paste errors when fixing wrapping.
613145f Resolve rust-lang#124870 (comment)
9677b70 revert to the inconsistent paragraph wrapping.
bf3ca98 Rollup merge of rust-lang#124667 - newpavlov:stabilize_div_duration, r=jhpratt
4af28c4 Rollup merge of rust-lang#123803 - Sp00ph:shrink_to_fix, r=Mark-Simulacrum
79e1daf Rollup merge of rust-lang#122986 - taiki-e:aix-c-char, r=Mark-Simulacrum
0b13a6c Rollup merge of rust-lang#121377 - pitaj:lazy_cell_fn_pointer, r=dtolnay
b1ac7da Stabilise ip_bits feature
23bb5bc Auto merge of rust-lang#121571 - clarfonthey:unchecked-math-preconditions, r=saethlin
c11b36a Rollup merge of rust-lang#125527 - programmerjake:patch-2, r=workingjubilee
d6812d5 Rollup merge of rust-lang#125498 - zmodem:avx512er, r=workingjubilee
f52291b Rollup merge of rust-lang#125478 - Urgau:check-cfg-config-bump-stage0, r=Mark-Simulacrum
38dcab9 Rollup merge of rust-lang#125271 - RalfJung:posix_memalign, r=workingjubilee
29a1b3b Move the checks for Arguments constructors to inline const
5257f3f Add manual Sync impl for ReentrantLockGuard
078095a std: make TLS accessors closures that return pointers
567096d Rollup merge of rust-lang#125497 - meesfrensel:patch-1, r=calebzulawski
dd828cf Stop using the avx512er and avx512pf x86 target features
749b376 Change pedantically incorrect OnceCell/OnceLock wording
2b1602a Fix some SIMD intrinsics documentation
59b5617 Remove now outdated comment since we bumped stage0
6d1cdb5 Add assert_unsafe_precondition to unchecked_{add,sub,neg,mul,shl,shr} methods
8fa3f60 Document behavior of `create_dir_all` wrt. empty path
dd196e7 Document platform-specifics for `Read` and `Write` of `File`
a71d9d9 Fix c_char on AIX
ce3db1b fix typo
4913884 use posix_memalign on most Unix targets
86878b9 Fix linkchecker doc errors
1bf7a30 Turn bare links into automatic links
736b225 Move BufGuard impl outside of function
a44e7b3 Fix tidy errors
36af639 Replace sort implementations
48a835b Divide float nanoseconds instead of seconds
f84d57f Don't use `T` with both Result and Option, improve explanation.
88338ff Add `size_of`, `size_of_val`, `align_of`, and `align_of_val` to the prelude
5d56638 Panic if `PathBuf::set_extension` would add a path separator
7db52fc Add fn allocator method to rc/sync::Weak. Relax Rc<T>/Arc<T>::allocator to allow unsized T.
43bf016 Suggest borrowing on fn argument that is `impl AsRef`
50d5af4 use teletype on the attribute name
43ae187 Some Result combinations work like an Option.
d0c07aa Move `test_shrink_to_unwind` to its own file.
d77b1cc Fix `VecDeque::shrink_to` UB when `handle_alloc_error` unwinds.
0342284 Use `CURRENT_RUSTC_VERSION`
9eb77db Stabilize `div_duration`
7a6ddb3 Lift the probe code of `copy_file_range` into a function
f5305c1 Add missing .into_iter()
2a5af32 Extend the example code and assert the result
678e5a0 Add "safety" comment
ad38f9b unroll first iter of checked_ilog loop to save one multiplication
dbd03d4 Stabilize `BinaryHeap::as_slice`
08f761f DOC: Add FFI example for slice::from_raw_parts()
30c876c Be stricter with `copy_file_range` probe results
fe05246 Less syscalls for the `copy_file_range` probe
511fe47 Stabilize `LazyCell` and `LazyLock` (`lazy_cell`)

git-subtree-dir: library
git-subtree-split: 5e4edba
jaisnan added a commit to model-checking/verify-rust-std that referenced this pull request Jul 17, 2024
a2cf636 Rollup merge of rust-lang#127813 - ChrisDenton:win-futex, r=joboet
aeae332 Rollup merge of rust-lang#127763 - ChrisDenton:safe-unsafe-unsafe, r=tgross35
e0ea701 Prevent double reference in generic futex
417b61f Narrow the scope of the ReadFile unsafe block
b4d1392 forbid(unsafe_op_in_unsafe_fn) in sys/os_str
f431b51 Rollup merge of rust-lang#127836 - workingjubilee:forbid-unsafe-ops-in-xous-uefi, r=tgross35
0a024bd Rollup merge of rust-lang#127833 - risc0:erik/zkvm-deny-unsafe, r=workingjubilee
0299bb5 Rollup merge of rust-lang#127807 - ChrisDenton:win-parking, r=joboet
61af010 Rollup merge of rust-lang#127792 - workingjubilee:read-unaligned-is-dwarfier, r=joboet
d3cf2e1 Rollup merge of rust-lang#127444 - Sky9x:cstr-bytes-iter, r=dtolnay
12075d1 Rollup merge of rust-lang#126776 - nnethercote:rustfmt-use-pre-cleanups-2, r=cuviper
00d603f Rollup merge of rust-lang#126271 - diondokter:dec2flt-skip-fast-path, r=tgross35
8490c84 Rollup merge of rust-lang#125206 - mgeisler:simplify-std-env-vars, r=jhpratt,tgross35
a752e3b uefi: Forbid unwrapped unsafe in platform modules
32a1b07 Cfg nit
e189d3b xous: Forbid unwrapped unsafe in platform modules
7ddd7f8 zkvm: add `#[forbid(unsafe_op_in_unsafe_fn)]` in `stdlib`
0723962 Adjust some comments on individual `use` declarations.
4320ba0 Avoid comments that describe multiple `use` items.
1aeddb0 Merge some `core::iter` entries.
7a0b2fb Add unsafe blocks in unsafe Thread::new
8e76b15 Remove `slice_to_end`
e8527cd std: unwrapped unsafe is VERBOTEN!
5e4edba Rollup merge of rust-lang#127789 - Sword-Destiny:master, r=petrochenkov
1b631e5 Use futex.rs for Windows thread parking
d59f862 std: Use read_unaligned for reading DWARF
686f75b Rollup merge of rust-lang#127047 - tspiteri:f128-aconsts-lsd, r=tgross35
8b1d874 deny unsafe_op_in_unsafe_fn for teeos
f8bb325 clean unsafe op in unsafe fn
b597017 clean unsafe op in unsafe fn
9fd9c61 clean unsafe op in unsafe fn
e0c57e4 delete #![allow(unsafe_op_in_unsafe_fn)]
704f56f `impl Send + Sync` and override `count` for the `CStr::bytes` iterator
a778c83 Auto merge of rust-lang#127777 - matthiaskrgr:rollup-qp2vkan, r=matthiaskrgr
6535591 Rollup merge of rust-lang#124921 - RalfJung:offset-from-same-addr, r=oli-obk
ac443f2 Auto merge of rust-lang#127020 - tgross35:f16-f128-classify, r=workingjubilee
57937d7 allow(unsafe_op_in_unsafe_fn) on some functions
94b381d Some Windows functions are safe
f3bb34b Deny more windows unsafe_op_in_unsafe_fn
eae9451 Rollup merge of rust-lang#127750 - ChrisDenton:safe-unsafe-unsafe, r=workingjubilee
6257980 Rollup merge of rust-lang#127744 - workingjubilee:deny-unsafe-op-in-std, r=jhpratt
05614f3 Rollup merge of rust-lang#127712 - ChrisDenton:raw-types, r=workingjubilee
14c24b1 Mark some `f16` and `f128` functions unstably const
1b70afd Move safety comment outside unsafe block
3c286d5 Make os/windows default to deny unsafe in unsafe
d96ed86 Make pal/windows default to deny unsafe in unsafe
bb3f60f Fix Windows 7
9fc6710 Auto merge of rust-lang#127719 - devnexen:math_log_fix_solill, r=Amanieu
decdb06 Don't re-export `c_int` from `c`
a1a1c6a Remove DWORD
7d18991 Remove ULONG
d89bce6 Remove PSRWLOCK
d3205de Remove LPVOID
68ac381 Remove LPSECURITY_ATTRIBUTES
6d037b8 Remove LPOVERLAPPED
61f617d Remove LPCVOID
8a25371 Remove SIZE_T
cd51de1 Remove CHAR
00a5b3b Remove USHORT
d621d21 Remove LPWSTR
0b22ecb Remove UINT
18adcef Remove LONG
4eaaf7d Remove LARGE_INTEGER
aa45985 Remove NonZeroDWORD
d7aa7cf Auto merge of rust-lang#127732 - GrigorenkoPV:teeos-safe-sys-init, r=Amanieu
5ff7b40 std: Unsafe-wrap std::sync
e8fa3ef std: Unsafe-wrap in Wtf8 impl
8c3a9c1 std: Unsafe-wrap std::io
91b7331 std: Directly call unsafe {un,}setenv in env
8c75111 std: Unsafe-wrap OSStr{,ing}::from_encoded_bytes_unchecked
4679f9a std: Unsafe-wrap HashMap::get_many_unchecked_mut
ac0fd27 std: deny(unsafe_op_in_unsafe_fn) but allow sites
f710e38 Add `classify` and related methods for `f16` and `f128`
009660d std: removes logarithms family function edge cases handling for solaris.
3492a6b Auto merge of rust-lang#127728 - matthiaskrgr:rollup-ercdbjd, r=matthiaskrgr
0873299 sys::init is not unsafe on teeos
6c4029a Rollup merge of rust-lang#127592 - tesuji:patch-1, r=Mark-Simulacrum
7cd8086 Auto merge of rust-lang#125935 - madsmtm:merge-os-apple, r=workingjubilee
cfb0556 Merge Apple `std::os` extensions modules into `std::os::darwin`
54435f7 Rollup merge of rust-lang#127704 - workingjubilee:fixup-better-than, r=ChrisDenton
e122949 Auto merge of rust-lang#127706 - workingjubilee:rollup-d07ij30, r=workingjubilee
3033120 Rollup merge of rust-lang#127659 - saethlin:manually-drop-bufwriter, r=joboet
e9eb7de Rollup merge of rust-lang#127446 - zachs18:miri-stdlib-leaks-core-alloc, r=Mark-Simulacrum
3ad2560 Rollup merge of rust-lang#127370 - ChrisDenton:win-sys, r=Mark-Simulacrum
05bf6bc doc: Suggest `str::repeat` over `iter::repeat().take().collect()`
96e8ba7 Fix minor typos in std::process doc on Win argv
6b67c66 Auto merge of rust-lang#126958 - dtolnay:u32char, r=Mark-Simulacrum
591aaaf std::unix::fs: removing, now useless, layers predating macOs 10.10.
94ec6e7 Auto merge of rust-lang#127674 - jhpratt:rollup-0dxy3k7, r=jhpratt
a7c1f60 Rollup merge of rust-lang#127668 - spencer3035:improve-slice-doc, r=jhpratt
1e49e05 Rollup merge of rust-lang#127661 - eduardosm:stabilize-io_slice_advance, r=cuviper
c79e003 Auto merge of rust-lang#127397 - jyn514:multi-thread-panic-hook, r=workingjubilee
206678c Auto merge of rust-lang#126606 - zachs18:patch-2, r=joboet
1bb0350 Updated slice documentation
c8b79dd Use ManuallyDrop in BufWriter::into_parts
6e26e27 Stabilize io_slice_advance
cac6664 Rename the internal `const_strlen` to just `strlen`
39647ab fix interleaved panic output
0476fc4 Rollup merge of rust-lang#127433 - dtolnay:conststrlen, r=workingjubilee
f66bd5f Rollup merge of rust-lang#126827 - the8472:pidfd-spawn, r=workingjubilee
1e5cd21 Rollup merge of rust-lang#124980 - zachs18:rc-allocator, r=Amanieu
949f0d6 Add instability attribute on private const_strlen function
20bfac6 Rollup merge of rust-lang#127422 - greaka:master, r=workingjubilee
f937ef1 Rollup merge of rust-lang#127599 - tgross35:lazy_cell_consume-rename, r=workingjubilee
fde7fd2 Rollup merge of rust-lang#127588 - uweigand:s390x-f16-doctests, r=tgross35
ed47f98 Rollup merge of rust-lang#127572 - tbu-:pr_debug_event_nonpacked, r=jhpratt
e5c8b85 Rollup merge of rust-lang#124599 - estebank:issue-41708, r=wesleywiser
b71b538 Rename `lazy_cell_consume` to `lazy_cell_into_inner`
9efc1cb core: Limit remaining f16 doctests to x86_64 linux
a18fbd0 Rollup merge of rust-lang#127554 - ferrocene:tshepang-add-missing-attribute, r=pietroalbini
e419147 Don't mark `DEBUG_EVENT` struct as `repr(packed)`
4552576 Auto merge of rust-lang#126690 - andyolivares:feature/show_window, r=dtolnay
6f6e343 Rollup merge of rust-lang#127091 - Sky9x:fused-error-sources-iter, r=dtolnay
0d64105 Fixed doc links
4fb7b22 Few changes to doc comments. Added tracking issue number.
fe62f6f Exposing STARTUPINFOW.wShowWindow in CommandExt (show_window function) to control how a new process should display its window (normal, minimized, maximized, etc)
7d20047  do not run test where it cannot run
c5f1c76 Auto merge of rust-lang#127235 - martn3:no-mips-f16, r=tgross35,scottmcm
3fefa04 Rollup merge of rust-lang#127460 - Borgerr:clarify-drop-comment, r=jhpratt
895175a Rollup merge of rust-lang#127355 - aceArt-GmbH:126475, r=oli-obk
57cea32 Rollup merge of rust-lang#120248 - WaffleLapkin:bonk-ptr-object-casts, r=compiler-errors,oli-obk,lnicola
e74955e Attempt to fix CI
e466bf5 Rollup merge of rust-lang#127367 - ChrisDenton:run-sync, r=Nilstrieb
90504f8 Rollup merge of rust-lang#126921 - workingjubilee:outline-va-list, r=Nilstrieb
c6b3f3d Auto merge of rust-lang#127454 - matthiaskrgr:rollup-k3vfen2, r=matthiaskrgr
29d7923 Move/change declaration of `mod exit_guard;`
ecc9025 clarify `sys::unix::fd::FileDesc::drop` comment (rust-lang#66876)
35c5a45 Rollup merge of rust-lang#127447 - RalfJung:once_lock_miri, r=joboet
9f7100d Rollup merge of rust-lang#127354 - nicholasbishop:bishop-sized-doc, r=Nilstrieb
ee06e7d Rollup merge of rust-lang#127297 - the8472:path-new-hash, r=Nilstrieb
2206c6b Rollup merge of rust-lang#127189 - GrigorenkoPV:linkedlist-cursor-list, r=Nilstrieb
41bcc36 Rollup merge of rust-lang#127179 - tgross35:typeid-debug-hex, r=Nilstrieb
7177ac8 once_lock: make test not take as long in Miri
294d87f Remove non-focused memory leak in `std` doctest for Miri.
a86fd0f Specialize `TrustedLen` for `Iterator::unzip()`
5515bba Mitigate focused memory leaks in `core` doctests for Miri.
3a0fe26 Remove non-focused memory leaks in `core` doctests for Miri.
20d6cb3 Mitigate focused memory leaks in `alloc` doctests for Miri.
cac8902 Remove non-focused memory leaks in `alloc` doctests for Miri.
bcdc8e8 Stabilize const_cstr_from_ptr (CStr::from_ptr, CStr::count_bytes)
a48f566 offset_from intrinsic: always allow pointers to point to the same address
9919a83 Mark format! with must_use hint
0907955 as_simd: fix comment to be in line with 507583a (rust-lang#121201)
5569ece Rollup merge of rust-lang#127275 - RalfJung:offset-from-isize-min, r=Amanieu
2337ab5 Rollup merge of rust-lang#125751 - pitaj:new_range_api, r=jhpratt
ad4fde6 Rollup merge of rust-lang#127363 - GuillaumeGomez:improve-fmt-code-readability, r=Amanieu
3eeca5f Rollup merge of rust-lang#127107 - mu001999-contrib:dead/enhance-2, r=pnkfelix
1b5e5ac Rollup merge of rust-lang#123600 - tisonkun:path_with_extension, r=dtolnay
5e9d445 Attempt to fix CI
d8965d3 add `new_range_api` for RFC 3550
ca0f659 Move exit guard from sys::common::exit_guard to sys::exit_guard.
cf300a7 Update library/std/src/sys/pal/common/exit_guard.rs
ba4c71a add unit tests for extra extension feature
55fc20b update comments
6b7a259 Add experimental raw-dylib feature to std
c452e62 Use windows_targets macro for alloc
521c81a Run alloc sync tests
2fcdebb Improve readability of some fmt code examples
625bcc4 Rollup merge of rust-lang#127320 - ChrisDenton:win-sys, r=Mark-Simulacrum
f8caf5f Rollup merge of rust-lang#127214 - bjorn3:miri_native_unwind, r=oli-obk
1862054 Describe Sized requirements for mem::offset_of
e26c881 impl FusedIterator and a size hint for the error sources iter
8f1c664 core: erase redundant stability attrs in va_list
60c33a5 library: outline VaList into ffi::va_list
03d11c2 Auto merge of rust-lang#126171 - RalfJung:simd_bitmask_multibyte, r=workingjubilee
297850a Add more checks for pointers with vtable meta
f58a3d6 Improve dead code analysis
515bd30 Add comments to windows_targets.rs
89d2de0 Update windows-bindgen to 0.58.0
0860a04 also remove redundant requirements from offset()
6f80604 offset_from: "the difference must fit in an isize" is a corollary
de4f5c2 Rollup merge of rust-lang#127303 - cuishuang:master, r=jhpratt
56c73c3 Rollup merge of rust-lang#127195 - biabbas:vxworks_cleanup, r=jhpratt
5dfdef7 Rollup merge of rust-lang#126792 - wooden-worm:master, r=Mark-Simulacrum
4df2059 chore: remove repeat words
acbefbb impl PathBuf::add_extension and Path::with_added_extension
13d5a42 Auto merge of rust-lang#127226 - mat-1:optimize-siphash-round, r=nnethercote
ed3d487 stir the hash state a little to avoid prefix collisions
5ca124f Add more test cases for path comparisons
33bc557 Add test case demonstrating equality of paths "foo/bar" and "foobar"
079f999 Move unique_thread_exit call to lang_start_internal so it is not in a generic function, and wrap it in `catch_unwind`
47d0cbc Remove Miri special-case
596be7e Use pthread_t instead of numeric thread id
2e90f6f Use libc::pause instead of std::thread::park in wait-for-exit loop
1fd23e8 core: Limit four f16 doctests to x86_64 linux
e6f15c5 std: Set has_reliable_f16 to false for MIPS targets in build.rs
67535b6 library/std/build.rs: "powerpc64le" is not a target_arch
5b0d82f Rollup merge of rust-lang#127204 - dimpolo:stabilize_atomic_bool_fetch_not, r=jhpratt
b184a84 Rollup merge of rust-lang#123588 - tgross35:stabilize-assert_unchecked, r=dtolnay
2a81053 Fall back on remove dir implementation for vxworks
a8b6d0a Rollup merge of rust-lang#127230 - hattizai:patch01, r=saethlin
4d7cbb2 chore: remove duplicate words
645e9f2 Optimize SipHash by reordering compress instructions
c5ab1f0 Rollup merge of rust-lang#127128 - elomatreb:elomatreb/stabilize-duration_abs_diff, r=joboet
f090672 Rollup merge of rust-lang#126732 - StackOverflowExcept1on:master, r=m-ou-se
1dc4f05 Use the native unwind function in miri where possible
4fff335 Avoid MIR bloat in inlining
4385efd Stabilize atomic_bool_fetch_not
6c3359c Rollup merge of rust-lang#127182 - danielhuang:patch-4, r=Nilstrieb
a0a438a Remove unqualified import io:: Error for vxworks as all Error references are qualified in process_vxworks.rs
2a65e9f Auto merge of rust-lang#127026 - Urgau:cleanup-bootstrap-check-cfg, r=Kobzol
bba2200 LinkedList's Cursor: method to get a ref to the cursor's list
40a9be9 Update ip_addr.rs
986dbd1 Print `TypeId` as hex for debugging
f27723e Rollup merge of rust-lang#127069 - Sky9x:fmt-pointer-use-addr, r=Nilstrieb
b068fce Rollup merge of rust-lang#126895 - betelgeuse:improve_simd_gather_documentation, r=Amanieu
a6b22e9 Rollup merge of rust-lang#127134 - tgross35:typeid-debug, r=Nilstrieb
7f0bb45 Rollup merge of rust-lang#126906 - GrigorenkoPV:fixme-split_at_first, r=Mark-Simulacrum
b0feb54 Rollup merge of rust-lang#126705 - safinaskar:panic, r=Mark-Simulacrum
b8977f5 Auto merge of rust-lang#127133 - matthiaskrgr:rollup-jxkp3yf, r=matthiaskrgr
affa2f9 Print `TypeId` as a `u128` for `Debug`
05a472c Rollup merge of rust-lang#127122 - TDecking:div_ceil, r=Nilstrieb
9b3a511 Auto merge of rust-lang#120639 - fee1-dead-contrib:new-effects-desugaring, r=oli-obk
f96a321 Stabilize `duration_abs_diff`
bf9096f small correction to fmt::Pointer impl
171f5db Auto merge of rust-lang#127121 - GuillaumeGomez:rollup-xjjjckn, r=GuillaumeGomez
50a6646 Remove uneccessary condition in `div_ceil`
7914389 Updated docs on `#[panic_handler]` in `library/core/src/lib.rs`
1858bdc Rollup merge of rust-lang#127073 - Sky9x:unnecessary-seqcst, r=Nilstrieb
aaed209 Rollup merge of rust-lang#127072 - Sky9x:docs-includes-vs-does-include, r=scottmcm
e5a577d Auto merge of rust-lang#127119 - RalfJung:miri-sync, r=RalfJung
77a5b51 Rollup merge of rust-lang#126953 - joboet:lazy_key, r=jhpratt
8641f6a Merge from rustc
402992c Rollup merge of rust-lang#127071 - Sky9x:remove-ptr-to-from-bits, r=scottmcm
0a2d8e4 Rollup merge of rust-lang#127070 - Sky9x:unit-const-param-ty, r=BoxyUwU
663f3d5 Rollup merge of rust-lang#127055 - shepmaster:hash-finish-must-use, r=dtolnay
729a10a address review comments
db228b8 general fixups and turn `TODO`s into `FIXME`s
47492c9 Implement `Min` trait in new solver
cc4a029 implement new effects desugaring
d6fadf5 std: add safety comments
8c3c7dc Rollup merge of rust-lang#126970 - DaniPopes:simplify-str-clone_into, r=cuviper
ae98528 Rollup merge of rust-lang#126956 - joboet:fmt_no_extern_ty, r=RalfJung
652f0b8 Merge from rustc
48dc678 Remove unnecessary SeqCst in `impl fmt::Pointer for AtomicPtr`
e6e5e84 docs: say "includes" instead of "does include"
a722d39 Remove (deprecated & unstable) {to,from}_bits pointer methods
2ed9c9f add () to the marker_impls macro for ConstParamTy
fdfe014 Mark `Hasher::finish` as #[must_use]
2bd2069 fix least significant digits of f128 associated constants
8db57c2 core: improve comment
1f8c8f4 Cleanup bootstrap check-cfg
6c38c60 Rollup merge of rust-lang#126980 - Borgerr:fix-extendfromslice-check, r=workingjubilee
a2dc9b5 Rollup merge of rust-lang#126929 - nnethercote:rm-__rust_force_expr, r=oli-obk
cf231e8 Merge from rustc
a8b311e Auto merge of rust-lang#126608 - tgross35:f16-f128-library, r=Mark-Simulacrum
4788a93 std: test a variety of ways to extend a Wtf8Buf
57c2de8 set self.is_known_utf8 to false in extend_from_slice
c14a130 Rollup merge of rust-lang#126879 - the8472:next-chunk-filter-drop, r=cuviper
f6fdef3 core: avoid `extern` types in formatting infrastructure
43a865a fix UI test, simplify error message
ff33a66 regression test for leaks in the the Filter::next_chunk implementation
f90972a add comments explaining optimizations for Filter::next_chunk
4039a7f fix Drop items getting leaked in Filter::next_chunk
0351c53 Simplify `str::clone_into`
5aedb8a Rollup merge of rust-lang#126946 - cyrgani:patch-1, r=compiler-errors
5664da3 Rollup merge of rust-lang#126927 - workingjubilee:vaargsafe-is-unsafe, r=joboet
9273373 Rollup merge of rust-lang#126885 - Borgerr:rm_internal_pathbuf_asmutvec, r=workingjubilee
46074aa Rollup merge of rust-lang#126302 - mu001999-contrib:ignore/default, r=michaelwoerister
0fe5362 Stabilize const unchecked conversion from u32 to char
9dcaa15 std: separate TLS key creation from TLS access
5d08a54 Detect unused structs which derived Default
e6c45e4 `PathBuf::as_mut_vec` removed and verified for UEFI and Windows platforms rust-lang#126333
7cec6ef remove references to `PathBuf::as_mut_vec` in `PathBuf::_set_extension`
37f78f4 inner truncate methods for UEFI platforms
cfb8021 rust-lang#126333 remove `PathBuf::as_mut_vec` reference at top of `PathBuf::_push`
3edb521 simd_bitmask intrinsic: add a non-power-of-2 multi-byte example
2ddf794 Add missing slash in const_eval_select doc comment
19cfdb2 Add tests for `f16` and `f128`
561daff Add more `f16` and `f128` library functions and constants
6cb3d34 Add doctests to existing `f16` and `f128` functions
b0e0503 Add build.rs config for reliable `f16` and `f128`
028026b Remove `__rust_force_expr`.
1069a68 core: VaArgSafe is an unsafe trait
a451b2a Auto merge of rust-lang#126852 - scottmcm:more-checked-math-tweaks, r=Amanieu
17d03b9 Check that we get somewhat sane PIDs when spawning with pidfds
4c9a96e more fine-grained feature-detection for pidfd spawning
bf06e43 document safety properties of the internal Process::new constructor
9212236 use pidfd_spawn for faster process creation when pidfds are requested
4815f29 document the cvt methods
1bd207e Rollup merge of rust-lang#126904 - GrigorenkoPV:nonzero-fixme, r=joboet
2676918 Rollup merge of rust-lang#125575 - dingxiangfei2009:derive-smart-ptr, r=davidtwco
9dcffa5 Rollup merge of rust-lang#125082 - kpreid:const-uninit, r=dtolnay
cf34f71 Replace `MaybeUninit::uninit_array()` with array repeat expression.
e51d8a2 Auto merge of rust-lang#126523 - joboet:the_great_big_tls_refactor, r=Mark-Simulacrum
2b8c7a3 Small fixme in core now that split_first has no codegen issues
532304b Small fixme in core now that NonZero is generic
5ae0378 std: fix wasm builds
ae08c58 Rollup merge of rust-lang#126213 - zachs18:atomicbool-u8-i8-from-ptr-alignment, r=Nilstrieb
071e80d Fix simd_gather documentation
0c4a661 wasm64 build with target-feature=+simd128,+atomics
36a20f7 Reword docs for `f32` and `f64`
6839ec5 Extract repeated constants from `f32` and `f64` source
c26bd79 Rollup merge of rust-lang#126854 - devnexen:std_unix_os_fallback_upd, r=Mark-Simulacrum
828e528 Rollup merge of rust-lang#126807 - devnexen:copy_file_macos_simpl, r=Mark-Simulacrum
e4bc79d Also get `add nuw` from `uN::checked_add`
7c83a04 SmartPointer derive-macro
f0b95fc fix build
12ec5b7 Rollup merge of rust-lang#126783 - tguichaoua:fix_tcplistener_into_incoming_issue_number, r=workingjubilee
eb265d0 std::unix::os::home_dir: fallback's optimisation.
a48f3d6 Auto merge of rust-lang#126838 - matthiaskrgr:rollup-qkop22o, r=matthiaskrgr
ec8af4b Rollup merge of rust-lang#126552 - fee1-dead-contrib:rmfx, r=compiler-errors
6d6ba92 Rollup merge of rust-lang#126140 - eduardosm:stabilize-fs_try_exists, r=Amanieu
e1edea8 Auto merge of rust-lang#116113 - kpreid:arcmut, r=dtolnay
49d4fdb Generalize `{Rc,Arc}::make_mut()` to unsized types.
5ac719e Replace `WriteCloneIntoRaw` with `CloneToUninit`.
a4ca461 Add `core::clone::CloneToUninit`.
7836843 Auto merge of rust-lang#126750 - scottmcm:less-unlikely, r=jhpratt
934e728 Auto merge of rust-lang#124101 - the8472:pidfd-methods, r=cuviper
c2ec99b to extract a pidfd we must consume the child
f7cf777 Add PidFd::{kill, wait, try_wait}
d688595 std::unix::fs: copy simplification for apple.
bb602cf Auto merge of rust-lang#125853 - tesuji:promote-fail-fast, r=cjgillot
1f17936 update intrinsic const param counting
5e7ce0b Remove `feature(effects)` from the standard library
8902c17 Auto merge of rust-lang#126781 - matthiaskrgr:rollup-5u4pens, r=matthiaskrgr
54eaed7 fix issue number
2e01ae3 Rollup merge of rust-lang#126613 - tgross35:log-test-update, r=cuviper
306d7bf Stop using `unlikely` in `strict_*` methods
a8ab1ce [GVN] Add tests for generic pointees with PtrMetadata
a272844 Don't perform mitigation for thread-unsafe libc::exit under Miri.
5035a17 fix rustdoc URL
1530977 On `target_os = "linux"`, ensure that only one Rust thread calls `libc::exit` or returns from `main`.
7e940ba Auto merge of rust-lang#126578 - scottmcm:inlining-bonuses-too, r=davidtwco
9a945fd Auto merge of rust-lang#124032 - Voultapher:a-new-sort, r=thomcc
dbaf524 Rollup merge of rust-lang#126737 - fee1-dead-contrib:rm-const-closures, r=compiler-errors
0f6922d Fix wrong big O star bracing in the doc comments
7bf7f57 Remove `feature(const_closures)` from libcore
b4e2e4a Auto merge of rust-lang#126736 - matthiaskrgr:rollup-rb20oe3, r=matthiaskrgr
0829ab8 Rollup merge of rust-lang#126717 - nnethercote:rustfmt-use-pre-cleanups, r=jieyouxu
f1c9c80 Rollup merge of rust-lang#126711 - GKFX:const-option-as-slice, r=oli-obk
e057232 Auto merge of rust-lang#116088 - nbdd0121:unwind, r=Amanieu,RalfJung
13ea648 Stabilize `PanicInfo::message()` and `PanicMessage`
b6a3858 Rollup merge of rust-lang#126703 - the8472:on-blackbox-crypto-use, r=scottmcm
847726d Shrink some slice iterator MIR
1ba2fa4 Stabilize `hint_assert_unchecked`
9d0041c Update documentation for `hint::assert_unchecked`
e3e84a7 Add blank lines after module-level `//` comments.
36ad0db Add blank lines after module-level `//!` comments.
4e67110 Convert some module-level `//` and `///` comments to `//!`.
669d6fc Make Option::as_[mut_]slice const
4ae781c reword the hint::blackbox non-guarantees
dd7c901 core: add tracking issue for `array::repeat`
5ddeaca core: simplify implementation of `array::repeat`, address other nits
62f7a4e core: implement `UncheckedIterator` for `RepeatN`
387fd1f core: implement `array::repeat`
3fc18d0 Add a hack to prevent proc_macro misopt in CI
a95938d Stabilise c_unwind
2a5e5b8 Rollup merge of rust-lang#125787 - Oneirical:infinite-test-a-novel, r=jieyouxu
227994d try implementing suggestions
78867ab run_make_support nm implementation + bin-emit-no-symbols rmake rewrite
76e61bf Replace `move||` with `move ||` in `compiler/` and `library/`
13a31b6 Auto merge of rust-lang#126330 - m-ou-se:panic-message-type, r=Amanieu
42802a3 Print the tested value in int_log tests
ea1ab74 Add missing CopyMarker impl
384c205 Revert panic_safe test changes
ca458ba Add PanicMessage type for PanicInfo::message().
2238945 Add tracking issue to async_drop API
0b3227b std: rename module for clarity
2b9a4f3 std: update TLS module documentation
00d4964 std: use the `c_int` from `core::ffi` instead of `libc`
bd3b9ec std: simplify `#[cfg]`s for TLS
78eaad5 Fix unintended regression for Freeze + Copy types
8cd20cb Auto merge of rust-lang#126569 - jieyouxu:rollup-1uvkb2y, r=jieyouxu
c1acd7a Rollup merge of rust-lang#126531 - slanterns:error_provider, r=workingjubilee
cd1c998 Rollup merge of rust-lang#126468 - RalfJung:euclid, r=Mark-Simulacrum
2730879 Rollup merge of rust-lang#126346 - hermit-os:fd, r=Amanieu
ebbce69 Rollup merge of rust-lang#126288 - x4exr:patch-1, r=dtolnay
4aa43c7 Auto merge of rust-lang#125720 - folkertdev:optimize_for_size-ptr-rotate, r=Amanieu
7912329 doc: Added commas where needed
48e1578 Fix doc-link issue
489dfce Remove reliance on const_trait in sort implementations
89b5784 std: move `sys_common::backtrace` to `sys`
90dbe22 use rustc-dep-of-std in panic_unwind
6832ad3 Rollup merge of rust-lang#126539 - lukaslueg:patch-1, r=jhpratt
04e46c2 Rollup merge of rust-lang#125112 - tbu-:pr_create_dir_all_empty, r=dtolnay
e77b474 Update `Arc::try_unwrap()` docs
83c530f Apply review comments
ae7f43e Auto merge of rust-lang#126299 - scottmcm:tune-sliceindex-ubchecks, r=saethlin
339f266 Redo SliceIndex implementations
2388743 update comment
4cc1c37 Rollup merge of rust-lang#126229 - ChrisDenton:bindgen, r=Mark-Simulacrum
b40c54b std: refactor the TLS implementation
7e3c4f8 Auto merge of rust-lang#126518 - matthiaskrgr:rollup-wb70rzq, r=matthiaskrgr
2678593 std: suggest OnceLock over Once
b509ed2 Polish `std::path::absolute` documentation.
c3c1757 Auto merge of rust-lang#126473 - matthiaskrgr:rollup-8w2xm09, r=matthiaskrgr
a135342 Rollup merge of rust-lang#126285 - kpreid:unique-rc, r=dtolnay
7fafb6d Rollup merge of rust-lang#126266 - tbu-:pr_doc_alloc_default_system, r=jhpratt
afee9f5 Rollup merge of rust-lang#126135 - hermit-os:fuse, r=jhpratt
4a32b4b Rollup merge of rust-lang#123769 - dtolnay:literal, r=fee1-dead
3909d51 div_euclid, rem_euclid: clarify/extend documentation
ca52a2c Rollup merge of rust-lang#126351 - devnexen:to_sol11_upd, r=ChrisDenton
369fa55 Rollup merge of rust-lang#126402 - firefighterduck:fix-unsafe-precon-copy, r=Nilstrieb
2acb995 Rollup merge of rust-lang#126390 - Kriskras99:master, r=Nilstrieb
b3c1dcb Rollup merge of rust-lang#126360 - compiler-errors:uplift-structural-traits, r=lcnr
bdb9aa2 Rollup merge of rust-lang#123726 - jieyouxu:command-new-docs, r=Nilstrieb
307d1af Remove superfluous escaping from byte, byte str, and c str literals
78d94ee LangItem-ify Coroutine trait in solvers
891f00c fix wrong assert_unsafe_precondition message for core::ptr::copy
9adf702 Rollup merge of rust-lang#126384 - RalfJung:is_none_or, r=workingjubilee
02cb1e9 Rollup merge of rust-lang#126347 - slanterns:try_simplify, r=scottmcm
fa2a54a Fix wording in {checked_}next_power_of_two
3ef894f add tracking issue for is_none_or
a5fe19d std::unix::fs::link using direct linkat call for Solaris and macOs.
9921cd2 Rollup merge of rust-lang#126328 - RalfJung:is_none_or, r=workingjubilee
93583a6 Simplify `try_*` on `Iterator`
47090b1 export std::os::fd module on HermitOS
17c90d8 Auto merge of rust-lang#126273 - pietroalbini:pa-bootstrap-update, r=Mark-Simulacrum
b482e06 add is_none_or
027c82e Rollup merge of rust-lang#126322 - m-ou-se:panicinfo-and-panicinfo-2, r=RalfJung
db03ec6 Rollup merge of rust-lang#126242 - yaahc:simplify-provider, r=jhpratt
956efde Rollup merge of rust-lang#126039 - dpaoliello:arm64ecbuild, r=davidtwco
3acb41f Fix deprecated version.
bc5e618 Update doc comment on PanicInfo::message().
249d63e Use payload_as_str instead of two downcasts.
15677e9 Fix deprecation version.
a239d5b Clarify doc comment.
209f8c8 Auto merge of rust-lang#126319 - workingjubilee:rollup-lendnud, r=workingjubilee
6ec98e7 Rollup merge of rust-lang#126305 - workingjubilee:fix-os-string-to-string-utf8-invariant, r=joboet
80467da Rollup merge of rust-lang#126287 - nnethercote:reformat-cranelift-patch, r=bjorn3
5760a4e Rollup merge of rust-lang#126281 - ChrisDenton:env, r=jhpratt
439c2ae Rollup merge of rust-lang#126249 - workingjubilee:simplify-try-map-signature, r=scottmcm
23e3dbf Rollup merge of rust-lang#126210 - lolbinarycat:ptr_doctest_assert, r=workingjubilee
d469394 Rollup merge of rust-lang#123374 - mgeier:doc-slice-from-raw-parts, r=scottmcm
63fe960 Require any function with a tait in its signature to actually constrain a hidden type
e1d73c2 Revert "Rollup merge of rust-lang#125362 - joboet:tait_hack, r=Nilstrieb"
382ed52 Make PathBuf less Ok with adding UTF-16 then `into_string`
548e7a4 Update a cranelift patch file for formatting changes.
8ccbe9e `UniqueRc`: support allocators and `T: ?Sized`.
b3dcee6 set_env: State the conclusion upfront
f56c023 Rename `std::fs::try_exists` to  `std::fs::exists` and stabilize fs_try_exists
c16d8b1 Unify guarantees about the default allocator
d8fe589 remove cfg(bootstrap)
a2ff49b replace version placeholder
f72e4a9 Formatting.
0503ca7 Bump deprecation of std's PanicInfo alias to 1.82.0.
fea6b03 Add PanicHookInfo::payload_as_str().
0c8a9e0 Fix display of panic message in recursive panic.
2f85702 Mention core's PanicInfo in error.md.
ad0667f Add note on panic payload type.
518722e Downcast panic payload to String too in example.
c4dea81 Move deprecation of std::panic::PanicInfo to 1.80.0.
143e4c4 Fix deprecation version.
c6749ae Rename std::panic::PanicInfo to PanicHookInfo.
db2e055 Formatting.
51f20ac Fix invalid markdown/html.
d4b7304 Reorder body of begin_panic for consistency.
373fb60 Impl Display for PanicPayload to simplify things.
224d45c Use unnamed lifetimes for [..]Payload impl blocks.
cf984e0 Move downcasting panic payload to str to a function.
a18eeac Mark some PanicInfo methods as #[inline] for consistency.
47f359b Remove std::panic::PanicInfo::internal_constructor+set_payload.
701d6a2 Remove core::panic::PanicInfo::internal_constructor.
cca865d Update doc comment about core::panicking.
221a90c Fix doc link.
d6658a5 Add core::panic::PanicInfo::payload() for compatibility.
ca0bfeb Document difference between core and std's PanicInfo.
702405e Split core's PanicInfo and std's PanicInfo.
019e01f Skip fast path for dec2flt when optimize_for_size
483f641 Simplify `[T; N]::try_map` signature
8b6f468 Simplify provider api to improve llvm ir
c8170e6 Rollup merge of rust-lang#126212 - SteveLauC:fix/haiku, r=joboet
58bb5cf Rollup merge of rust-lang#126191 - ivan-shrimp:nonzero_doc, r=scottmcm
d2f8ddf Bump windows-bindgen to 0.57
02bf152 Clarify `Command::new` behavior if passed programs with arguments
e17d6b9 Remove some unused crate dependencies.
5840184 Update docs for AtomicU8/I8.
8791549 fix: build on haiku
263861f Update safety docs for AtomicBool::from_ptr.
e25ae61 docs(core): make more const_ptr doctests assert instead of printing
cf9de23 Auto merge of rust-lang#126205 - jieyouxu:rollup-s64z5ng, r=jieyouxu
c5da756 Rollup merge of rust-lang#126194 - ChrisDenton:winerror, r=Mark-Simulacrum
c4bd74c Rollup merge of rust-lang#125253 - sunsided:feature/FRAC_1_SQRT_PI, r=Mark-Simulacrum
c9c5d8f Auto merge of rust-lang#126193 - RalfJung:miri-sync, r=RalfJung
e39299d Migrate more things to WinError
0df0a38 fix `NonZero` doctest inconsistencies
818933d Rollup merge of rust-lang#126168 - devnexen:current_exe_haiku_simpl, r=ChrisDenton
a9bd569 Rollup merge of rust-lang#126146 - devnexen:signal_fbsd, r=ChrisDenton
05812a0 Merge from rustc
56bdaf3 std::unix::os current_exe implementation simplification for haiku.
e6c378f Auto merge of rust-lang#125966 - schvv31n:impl_os_string_pathbuf_leak, r=workingjubilee
e000ecb std::unix::process adding few specific freebsd signals to be able to id.
67454f5 Rollup merge of rust-lang#126138 - wbk:patch-1, r=lqd
ca932c8 Rollup merge of rust-lang#125998 - devnexen:get_mode_illumos, r=Nilstrieb
397e9cb Rollup merge of rust-lang#125951 - slanterns:error_in_core_stabilization, r=Amanieu
4655eca Fix typo in docs for std::pin
bb2e2d9 add HermitOS support of vectored read/write operations
dd7ccb7 Rollup merge of rust-lang#126089 - wutchzone:option_take_if, r=scottmcm
199da77 Rollup merge of rust-lang#126030 - ChrisDenton:update-wingen-readme, r=Mark-Simulacrum
8a4b11a Rollup merge of rust-lang#124012 - slanterns:as_slice_stabilize, r=BurntSushi
05a92c2 Auto merge of rust-lang#126110 - workingjubilee:backtrace-0.3.73, r=workingjubilee
cd73cbe Update backtrace to 0.3.73
c6e53ce Merge from rustc
3b60335 Rollup merge of rust-lang#125606 - diondokter:opt-size-int-fmt, r=cuviper
7014731 fix doc comments about `error_generic_member_access`
3f48168 Stabilize `error_in_core`
20f15f4 fixed memory leaks in PathBuf::leak & OsString::leak tests
fa66a61 Rollup merge of rust-lang#126096 - c410-f3r:tests-tests-tests, r=jhpratt
5736944 [RFC-2011] Allow `core_intrinsics` when activated
dfddd7e Stabilize Option::take_if
051c6c6 Raise `DEFAULT_MIN_STACK_SIZE` to at least 64KiB
29932f3 Auto merge of rust-lang#126038 - matthiaskrgr:rollup-h4rm3x2, r=matthiaskrgr
149a237 Promote `arm64ec-pc-windows-msvc` to tier 2
4a81c12 Rollup merge of rust-lang#126032 - ChrisDenton:update-docs, r=joboet
7450cf0 Rollup merge of rust-lang#125800 - fortanix:raoul/rte-99-fix_mut_static_task_queue, r=jethrogb
ed91d55 Rollup merge of rust-lang#125940 - devnexen:unix_fs_netbsd_get_path, r=cuviper
bf7430f Update description of the `IsTerminal` example
91c8b23 Update `./x fmt` command
1632165 Rollup merge of rust-lang#125995 - kpreid:const-uninit-stable, r=Nilstrieb
2c5f1ac Rollup merge of rust-lang#125982 - xTachyon:fix-linked-list, r=jhpratt
80cee25 Rollup merge of rust-lang#123168 - joshtriplett:size-of-prelude, r=Amanieu
28dc012 std::unix::fs::get_mode implementation for illumos/solaris.
14a6f29 Use inline const instead of unsafe to implement `MaybeUninit::uninit_array()`.
a2c3406 Use inline const instead of unsafe to construct arrays in `MaybeUninit` examples.
f8ee355 Rollup merge of rust-lang#125932 - schvv31n:patch-1, r=lqd
49dad46 Rollup merge of rust-lang#125927 - ferrocene:lw-alloc-unwind-test, r=pietroalbini
e38c13a Rollup merge of rust-lang#125696 - workingjubilee:please-dont-say-you-are-lazy, r=Nilstrieb
1764910 Rollup merge of rust-lang#106186 - rossmacarthur:ft/iter-chain, r=Amanieu
fbb5246 Make deleting on LinkedList aware of the allocator
85aa4b6 impl OsString::leak & PathBuf::leak
b19dd14 Add function `core::iter::chain`
25245bb Rollup merge of rust-lang#125919 - tbu-:pr_fix_typo, r=lqd
a415ddd Rollup merge of rust-lang#125504 - mqudsi:once_nominal, r=cuviper
ea7e91c Let compiler auto impl `Send` for `Task`
55f3d10 Store `Task::p` as `dyn FnOnce() + Send`
92b604f Pass function for `Thread` as `Send` to `Thread::imp`
175ad22 Auto merge of rust-lang#125525 - joboet:tls_accessor, r=cuviper
31e0022 std::unix::fs::get_path: using fcntl codepath for netbsd instead.
82e24ad Fix typo in the docs of `HashMap::raw_entry_mut`
fcc07af Ignore `vec_deque_alloc_error::test_shrink_to_unwind` test on non-unwind targets
6ef46b3 Auto merge of rust-lang#125912 - nnethercote:rustfmt-tests-mir-opt, r=oli-obk
7927138 Remove stray "this"
06d9b0e Add "OnceList" example to motivate OnceLock
6d001c5 Move first OnceLock example to LazyLock
7e47256 Differ LazyLock vs. OnceLock in std::sync overview
a198721 Explain LazyCell in core::cell overview
ae5598a Reformat `mir!` macro invocations to use braces.
494f05c Rollup merge of rust-lang#125898 - RalfJung:typo, r=Nilstrieb
7881d33 Rollup merge of rust-lang#125884 - Rua:integer_sign_cast, r=Mark-Simulacrum
380d9a3 Rollup merge of rust-lang#121062 - RustyYato:f32-midpoint, r=the8472
81b9e26 Wording of the documentation
1c707b6 typo: depending from -> on
fe5adb9 Auto merge of rust-lang#125577 - devnexen:netbsd_stack_min, r=joboet
876458e Implement feature `integer_sign_cast`
e929c7f Change f32::midpoint to upcast to f64
cd04000 Auto merge of rust-lang#124294 - tspiteri:ilog-first-iter, r=the8472
7f0b19d stablize `const_binary_heap_constructor` & create an unstable feature `const_binary_heap_new_in` for `BinaryHeap::new_in`
5c2e274 Rollup merge of rust-lang#125730 - mu001999-contrib:clippy-fix, r=oli-obk
9fe1803 Auto merge of rust-lang#124662 - zetanumbers:needs_async_drop, r=oli-obk
8943103 Avoid `mut` and simplify initialization of `TASK_QUEUE`
ba98164 Auto merge of rust-lang#124636 - tbu-:pr_env_unsafe, r=petrochenkov
bbaaa79 Rollup merge of rust-lang#125746 - jmillikin:duration-from-weeks-typo, r=lqd
1329a62 Rollup merge of rust-lang#125739 - RalfJung:drop-in-place-docs, r=workingjubilee
8883bcf Rollup merge of rust-lang#125342 - tbu-:pr_doc_write, r=ChrisDenton
14d5dcb explain what the open questions are, and add a Miri test for that
6f01ba7 Apply x clippy --fix and x fmt
c9c0713 Fix copy-paste error in `Duration::from_weeks` panic message.
e935223 Rollup merge of rust-lang#125733 - compiler-errors:async-fn-assoc-item, r=fmease
4feb881 Elaborate about modifying env vars in multi-threaded programs
2500719 Add note about safety of `std::env::set_var` on Windows
c4b1ff8 Make `std::env::{set_var, remove_var}` unsafe in edition 2024
07d3009 drop_in_place: weaken the claim of equivalence with drop(ptr.read())
99eabb4 Add lang item for AsyncFnKindHelper::Upvars
a8f468f Add lang item for Future::Output
2e1896e Add lang items for AsyncFn's associated types
d82378a [ACP 362] genericize `ptr::from_raw_parts`
619e33b Add FRAC_1_SQRT_2PI doc alias to FRAC_1_SQRT_TAU
1265244 make `ptr::rotate` smaller when using `optimize_for_size`
bb6d4eb Add safety comment to fix tidy
c8b699c Optimize async drop glue for some old types
0444ab8 Add FRAC_1_SQRT_2PI constant to f16/f32/f64/f128
1aaf0a9 Rollup merge of rust-lang#125226 - madsmtm:fix-mac-catalyst-tests, r=workingjubilee
565dce2 Rollup merge of rust-lang#124251 - scottmcm:unop-ptr-metadata, r=oli-obk
a4025eb Add custom mir support for `PtrMetadata`
87b9f24 Add an intrinsic for `ptr::metadata`
914d2c0 Rollup merge of rust-lang#125637 - nnethercote:rustfmt-fixes, r=GuillaumeGomez
3170156 Make more of the test suite run on Mac Catalyst
9753338 Disable stack overflow handler tests on iOS-like platforms
3548389 Don't format `tests/run-make/*/rmake.rs`.
6fcf130 Rollup merge of rust-lang#125647 - tspiteri:track-lazy_cell_consume, r=workingjubilee
385e1b8 Rollup merge of rust-lang#125551 - clarfonthey:ip-bits, r=jhpratt
457f5ee update tracking issue for lazy_cell_consume
893db81 Auto merge of rust-lang#125636 - workingjubilee:bump-backtrace-0.3.72, r=workingjubilee
6785858 Sync libstd deps with backtrace
b214872 Bump backtrace to 0.3.72
0ef7706 Auto merge of rust-lang#125609 - diondokter:opt-size-char-count, r=thomcc
3578f42 Rollup merge of rust-lang#124870 - Lokathor:update-result-docs, r=dtolnay
d4fb66b Always use the general case char count
1e8098b Size optimize int formatting
a74509c Rollup merge of rust-lang#125559 - scottmcm:simplify-shift-ubcheck, r=workingjubilee
bc346a0 Auto merge of rust-lang#122079 - tbu-:pr_copy_file_range_probe, r=the8472
fdcee4d std::pal::unix::thread fetching min stack size on netbsd.
d14171d Auto merge of rust-lang#125574 - matthiaskrgr:rollup-1oljoup, r=matthiaskrgr
3e545bc Rollup merge of rust-lang#125571 - tesuji:dummy-pi, r=Nilstrieb
8409442 Rollup merge of rust-lang#125561 - Cyborus04:stabilize-slice-flatten, r=scottmcm
8981ee4 Auto merge of rust-lang#125570 - tesuji:stdout-handle, r=Nilstrieb
addaaed f32: use constants instead of reassigning a dummy value as PI
8a6d10d use proper name instead of magic number
64671fa Stabilize `slice_flatten`
4014081 Auto merge of rust-lang#125070 - tbu-:pr_set_extension_panic, r=jhpratt
f54c557 Auto merge of rust-lang#125518 - saethlin:check-arguments-new-in-const, r=joboet
a4bac2b It seems that anchor names are implicitly all lowercase
7cddfd4 Simplify the `unchecked_sh[lr]` ub-checks a bit
805f56b Fix URL target, it's in the module not the type.
3b77f19 github showed that weird.
65726c0 correct for copy paste errors when fixing wrapping.
613145f Resolve rust-lang#124870 (comment)
9677b70 revert to the inconsistent paragraph wrapping.
bf3ca98 Rollup merge of rust-lang#124667 - newpavlov:stabilize_div_duration, r=jhpratt
4af28c4 Rollup merge of rust-lang#123803 - Sp00ph:shrink_to_fix, r=Mark-Simulacrum
79e1daf Rollup merge of rust-lang#122986 - taiki-e:aix-c-char, r=Mark-Simulacrum
0b13a6c Rollup merge of rust-lang#121377 - pitaj:lazy_cell_fn_pointer, r=dtolnay
b1ac7da Stabilise ip_bits feature
23bb5bc Auto merge of rust-lang#121571 - clarfonthey:unchecked-math-preconditions, r=saethlin
c11b36a Rollup merge of rust-lang#125527 - programmerjake:patch-2, r=workingjubilee
d6812d5 Rollup merge of rust-lang#125498 - zmodem:avx512er, r=workingjubilee
f52291b Rollup merge of rust-lang#125478 - Urgau:check-cfg-config-bump-stage0, r=Mark-Simulacrum
38dcab9 Rollup merge of rust-lang#125271 - RalfJung:posix_memalign, r=workingjubilee
29a1b3b Move the checks for Arguments constructors to inline const
5257f3f Add manual Sync impl for ReentrantLockGuard
078095a std: make TLS accessors closures that return pointers
567096d Rollup merge of rust-lang#125497 - meesfrensel:patch-1, r=calebzulawski
dd828cf Stop using the avx512er and avx512pf x86 target features
749b376 Change pedantically incorrect OnceCell/OnceLock wording
2b1602a Fix some SIMD intrinsics documentation
59b5617 Remove now outdated comment since we bumped stage0
6d1cdb5 Add assert_unsafe_precondition to unchecked_{add,sub,neg,mul,shl,shr} methods
ce29159 Simplify environment variable examples
8fa3f60 Document behavior of `create_dir_all` wrt. empty path
dd196e7 Document platform-specifics for `Read` and `Write` of `File`
a71d9d9 Fix c_char on AIX
ce3db1b fix typo
4913884 use posix_memalign on most Unix targets
86878b9 Fix linkchecker doc errors
1bf7a30 Turn bare links into automatic links
736b225 Move BufGuard impl outside of function
a44e7b3 Fix tidy errors
36af639 Replace sort implementations
48a835b Divide float nanoseconds instead of seconds
f84d57f Don't use `T` with both Result and Option, improve explanation.
88338ff Add `size_of`, `size_of_val`, `align_of`, and `align_of_val` to the prelude
5d56638 Panic if `PathBuf::set_extension` would add a path separator
7db52fc Add fn allocator method to rc/sync::Weak. Relax Rc<T>/Arc<T>::allocator to allow unsized T.
43bf016 Suggest borrowing on fn argument that is `impl AsRef`
50d5af4 use teletype on the attribute name
43ae187 Some Result combinations work like an Option.
d0c07aa Move `test_shrink_to_unwind` to its own file.
d77b1cc Fix `VecDeque::shrink_to` UB when `handle_alloc_error` unwinds.
0342284 Use `CURRENT_RUSTC_VERSION`
9eb77db Stabilize `div_duration`
7a6ddb3 Lift the probe code of `copy_file_range` into a function
f5305c1 Add missing .into_iter()
2a5af32 Extend the example code and assert the result
678e5a0 Add "safety" comment
ad38f9b unroll first iter of checked_ilog loop to save one multiplication
dbd03d4 Stabilize `BinaryHeap::as_slice`
08f761f DOC: Add FFI example for slice::from_raw_parts()
30c876c Be stricter with `copy_file_range` probe results
fe05246 Less syscalls for the `copy_file_range` probe
511fe47 Stabilize `LazyCell` and `LazyLock` (`lazy_cell`)

git-subtree-dir: library
git-subtree-split: a2cf636
jaisnan added a commit to jaisnan/rust-dev that referenced this pull request Jul 17, 2024
a2cf636 Rollup merge of rust-lang#127813 - ChrisDenton:win-futex, r=joboet
aeae332 Rollup merge of rust-lang#127763 - ChrisDenton:safe-unsafe-unsafe, r=tgross35
e0ea701 Prevent double reference in generic futex
417b61f Narrow the scope of the ReadFile unsafe block
b4d1392 forbid(unsafe_op_in_unsafe_fn) in sys/os_str
f431b51 Rollup merge of rust-lang#127836 - workingjubilee:forbid-unsafe-ops-in-xous-uefi, r=tgross35
0a024bd Rollup merge of rust-lang#127833 - risc0:erik/zkvm-deny-unsafe, r=workingjubilee
0299bb5 Rollup merge of rust-lang#127807 - ChrisDenton:win-parking, r=joboet
61af010 Rollup merge of rust-lang#127792 - workingjubilee:read-unaligned-is-dwarfier, r=joboet
d3cf2e1 Rollup merge of rust-lang#127444 - Sky9x:cstr-bytes-iter, r=dtolnay
12075d1 Rollup merge of rust-lang#126776 - nnethercote:rustfmt-use-pre-cleanups-2, r=cuviper
00d603f Rollup merge of rust-lang#126271 - diondokter:dec2flt-skip-fast-path, r=tgross35
8490c84 Rollup merge of rust-lang#125206 - mgeisler:simplify-std-env-vars, r=jhpratt,tgross35
a752e3b uefi: Forbid unwrapped unsafe in platform modules
32a1b07 Cfg nit
e189d3b xous: Forbid unwrapped unsafe in platform modules
7ddd7f8 zkvm: add `#[forbid(unsafe_op_in_unsafe_fn)]` in `stdlib`
0723962 Adjust some comments on individual `use` declarations.
4320ba0 Avoid comments that describe multiple `use` items.
1aeddb0 Merge some `core::iter` entries.
7a0b2fb Add unsafe blocks in unsafe Thread::new
8e76b15 Remove `slice_to_end`
e8527cd std: unwrapped unsafe is VERBOTEN!
5e4edba Rollup merge of rust-lang#127789 - Sword-Destiny:master, r=petrochenkov
1b631e5 Use futex.rs for Windows thread parking
d59f862 std: Use read_unaligned for reading DWARF
686f75b Rollup merge of rust-lang#127047 - tspiteri:f128-aconsts-lsd, r=tgross35
8b1d874 deny unsafe_op_in_unsafe_fn for teeos
f8bb325 clean unsafe op in unsafe fn
b597017 clean unsafe op in unsafe fn
9fd9c61 clean unsafe op in unsafe fn
e0c57e4 delete #![allow(unsafe_op_in_unsafe_fn)]
704f56f `impl Send + Sync` and override `count` for the `CStr::bytes` iterator
a778c83 Auto merge of rust-lang#127777 - matthiaskrgr:rollup-qp2vkan, r=matthiaskrgr
6535591 Rollup merge of rust-lang#124921 - RalfJung:offset-from-same-addr, r=oli-obk
ac443f2 Auto merge of rust-lang#127020 - tgross35:f16-f128-classify, r=workingjubilee
57937d7 allow(unsafe_op_in_unsafe_fn) on some functions
94b381d Some Windows functions are safe
f3bb34b Deny more windows unsafe_op_in_unsafe_fn
eae9451 Rollup merge of rust-lang#127750 - ChrisDenton:safe-unsafe-unsafe, r=workingjubilee
6257980 Rollup merge of rust-lang#127744 - workingjubilee:deny-unsafe-op-in-std, r=jhpratt
05614f3 Rollup merge of rust-lang#127712 - ChrisDenton:raw-types, r=workingjubilee
14c24b1 Mark some `f16` and `f128` functions unstably const
1b70afd Move safety comment outside unsafe block
3c286d5 Make os/windows default to deny unsafe in unsafe
d96ed86 Make pal/windows default to deny unsafe in unsafe
bb3f60f Fix Windows 7
9fc6710 Auto merge of rust-lang#127719 - devnexen:math_log_fix_solill, r=Amanieu
decdb06 Don't re-export `c_int` from `c`
a1a1c6a Remove DWORD
7d18991 Remove ULONG
d89bce6 Remove PSRWLOCK
d3205de Remove LPVOID
68ac381 Remove LPSECURITY_ATTRIBUTES
6d037b8 Remove LPOVERLAPPED
61f617d Remove LPCVOID
8a25371 Remove SIZE_T
cd51de1 Remove CHAR
00a5b3b Remove USHORT
d621d21 Remove LPWSTR
0b22ecb Remove UINT
18adcef Remove LONG
4eaaf7d Remove LARGE_INTEGER
aa45985 Remove NonZeroDWORD
d7aa7cf Auto merge of rust-lang#127732 - GrigorenkoPV:teeos-safe-sys-init, r=Amanieu
5ff7b40 std: Unsafe-wrap std::sync
e8fa3ef std: Unsafe-wrap in Wtf8 impl
8c3a9c1 std: Unsafe-wrap std::io
91b7331 std: Directly call unsafe {un,}setenv in env
8c75111 std: Unsafe-wrap OSStr{,ing}::from_encoded_bytes_unchecked
4679f9a std: Unsafe-wrap HashMap::get_many_unchecked_mut
ac0fd27 std: deny(unsafe_op_in_unsafe_fn) but allow sites
f710e38 Add `classify` and related methods for `f16` and `f128`
009660d std: removes logarithms family function edge cases handling for solaris.
3492a6b Auto merge of rust-lang#127728 - matthiaskrgr:rollup-ercdbjd, r=matthiaskrgr
0873299 sys::init is not unsafe on teeos
6c4029a Rollup merge of rust-lang#127592 - tesuji:patch-1, r=Mark-Simulacrum
7cd8086 Auto merge of rust-lang#125935 - madsmtm:merge-os-apple, r=workingjubilee
cfb0556 Merge Apple `std::os` extensions modules into `std::os::darwin`
54435f7 Rollup merge of rust-lang#127704 - workingjubilee:fixup-better-than, r=ChrisDenton
e122949 Auto merge of rust-lang#127706 - workingjubilee:rollup-d07ij30, r=workingjubilee
3033120 Rollup merge of rust-lang#127659 - saethlin:manually-drop-bufwriter, r=joboet
e9eb7de Rollup merge of rust-lang#127446 - zachs18:miri-stdlib-leaks-core-alloc, r=Mark-Simulacrum
3ad2560 Rollup merge of rust-lang#127370 - ChrisDenton:win-sys, r=Mark-Simulacrum
05bf6bc doc: Suggest `str::repeat` over `iter::repeat().take().collect()`
96e8ba7 Fix minor typos in std::process doc on Win argv
6b67c66 Auto merge of rust-lang#126958 - dtolnay:u32char, r=Mark-Simulacrum
591aaaf std::unix::fs: removing, now useless, layers predating macOs 10.10.
94ec6e7 Auto merge of rust-lang#127674 - jhpratt:rollup-0dxy3k7, r=jhpratt
a7c1f60 Rollup merge of rust-lang#127668 - spencer3035:improve-slice-doc, r=jhpratt
1e49e05 Rollup merge of rust-lang#127661 - eduardosm:stabilize-io_slice_advance, r=cuviper
c79e003 Auto merge of rust-lang#127397 - jyn514:multi-thread-panic-hook, r=workingjubilee
206678c Auto merge of rust-lang#126606 - zachs18:patch-2, r=joboet
1bb0350 Updated slice documentation
c8b79dd Use ManuallyDrop in BufWriter::into_parts
6e26e27 Stabilize io_slice_advance
cac6664 Rename the internal `const_strlen` to just `strlen`
39647ab fix interleaved panic output
0476fc4 Rollup merge of rust-lang#127433 - dtolnay:conststrlen, r=workingjubilee
f66bd5f Rollup merge of rust-lang#126827 - the8472:pidfd-spawn, r=workingjubilee
1e5cd21 Rollup merge of rust-lang#124980 - zachs18:rc-allocator, r=Amanieu
949f0d6 Add instability attribute on private const_strlen function
20bfac6 Rollup merge of rust-lang#127422 - greaka:master, r=workingjubilee
f937ef1 Rollup merge of rust-lang#127599 - tgross35:lazy_cell_consume-rename, r=workingjubilee
fde7fd2 Rollup merge of rust-lang#127588 - uweigand:s390x-f16-doctests, r=tgross35
ed47f98 Rollup merge of rust-lang#127572 - tbu-:pr_debug_event_nonpacked, r=jhpratt
e5c8b85 Rollup merge of rust-lang#124599 - estebank:issue-41708, r=wesleywiser
b71b538 Rename `lazy_cell_consume` to `lazy_cell_into_inner`
9efc1cb core: Limit remaining f16 doctests to x86_64 linux
a18fbd0 Rollup merge of rust-lang#127554 - ferrocene:tshepang-add-missing-attribute, r=pietroalbini
e419147 Don't mark `DEBUG_EVENT` struct as `repr(packed)`
4552576 Auto merge of rust-lang#126690 - andyolivares:feature/show_window, r=dtolnay
6f6e343 Rollup merge of rust-lang#127091 - Sky9x:fused-error-sources-iter, r=dtolnay
0d64105 Fixed doc links
4fb7b22 Few changes to doc comments. Added tracking issue number.
fe62f6f Exposing STARTUPINFOW.wShowWindow in CommandExt (show_window function) to control how a new process should display its window (normal, minimized, maximized, etc)
7d20047  do not run test where it cannot run
c5f1c76 Auto merge of rust-lang#127235 - martn3:no-mips-f16, r=tgross35,scottmcm
3fefa04 Rollup merge of rust-lang#127460 - Borgerr:clarify-drop-comment, r=jhpratt
895175a Rollup merge of rust-lang#127355 - aceArt-GmbH:126475, r=oli-obk
57cea32 Rollup merge of rust-lang#120248 - WaffleLapkin:bonk-ptr-object-casts, r=compiler-errors,oli-obk,lnicola
e74955e Attempt to fix CI
e466bf5 Rollup merge of rust-lang#127367 - ChrisDenton:run-sync, r=Nilstrieb
90504f8 Rollup merge of rust-lang#126921 - workingjubilee:outline-va-list, r=Nilstrieb
c6b3f3d Auto merge of rust-lang#127454 - matthiaskrgr:rollup-k3vfen2, r=matthiaskrgr
29d7923 Move/change declaration of `mod exit_guard;`
ecc9025 clarify `sys::unix::fd::FileDesc::drop` comment (rust-lang#66876)
35c5a45 Rollup merge of rust-lang#127447 - RalfJung:once_lock_miri, r=joboet
9f7100d Rollup merge of rust-lang#127354 - nicholasbishop:bishop-sized-doc, r=Nilstrieb
ee06e7d Rollup merge of rust-lang#127297 - the8472:path-new-hash, r=Nilstrieb
2206c6b Rollup merge of rust-lang#127189 - GrigorenkoPV:linkedlist-cursor-list, r=Nilstrieb
41bcc36 Rollup merge of rust-lang#127179 - tgross35:typeid-debug-hex, r=Nilstrieb
7177ac8 once_lock: make test not take as long in Miri
294d87f Remove non-focused memory leak in `std` doctest for Miri.
a86fd0f Specialize `TrustedLen` for `Iterator::unzip()`
5515bba Mitigate focused memory leaks in `core` doctests for Miri.
3a0fe26 Remove non-focused memory leaks in `core` doctests for Miri.
20d6cb3 Mitigate focused memory leaks in `alloc` doctests for Miri.
cac8902 Remove non-focused memory leaks in `alloc` doctests for Miri.
bcdc8e8 Stabilize const_cstr_from_ptr (CStr::from_ptr, CStr::count_bytes)
a48f566 offset_from intrinsic: always allow pointers to point to the same address
9919a83 Mark format! with must_use hint
0907955 as_simd: fix comment to be in line with 507583a (rust-lang#121201)
5569ece Rollup merge of rust-lang#127275 - RalfJung:offset-from-isize-min, r=Amanieu
2337ab5 Rollup merge of rust-lang#125751 - pitaj:new_range_api, r=jhpratt
ad4fde6 Rollup merge of rust-lang#127363 - GuillaumeGomez:improve-fmt-code-readability, r=Amanieu
3eeca5f Rollup merge of rust-lang#127107 - mu001999-contrib:dead/enhance-2, r=pnkfelix
1b5e5ac Rollup merge of rust-lang#123600 - tisonkun:path_with_extension, r=dtolnay
5e9d445 Attempt to fix CI
d8965d3 add `new_range_api` for RFC 3550
ca0f659 Move exit guard from sys::common::exit_guard to sys::exit_guard.
cf300a7 Update library/std/src/sys/pal/common/exit_guard.rs
ba4c71a add unit tests for extra extension feature
55fc20b update comments
6b7a259 Add experimental raw-dylib feature to std
c452e62 Use windows_targets macro for alloc
521c81a Run alloc sync tests
2fcdebb Improve readability of some fmt code examples
625bcc4 Rollup merge of rust-lang#127320 - ChrisDenton:win-sys, r=Mark-Simulacrum
f8caf5f Rollup merge of rust-lang#127214 - bjorn3:miri_native_unwind, r=oli-obk
1862054 Describe Sized requirements for mem::offset_of
e26c881 impl FusedIterator and a size hint for the error sources iter
8f1c664 core: erase redundant stability attrs in va_list
60c33a5 library: outline VaList into ffi::va_list
03d11c2 Auto merge of rust-lang#126171 - RalfJung:simd_bitmask_multibyte, r=workingjubilee
297850a Add more checks for pointers with vtable meta
f58a3d6 Improve dead code analysis
515bd30 Add comments to windows_targets.rs
89d2de0 Update windows-bindgen to 0.58.0
0860a04 also remove redundant requirements from offset()
6f80604 offset_from: "the difference must fit in an isize" is a corollary
de4f5c2 Rollup merge of rust-lang#127303 - cuishuang:master, r=jhpratt
56c73c3 Rollup merge of rust-lang#127195 - biabbas:vxworks_cleanup, r=jhpratt
5dfdef7 Rollup merge of rust-lang#126792 - wooden-worm:master, r=Mark-Simulacrum
4df2059 chore: remove repeat words
acbefbb impl PathBuf::add_extension and Path::with_added_extension
13d5a42 Auto merge of rust-lang#127226 - mat-1:optimize-siphash-round, r=nnethercote
ed3d487 stir the hash state a little to avoid prefix collisions
5ca124f Add more test cases for path comparisons
33bc557 Add test case demonstrating equality of paths "foo/bar" and "foobar"
079f999 Move unique_thread_exit call to lang_start_internal so it is not in a generic function, and wrap it in `catch_unwind`
47d0cbc Remove Miri special-case
596be7e Use pthread_t instead of numeric thread id
2e90f6f Use libc::pause instead of std::thread::park in wait-for-exit loop
1fd23e8 core: Limit four f16 doctests to x86_64 linux
e6f15c5 std: Set has_reliable_f16 to false for MIPS targets in build.rs
67535b6 library/std/build.rs: "powerpc64le" is not a target_arch
5b0d82f Rollup merge of rust-lang#127204 - dimpolo:stabilize_atomic_bool_fetch_not, r=jhpratt
b184a84 Rollup merge of rust-lang#123588 - tgross35:stabilize-assert_unchecked, r=dtolnay
2a81053 Fall back on remove dir implementation for vxworks
a8b6d0a Rollup merge of rust-lang#127230 - hattizai:patch01, r=saethlin
4d7cbb2 chore: remove duplicate words
645e9f2 Optimize SipHash by reordering compress instructions
c5ab1f0 Rollup merge of rust-lang#127128 - elomatreb:elomatreb/stabilize-duration_abs_diff, r=joboet
f090672 Rollup merge of rust-lang#126732 - StackOverflowExcept1on:master, r=m-ou-se
1dc4f05 Use the native unwind function in miri where possible
4fff335 Avoid MIR bloat in inlining
4385efd Stabilize atomic_bool_fetch_not
6c3359c Rollup merge of rust-lang#127182 - danielhuang:patch-4, r=Nilstrieb
a0a438a Remove unqualified import io:: Error for vxworks as all Error references are qualified in process_vxworks.rs
2a65e9f Auto merge of rust-lang#127026 - Urgau:cleanup-bootstrap-check-cfg, r=Kobzol
bba2200 LinkedList's Cursor: method to get a ref to the cursor's list
40a9be9 Update ip_addr.rs
986dbd1 Print `TypeId` as hex for debugging
f27723e Rollup merge of rust-lang#127069 - Sky9x:fmt-pointer-use-addr, r=Nilstrieb
b068fce Rollup merge of rust-lang#126895 - betelgeuse:improve_simd_gather_documentation, r=Amanieu
a6b22e9 Rollup merge of rust-lang#127134 - tgross35:typeid-debug, r=Nilstrieb
7f0bb45 Rollup merge of rust-lang#126906 - GrigorenkoPV:fixme-split_at_first, r=Mark-Simulacrum
b0feb54 Rollup merge of rust-lang#126705 - safinaskar:panic, r=Mark-Simulacrum
b8977f5 Auto merge of rust-lang#127133 - matthiaskrgr:rollup-jxkp3yf, r=matthiaskrgr
affa2f9 Print `TypeId` as a `u128` for `Debug`
05a472c Rollup merge of rust-lang#127122 - TDecking:div_ceil, r=Nilstrieb
9b3a511 Auto merge of rust-lang#120639 - fee1-dead-contrib:new-effects-desugaring, r=oli-obk
f96a321 Stabilize `duration_abs_diff`
bf9096f small correction to fmt::Pointer impl
171f5db Auto merge of rust-lang#127121 - GuillaumeGomez:rollup-xjjjckn, r=GuillaumeGomez
50a6646 Remove uneccessary condition in `div_ceil`
7914389 Updated docs on `#[panic_handler]` in `library/core/src/lib.rs`
1858bdc Rollup merge of rust-lang#127073 - Sky9x:unnecessary-seqcst, r=Nilstrieb
aaed209 Rollup merge of rust-lang#127072 - Sky9x:docs-includes-vs-does-include, r=scottmcm
e5a577d Auto merge of rust-lang#127119 - RalfJung:miri-sync, r=RalfJung
77a5b51 Rollup merge of rust-lang#126953 - joboet:lazy_key, r=jhpratt
8641f6a Merge from rustc
402992c Rollup merge of rust-lang#127071 - Sky9x:remove-ptr-to-from-bits, r=scottmcm
0a2d8e4 Rollup merge of rust-lang#127070 - Sky9x:unit-const-param-ty, r=BoxyUwU
663f3d5 Rollup merge of rust-lang#127055 - shepmaster:hash-finish-must-use, r=dtolnay
729a10a address review comments
db228b8 general fixups and turn `TODO`s into `FIXME`s
47492c9 Implement `Min` trait in new solver
cc4a029 implement new effects desugaring
d6fadf5 std: add safety comments
8c3c7dc Rollup merge of rust-lang#126970 - DaniPopes:simplify-str-clone_into, r=cuviper
ae98528 Rollup merge of rust-lang#126956 - joboet:fmt_no_extern_ty, r=RalfJung
652f0b8 Merge from rustc
48dc678 Remove unnecessary SeqCst in `impl fmt::Pointer for AtomicPtr`
e6e5e84 docs: say "includes" instead of "does include"
a722d39 Remove (deprecated & unstable) {to,from}_bits pointer methods
2ed9c9f add () to the marker_impls macro for ConstParamTy
fdfe014 Mark `Hasher::finish` as #[must_use]
2bd2069 fix least significant digits of f128 associated constants
8db57c2 core: improve comment
1f8c8f4 Cleanup bootstrap check-cfg
6c38c60 Rollup merge of rust-lang#126980 - Borgerr:fix-extendfromslice-check, r=workingjubilee
a2dc9b5 Rollup merge of rust-lang#126929 - nnethercote:rm-__rust_force_expr, r=oli-obk
cf231e8 Merge from rustc
a8b311e Auto merge of rust-lang#126608 - tgross35:f16-f128-library, r=Mark-Simulacrum
4788a93 std: test a variety of ways to extend a Wtf8Buf
57c2de8 set self.is_known_utf8 to false in extend_from_slice
c14a130 Rollup merge of rust-lang#126879 - the8472:next-chunk-filter-drop, r=cuviper
f6fdef3 core: avoid `extern` types in formatting infrastructure
43a865a fix UI test, simplify error message
ff33a66 regression test for leaks in the the Filter::next_chunk implementation
f90972a add comments explaining optimizations for Filter::next_chunk
4039a7f fix Drop items getting leaked in Filter::next_chunk
0351c53 Simplify `str::clone_into`
5aedb8a Rollup merge of rust-lang#126946 - cyrgani:patch-1, r=compiler-errors
5664da3 Rollup merge of rust-lang#126927 - workingjubilee:vaargsafe-is-unsafe, r=joboet
9273373 Rollup merge of rust-lang#126885 - Borgerr:rm_internal_pathbuf_asmutvec, r=workingjubilee
46074aa Rollup merge of rust-lang#126302 - mu001999-contrib:ignore/default, r=michaelwoerister
0fe5362 Stabilize const unchecked conversion from u32 to char
9dcaa15 std: separate TLS key creation from TLS access
5d08a54 Detect unused structs which derived Default
e6c45e4 `PathBuf::as_mut_vec` removed and verified for UEFI and Windows platforms rust-lang#126333
7cec6ef remove references to `PathBuf::as_mut_vec` in `PathBuf::_set_extension`
37f78f4 inner truncate methods for UEFI platforms
cfb8021 rust-lang#126333 remove `PathBuf::as_mut_vec` reference at top of `PathBuf::_push`
3edb521 simd_bitmask intrinsic: add a non-power-of-2 multi-byte example
2ddf794 Add missing slash in const_eval_select doc comment
19cfdb2 Add tests for `f16` and `f128`
561daff Add more `f16` and `f128` library functions and constants
6cb3d34 Add doctests to existing `f16` and `f128` functions
b0e0503 Add build.rs config for reliable `f16` and `f128`
028026b Remove `__rust_force_expr`.
1069a68 core: VaArgSafe is an unsafe trait
a451b2a Auto merge of rust-lang#126852 - scottmcm:more-checked-math-tweaks, r=Amanieu
17d03b9 Check that we get somewhat sane PIDs when spawning with pidfds
4c9a96e more fine-grained feature-detection for pidfd spawning
bf06e43 document safety properties of the internal Process::new constructor
9212236 use pidfd_spawn for faster process creation when pidfds are requested
4815f29 document the cvt methods
1bd207e Rollup merge of rust-lang#126904 - GrigorenkoPV:nonzero-fixme, r=joboet
2676918 Rollup merge of rust-lang#125575 - dingxiangfei2009:derive-smart-ptr, r=davidtwco
9dcffa5 Rollup merge of rust-lang#125082 - kpreid:const-uninit, r=dtolnay
cf34f71 Replace `MaybeUninit::uninit_array()` with array repeat expression.
e51d8a2 Auto merge of rust-lang#126523 - joboet:the_great_big_tls_refactor, r=Mark-Simulacrum
2b8c7a3 Small fixme in core now that split_first has no codegen issues
532304b Small fixme in core now that NonZero is generic
5ae0378 std: fix wasm builds
ae08c58 Rollup merge of rust-lang#126213 - zachs18:atomicbool-u8-i8-from-ptr-alignment, r=Nilstrieb
071e80d Fix simd_gather documentation
0c4a661 wasm64 build with target-feature=+simd128,+atomics
36a20f7 Reword docs for `f32` and `f64`
6839ec5 Extract repeated constants from `f32` and `f64` source
c26bd79 Rollup merge of rust-lang#126854 - devnexen:std_unix_os_fallback_upd, r=Mark-Simulacrum
828e528 Rollup merge of rust-lang#126807 - devnexen:copy_file_macos_simpl, r=Mark-Simulacrum
e4bc79d Also get `add nuw` from `uN::checked_add`
7c83a04 SmartPointer derive-macro
f0b95fc fix build
12ec5b7 Rollup merge of rust-lang#126783 - tguichaoua:fix_tcplistener_into_incoming_issue_number, r=workingjubilee
eb265d0 std::unix::os::home_dir: fallback's optimisation.
a48f3d6 Auto merge of rust-lang#126838 - matthiaskrgr:rollup-qkop22o, r=matthiaskrgr
ec8af4b Rollup merge of rust-lang#126552 - fee1-dead-contrib:rmfx, r=compiler-errors
6d6ba92 Rollup merge of rust-lang#126140 - eduardosm:stabilize-fs_try_exists, r=Amanieu
e1edea8 Auto merge of rust-lang#116113 - kpreid:arcmut, r=dtolnay
49d4fdb Generalize `{Rc,Arc}::make_mut()` to unsized types.
5ac719e Replace `WriteCloneIntoRaw` with `CloneToUninit`.
a4ca461 Add `core::clone::CloneToUninit`.
7836843 Auto merge of rust-lang#126750 - scottmcm:less-unlikely, r=jhpratt
934e728 Auto merge of rust-lang#124101 - the8472:pidfd-methods, r=cuviper
c2ec99b to extract a pidfd we must consume the child
f7cf777 Add PidFd::{kill, wait, try_wait}
d688595 std::unix::fs: copy simplification for apple.
bb602cf Auto merge of rust-lang#125853 - tesuji:promote-fail-fast, r=cjgillot
1f17936 update intrinsic const param counting
5e7ce0b Remove `feature(effects)` from the standard library
8902c17 Auto merge of rust-lang#126781 - matthiaskrgr:rollup-5u4pens, r=matthiaskrgr
54eaed7 fix issue number
2e01ae3 Rollup merge of rust-lang#126613 - tgross35:log-test-update, r=cuviper
306d7bf Stop using `unlikely` in `strict_*` methods
a8ab1ce [GVN] Add tests for generic pointees with PtrMetadata
a272844 Don't perform mitigation for thread-unsafe libc::exit under Miri.
5035a17 fix rustdoc URL
1530977 On `target_os = "linux"`, ensure that only one Rust thread calls `libc::exit` or returns from `main`.
7e940ba Auto merge of rust-lang#126578 - scottmcm:inlining-bonuses-too, r=davidtwco
9a945fd Auto merge of rust-lang#124032 - Voultapher:a-new-sort, r=thomcc
dbaf524 Rollup merge of rust-lang#126737 - fee1-dead-contrib:rm-const-closures, r=compiler-errors
0f6922d Fix wrong big O star bracing in the doc comments
7bf7f57 Remove `feature(const_closures)` from libcore
b4e2e4a Auto merge of rust-lang#126736 - matthiaskrgr:rollup-rb20oe3, r=matthiaskrgr
0829ab8 Rollup merge of rust-lang#126717 - nnethercote:rustfmt-use-pre-cleanups, r=jieyouxu
f1c9c80 Rollup merge of rust-lang#126711 - GKFX:const-option-as-slice, r=oli-obk
e057232 Auto merge of rust-lang#116088 - nbdd0121:unwind, r=Amanieu,RalfJung
13ea648 Stabilize `PanicInfo::message()` and `PanicMessage`
b6a3858 Rollup merge of rust-lang#126703 - the8472:on-blackbox-crypto-use, r=scottmcm
847726d Shrink some slice iterator MIR
1ba2fa4 Stabilize `hint_assert_unchecked`
9d0041c Update documentation for `hint::assert_unchecked`
e3e84a7 Add blank lines after module-level `//` comments.
36ad0db Add blank lines after module-level `//!` comments.
4e67110 Convert some module-level `//` and `///` comments to `//!`.
669d6fc Make Option::as_[mut_]slice const
4ae781c reword the hint::blackbox non-guarantees
dd7c901 core: add tracking issue for `array::repeat`
5ddeaca core: simplify implementation of `array::repeat`, address other nits
62f7a4e core: implement `UncheckedIterator` for `RepeatN`
387fd1f core: implement `array::repeat`
3fc18d0 Add a hack to prevent proc_macro misopt in CI
a95938d Stabilise c_unwind
2a5e5b8 Rollup merge of rust-lang#125787 - Oneirical:infinite-test-a-novel, r=jieyouxu
227994d try implementing suggestions
78867ab run_make_support nm implementation + bin-emit-no-symbols rmake rewrite
76e61bf Replace `move||` with `move ||` in `compiler/` and `library/`
13a31b6 Auto merge of rust-lang#126330 - m-ou-se:panic-message-type, r=Amanieu
42802a3 Print the tested value in int_log tests
ea1ab74 Add missing CopyMarker impl
384c205 Revert panic_safe test changes
ca458ba Add PanicMessage type for PanicInfo::message().
2238945 Add tracking issue to async_drop API
0b3227b std: rename module for clarity
2b9a4f3 std: update TLS module documentation
00d4964 std: use the `c_int` from `core::ffi` instead of `libc`
bd3b9ec std: simplify `#[cfg]`s for TLS
78eaad5 Fix unintended regression for Freeze + Copy types
8cd20cb Auto merge of rust-lang#126569 - jieyouxu:rollup-1uvkb2y, r=jieyouxu
c1acd7a Rollup merge of rust-lang#126531 - slanterns:error_provider, r=workingjubilee
cd1c998 Rollup merge of rust-lang#126468 - RalfJung:euclid, r=Mark-Simulacrum
2730879 Rollup merge of rust-lang#126346 - hermit-os:fd, r=Amanieu
ebbce69 Rollup merge of rust-lang#126288 - x4exr:patch-1, r=dtolnay
4aa43c7 Auto merge of rust-lang#125720 - folkertdev:optimize_for_size-ptr-rotate, r=Amanieu
7912329 doc: Added commas where needed
48e1578 Fix doc-link issue
489dfce Remove reliance on const_trait in sort implementations
89b5784 std: move `sys_common::backtrace` to `sys`
90dbe22 use rustc-dep-of-std in panic_unwind
6832ad3 Rollup merge of rust-lang#126539 - lukaslueg:patch-1, r=jhpratt
04e46c2 Rollup merge of rust-lang#125112 - tbu-:pr_create_dir_all_empty, r=dtolnay
e77b474 Update `Arc::try_unwrap()` docs
83c530f Apply review comments
ae7f43e Auto merge of rust-lang#126299 - scottmcm:tune-sliceindex-ubchecks, r=saethlin
339f266 Redo SliceIndex implementations
2388743 update comment
4cc1c37 Rollup merge of rust-lang#126229 - ChrisDenton:bindgen, r=Mark-Simulacrum
b40c54b std: refactor the TLS implementation
7e3c4f8 Auto merge of rust-lang#126518 - matthiaskrgr:rollup-wb70rzq, r=matthiaskrgr
2678593 std: suggest OnceLock over Once
b509ed2 Polish `std::path::absolute` documentation.
c3c1757 Auto merge of rust-lang#126473 - matthiaskrgr:rollup-8w2xm09, r=matthiaskrgr
a135342 Rollup merge of rust-lang#126285 - kpreid:unique-rc, r=dtolnay
7fafb6d Rollup merge of rust-lang#126266 - tbu-:pr_doc_alloc_default_system, r=jhpratt
afee9f5 Rollup merge of rust-lang#126135 - hermit-os:fuse, r=jhpratt
4a32b4b Rollup merge of rust-lang#123769 - dtolnay:literal, r=fee1-dead
3909d51 div_euclid, rem_euclid: clarify/extend documentation
ca52a2c Rollup merge of rust-lang#126351 - devnexen:to_sol11_upd, r=ChrisDenton
369fa55 Rollup merge of rust-lang#126402 - firefighterduck:fix-unsafe-precon-copy, r=Nilstrieb
2acb995 Rollup merge of rust-lang#126390 - Kriskras99:master, r=Nilstrieb
b3c1dcb Rollup merge of rust-lang#126360 - compiler-errors:uplift-structural-traits, r=lcnr
bdb9aa2 Rollup merge of rust-lang#123726 - jieyouxu:command-new-docs, r=Nilstrieb
307d1af Remove superfluous escaping from byte, byte str, and c str literals
78d94ee LangItem-ify Coroutine trait in solvers
891f00c fix wrong assert_unsafe_precondition message for core::ptr::copy
9adf702 Rollup merge of rust-lang#126384 - RalfJung:is_none_or, r=workingjubilee
02cb1e9 Rollup merge of rust-lang#126347 - slanterns:try_simplify, r=scottmcm
fa2a54a Fix wording in {checked_}next_power_of_two
3ef894f add tracking issue for is_none_or
a5fe19d std::unix::fs::link using direct linkat call for Solaris and macOs.
9921cd2 Rollup merge of rust-lang#126328 - RalfJung:is_none_or, r=workingjubilee
93583a6 Simplify `try_*` on `Iterator`
47090b1 export std::os::fd module on HermitOS
17c90d8 Auto merge of rust-lang#126273 - pietroalbini:pa-bootstrap-update, r=Mark-Simulacrum
b482e06 add is_none_or
027c82e Rollup merge of rust-lang#126322 - m-ou-se:panicinfo-and-panicinfo-2, r=RalfJung
db03ec6 Rollup merge of rust-lang#126242 - yaahc:simplify-provider, r=jhpratt
956efde Rollup merge of rust-lang#126039 - dpaoliello:arm64ecbuild, r=davidtwco
3acb41f Fix deprecated version.
bc5e618 Update doc comment on PanicInfo::message().
249d63e Use payload_as_str instead of two downcasts.
15677e9 Fix deprecation version.
a239d5b Clarify doc comment.
209f8c8 Auto merge of rust-lang#126319 - workingjubilee:rollup-lendnud, r=workingjubilee
6ec98e7 Rollup merge of rust-lang#126305 - workingjubilee:fix-os-string-to-string-utf8-invariant, r=joboet
80467da Rollup merge of rust-lang#126287 - nnethercote:reformat-cranelift-patch, r=bjorn3
5760a4e Rollup merge of rust-lang#126281 - ChrisDenton:env, r=jhpratt
439c2ae Rollup merge of rust-lang#126249 - workingjubilee:simplify-try-map-signature, r=scottmcm
23e3dbf Rollup merge of rust-lang#126210 - lolbinarycat:ptr_doctest_assert, r=workingjubilee
d469394 Rollup merge of rust-lang#123374 - mgeier:doc-slice-from-raw-parts, r=scottmcm
63fe960 Require any function with a tait in its signature to actually constrain a hidden type
e1d73c2 Revert "Rollup merge of rust-lang#125362 - joboet:tait_hack, r=Nilstrieb"
382ed52 Make PathBuf less Ok with adding UTF-16 then `into_string`
548e7a4 Update a cranelift patch file for formatting changes.
8ccbe9e `UniqueRc`: support allocators and `T: ?Sized`.
b3dcee6 set_env: State the conclusion upfront
f56c023 Rename `std::fs::try_exists` to  `std::fs::exists` and stabilize fs_try_exists
c16d8b1 Unify guarantees about the default allocator
d8fe589 remove cfg(bootstrap)
a2ff49b replace version placeholder
f72e4a9 Formatting.
0503ca7 Bump deprecation of std's PanicInfo alias to 1.82.0.
fea6b03 Add PanicHookInfo::payload_as_str().
0c8a9e0 Fix display of panic message in recursive panic.
2f85702 Mention core's PanicInfo in error.md.
ad0667f Add note on panic payload type.
518722e Downcast panic payload to String too in example.
c4dea81 Move deprecation of std::panic::PanicInfo to 1.80.0.
143e4c4 Fix deprecation version.
c6749ae Rename std::panic::PanicInfo to PanicHookInfo.
db2e055 Formatting.
51f20ac Fix invalid markdown/html.
d4b7304 Reorder body of begin_panic for consistency.
373fb60 Impl Display for PanicPayload to simplify things.
224d45c Use unnamed lifetimes for [..]Payload impl blocks.
cf984e0 Move downcasting panic payload to str to a function.
a18eeac Mark some PanicInfo methods as #[inline] for consistency.
47f359b Remove std::panic::PanicInfo::internal_constructor+set_payload.
701d6a2 Remove core::panic::PanicInfo::internal_constructor.
cca865d Update doc comment about core::panicking.
221a90c Fix doc link.
d6658a5 Add core::panic::PanicInfo::payload() for compatibility.
ca0bfeb Document difference between core and std's PanicInfo.
702405e Split core's PanicInfo and std's PanicInfo.
019e01f Skip fast path for dec2flt when optimize_for_size
483f641 Simplify `[T; N]::try_map` signature
8b6f468 Simplify provider api to improve llvm ir
c8170e6 Rollup merge of rust-lang#126212 - SteveLauC:fix/haiku, r=joboet
58bb5cf Rollup merge of rust-lang#126191 - ivan-shrimp:nonzero_doc, r=scottmcm
d2f8ddf Bump windows-bindgen to 0.57
02bf152 Clarify `Command::new` behavior if passed programs with arguments
e17d6b9 Remove some unused crate dependencies.
5840184 Update docs for AtomicU8/I8.
8791549 fix: build on haiku
263861f Update safety docs for AtomicBool::from_ptr.
e25ae61 docs(core): make more const_ptr doctests assert instead of printing
cf9de23 Auto merge of rust-lang#126205 - jieyouxu:rollup-s64z5ng, r=jieyouxu
c5da756 Rollup merge of rust-lang#126194 - ChrisDenton:winerror, r=Mark-Simulacrum
c4bd74c Rollup merge of rust-lang#125253 - sunsided:feature/FRAC_1_SQRT_PI, r=Mark-Simulacrum
c9c5d8f Auto merge of rust-lang#126193 - RalfJung:miri-sync, r=RalfJung
e39299d Migrate more things to WinError
0df0a38 fix `NonZero` doctest inconsistencies
818933d Rollup merge of rust-lang#126168 - devnexen:current_exe_haiku_simpl, r=ChrisDenton
a9bd569 Rollup merge of rust-lang#126146 - devnexen:signal_fbsd, r=ChrisDenton
05812a0 Merge from rustc
56bdaf3 std::unix::os current_exe implementation simplification for haiku.
e6c378f Auto merge of rust-lang#125966 - schvv31n:impl_os_string_pathbuf_leak, r=workingjubilee
e000ecb std::unix::process adding few specific freebsd signals to be able to id.
67454f5 Rollup merge of rust-lang#126138 - wbk:patch-1, r=lqd
ca932c8 Rollup merge of rust-lang#125998 - devnexen:get_mode_illumos, r=Nilstrieb
397e9cb Rollup merge of rust-lang#125951 - slanterns:error_in_core_stabilization, r=Amanieu
4655eca Fix typo in docs for std::pin
bb2e2d9 add HermitOS support of vectored read/write operations
dd7ccb7 Rollup merge of rust-lang#126089 - wutchzone:option_take_if, r=scottmcm
199da77 Rollup merge of rust-lang#126030 - ChrisDenton:update-wingen-readme, r=Mark-Simulacrum
8a4b11a Rollup merge of rust-lang#124012 - slanterns:as_slice_stabilize, r=BurntSushi
05a92c2 Auto merge of rust-lang#126110 - workingjubilee:backtrace-0.3.73, r=workingjubilee
cd73cbe Update backtrace to 0.3.73
c6e53ce Merge from rustc
3b60335 Rollup merge of rust-lang#125606 - diondokter:opt-size-int-fmt, r=cuviper
7014731 fix doc comments about `error_generic_member_access`
3f48168 Stabilize `error_in_core`
20f15f4 fixed memory leaks in PathBuf::leak & OsString::leak tests
fa66a61 Rollup merge of rust-lang#126096 - c410-f3r:tests-tests-tests, r=jhpratt
5736944 [RFC-2011] Allow `core_intrinsics` when activated
dfddd7e Stabilize Option::take_if
051c6c6 Raise `DEFAULT_MIN_STACK_SIZE` to at least 64KiB
29932f3 Auto merge of rust-lang#126038 - matthiaskrgr:rollup-h4rm3x2, r=matthiaskrgr
149a237 Promote `arm64ec-pc-windows-msvc` to tier 2
4a81c12 Rollup merge of rust-lang#126032 - ChrisDenton:update-docs, r=joboet
7450cf0 Rollup merge of rust-lang#125800 - fortanix:raoul/rte-99-fix_mut_static_task_queue, r=jethrogb
ed91d55 Rollup merge of rust-lang#125940 - devnexen:unix_fs_netbsd_get_path, r=cuviper
bf7430f Update description of the `IsTerminal` example
91c8b23 Update `./x fmt` command
1632165 Rollup merge of rust-lang#125995 - kpreid:const-uninit-stable, r=Nilstrieb
2c5f1ac Rollup merge of rust-lang#125982 - xTachyon:fix-linked-list, r=jhpratt
80cee25 Rollup merge of rust-lang#123168 - joshtriplett:size-of-prelude, r=Amanieu
28dc012 std::unix::fs::get_mode implementation for illumos/solaris.
14a6f29 Use inline const instead of unsafe to implement `MaybeUninit::uninit_array()`.
a2c3406 Use inline const instead of unsafe to construct arrays in `MaybeUninit` examples.
f8ee355 Rollup merge of rust-lang#125932 - schvv31n:patch-1, r=lqd
49dad46 Rollup merge of rust-lang#125927 - ferrocene:lw-alloc-unwind-test, r=pietroalbini
e38c13a Rollup merge of rust-lang#125696 - workingjubilee:please-dont-say-you-are-lazy, r=Nilstrieb
1764910 Rollup merge of rust-lang#106186 - rossmacarthur:ft/iter-chain, r=Amanieu
fbb5246 Make deleting on LinkedList aware of the allocator
85aa4b6 impl OsString::leak & PathBuf::leak
b19dd14 Add function `core::iter::chain`
25245bb Rollup merge of rust-lang#125919 - tbu-:pr_fix_typo, r=lqd
a415ddd Rollup merge of rust-lang#125504 - mqudsi:once_nominal, r=cuviper
ea7e91c Let compiler auto impl `Send` for `Task`
55f3d10 Store `Task::p` as `dyn FnOnce() + Send`
92b604f Pass function for `Thread` as `Send` to `Thread::imp`
175ad22 Auto merge of rust-lang#125525 - joboet:tls_accessor, r=cuviper
31e0022 std::unix::fs::get_path: using fcntl codepath for netbsd instead.
82e24ad Fix typo in the docs of `HashMap::raw_entry_mut`
fcc07af Ignore `vec_deque_alloc_error::test_shrink_to_unwind` test on non-unwind targets
6ef46b3 Auto merge of rust-lang#125912 - nnethercote:rustfmt-tests-mir-opt, r=oli-obk
7927138 Remove stray "this"
06d9b0e Add "OnceList" example to motivate OnceLock
6d001c5 Move first OnceLock example to LazyLock
7e47256 Differ LazyLock vs. OnceLock in std::sync overview
a198721 Explain LazyCell in core::cell overview
ae5598a Reformat `mir!` macro invocations to use braces.
494f05c Rollup merge of rust-lang#125898 - RalfJung:typo, r=Nilstrieb
7881d33 Rollup merge of rust-lang#125884 - Rua:integer_sign_cast, r=Mark-Simulacrum
380d9a3 Rollup merge of rust-lang#121062 - RustyYato:f32-midpoint, r=the8472
81b9e26 Wording of the documentation
1c707b6 typo: depending from -> on
fe5adb9 Auto merge of rust-lang#125577 - devnexen:netbsd_stack_min, r=joboet
876458e Implement feature `integer_sign_cast`
e929c7f Change f32::midpoint to upcast to f64
cd04000 Auto merge of rust-lang#124294 - tspiteri:ilog-first-iter, r=the8472
7f0b19d stablize `const_binary_heap_constructor` & create an unstable feature `const_binary_heap_new_in` for `BinaryHeap::new_in`
5c2e274 Rollup merge of rust-lang#125730 - mu001999-contrib:clippy-fix, r=oli-obk
9fe1803 Auto merge of rust-lang#124662 - zetanumbers:needs_async_drop, r=oli-obk
8943103 Avoid `mut` and simplify initialization of `TASK_QUEUE`
ba98164 Auto merge of rust-lang#124636 - tbu-:pr_env_unsafe, r=petrochenkov
bbaaa79 Rollup merge of rust-lang#125746 - jmillikin:duration-from-weeks-typo, r=lqd
1329a62 Rollup merge of rust-lang#125739 - RalfJung:drop-in-place-docs, r=workingjubilee
8883bcf Rollup merge of rust-lang#125342 - tbu-:pr_doc_write, r=ChrisDenton
14d5dcb explain what the open questions are, and add a Miri test for that
6f01ba7 Apply x clippy --fix and x fmt
c9c0713 Fix copy-paste error in `Duration::from_weeks` panic message.
e935223 Rollup merge of rust-lang#125733 - compiler-errors:async-fn-assoc-item, r=fmease
4feb881 Elaborate about modifying env vars in multi-threaded programs
2500719 Add note about safety of `std::env::set_var` on Windows
c4b1ff8 Make `std::env::{set_var, remove_var}` unsafe in edition 2024
07d3009 drop_in_place: weaken the claim of equivalence with drop(ptr.read())
99eabb4 Add lang item for AsyncFnKindHelper::Upvars
a8f468f Add lang item for Future::Output
2e1896e Add lang items for AsyncFn's associated types
d82378a [ACP 362] genericize `ptr::from_raw_parts`
619e33b Add FRAC_1_SQRT_2PI doc alias to FRAC_1_SQRT_TAU
1265244 make `ptr::rotate` smaller when using `optimize_for_size`
bb6d4eb Add safety comment to fix tidy
c8b699c Optimize async drop glue for some old types
0444ab8 Add FRAC_1_SQRT_2PI constant to f16/f32/f64/f128
1aaf0a9 Rollup merge of rust-lang#125226 - madsmtm:fix-mac-catalyst-tests, r=workingjubilee
565dce2 Rollup merge of rust-lang#124251 - scottmcm:unop-ptr-metadata, r=oli-obk
a4025eb Add custom mir support for `PtrMetadata`
87b9f24 Add an intrinsic for `ptr::metadata`
914d2c0 Rollup merge of rust-lang#125637 - nnethercote:rustfmt-fixes, r=GuillaumeGomez
3170156 Make more of the test suite run on Mac Catalyst
9753338 Disable stack overflow handler tests on iOS-like platforms
3548389 Don't format `tests/run-make/*/rmake.rs`.
6fcf130 Rollup merge of rust-lang#125647 - tspiteri:track-lazy_cell_consume, r=workingjubilee
385e1b8 Rollup merge of rust-lang#125551 - clarfonthey:ip-bits, r=jhpratt
457f5ee update tracking issue for lazy_cell_consume
893db81 Auto merge of rust-lang#125636 - workingjubilee:bump-backtrace-0.3.72, r=workingjubilee
6785858 Sync libstd deps with backtrace
b214872 Bump backtrace to 0.3.72
0ef7706 Auto merge of rust-lang#125609 - diondokter:opt-size-char-count, r=thomcc
3578f42 Rollup merge of rust-lang#124870 - Lokathor:update-result-docs, r=dtolnay
d4fb66b Always use the general case char count
1e8098b Size optimize int formatting
a74509c Rollup merge of rust-lang#125559 - scottmcm:simplify-shift-ubcheck, r=workingjubilee
bc346a0 Auto merge of rust-lang#122079 - tbu-:pr_copy_file_range_probe, r=the8472
fdcee4d std::pal::unix::thread fetching min stack size on netbsd.
d14171d Auto merge of rust-lang#125574 - matthiaskrgr:rollup-1oljoup, r=matthiaskrgr
3e545bc Rollup merge of rust-lang#125571 - tesuji:dummy-pi, r=Nilstrieb
8409442 Rollup merge of rust-lang#125561 - Cyborus04:stabilize-slice-flatten, r=scottmcm
8981ee4 Auto merge of rust-lang#125570 - tesuji:stdout-handle, r=Nilstrieb
addaaed f32: use constants instead of reassigning a dummy value as PI
8a6d10d use proper name instead of magic number
64671fa Stabilize `slice_flatten`
4014081 Auto merge of rust-lang#125070 - tbu-:pr_set_extension_panic, r=jhpratt
f54c557 Auto merge of rust-lang#125518 - saethlin:check-arguments-new-in-const, r=joboet
a4bac2b It seems that anchor names are implicitly all lowercase
7cddfd4 Simplify the `unchecked_sh[lr]` ub-checks a bit
805f56b Fix URL target, it's in the module not the type.
3b77f19 github showed that weird.
65726c0 correct for copy paste errors when fixing wrapping.
613145f Resolve rust-lang#124870 (comment)
9677b70 revert to the inconsistent paragraph wrapping.
bf3ca98 Rollup merge of rust-lang#124667 - newpavlov:stabilize_div_duration, r=jhpratt
4af28c4 Rollup merge of rust-lang#123803 - Sp00ph:shrink_to_fix, r=Mark-Simulacrum
79e1daf Rollup merge of rust-lang#122986 - taiki-e:aix-c-char, r=Mark-Simulacrum
0b13a6c Rollup merge of rust-lang#121377 - pitaj:lazy_cell_fn_pointer, r=dtolnay
b1ac7da Stabilise ip_bits feature
23bb5bc Auto merge of rust-lang#121571 - clarfonthey:unchecked-math-preconditions, r=saethlin
c11b36a Rollup merge of rust-lang#125527 - programmerjake:patch-2, r=workingjubilee
d6812d5 Rollup merge of rust-lang#125498 - zmodem:avx512er, r=workingjubilee
f52291b Rollup merge of rust-lang#125478 - Urgau:check-cfg-config-bump-stage0, r=Mark-Simulacrum
38dcab9 Rollup merge of rust-lang#125271 - RalfJung:posix_memalign, r=workingjubilee
29a1b3b Move the checks for Arguments constructors to inline const
5257f3f Add manual Sync impl for ReentrantLockGuard
078095a std: make TLS accessors closures that return pointers
567096d Rollup merge of rust-lang#125497 - meesfrensel:patch-1, r=calebzulawski
dd828cf Stop using the avx512er and avx512pf x86 target features
749b376 Change pedantically incorrect OnceCell/OnceLock wording
2b1602a Fix some SIMD intrinsics documentation
59b5617 Remove now outdated comment since we bumped stage0
6d1cdb5 Add assert_unsafe_precondition to unchecked_{add,sub,neg,mul,shl,shr} methods
ce29159 Simplify environment variable examples
8fa3f60 Document behavior of `create_dir_all` wrt. empty path
dd196e7 Document platform-specifics for `Read` and `Write` of `File`
a71d9d9 Fix c_char on AIX
ce3db1b fix typo
4913884 use posix_memalign on most Unix targets
86878b9 Fix linkchecker doc errors
1bf7a30 Turn bare links into automatic links
736b225 Move BufGuard impl outside of function
a44e7b3 Fix tidy errors
36af639 Replace sort implementations
48a835b Divide float nanoseconds instead of seconds
f84d57f Don't use `T` with both Result and Option, improve explanation.
88338ff Add `size_of`, `size_of_val`, `align_of`, and `align_of_val` to the prelude
5d56638 Panic if `PathBuf::set_extension` would add a path separator
7db52fc Add fn allocator method to rc/sync::Weak. Relax Rc<T>/Arc<T>::allocator to allow unsized T.
43bf016 Suggest borrowing on fn argument that is `impl AsRef`
50d5af4 use teletype on the attribute name
43ae187 Some Result combinations work like an Option.
d0c07aa Move `test_shrink_to_unwind` to its own file.
d77b1cc Fix `VecDeque::shrink_to` UB when `handle_alloc_error` unwinds.
0342284 Use `CURRENT_RUSTC_VERSION`
9eb77db Stabilize `div_duration`
7a6ddb3 Lift the probe code of `copy_file_range` into a function
f5305c1 Add missing .into_iter()
2a5af32 Extend the example code and assert the result
678e5a0 Add "safety" comment
ad38f9b unroll first iter of checked_ilog loop to save one multiplication
dbd03d4 Stabilize `BinaryHeap::as_slice`
08f761f DOC: Add FFI example for slice::from_raw_parts()
30c876c Be stricter with `copy_file_range` probe results
fe05246 Less syscalls for the `copy_file_range` probe
511fe47 Stabilize `LazyCell` and `LazyLock` (`lazy_cell`)

git-subtree-dir: library
git-subtree-split: a2cf636
@RalfJung RalfJung deleted the offset-from-same-addr branch July 18, 2024 10:22
@apiraino apiraino removed the to-announce Announce this issue on triage meeting label Jul 22, 2024
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Aug 2, 2024
raw_eq: using it on bytes with provenance is not UB (outside const-eval)

The current behavior of raw_eq violates provenance monotonicity. See rust-lang#124921 for an explanation of provenance monotonicity. It is violated in raw_eq because comparing bytes without provenance is well-defined, but adding provenance makes the operation UB.

So remove the no-provenance requirement from raw_eq. However, the requirement stays in-place for compile-time invocations of raw_eq, that indeed cannot deal with provenance.

Cc `@rust-lang/opsem`
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Aug 2, 2024
Rollup merge of rust-lang#128453 - RalfJung:raw_eq, r=saethlin

raw_eq: using it on bytes with provenance is not UB (outside const-eval)

The current behavior of raw_eq violates provenance monotonicity. See rust-lang#124921 for an explanation of provenance monotonicity. It is violated in raw_eq because comparing bytes without provenance is well-defined, but adding provenance makes the operation UB.

So remove the no-provenance requirement from raw_eq. However, the requirement stays in-place for compile-time invocations of raw_eq, that indeed cannot deal with provenance.

Cc `@rust-lang/opsem`
github-actions bot pushed a commit to rust-lang/miri that referenced this pull request Aug 3, 2024
raw_eq: using it on bytes with provenance is not UB (outside const-eval)

The current behavior of raw_eq violates provenance monotonicity. See rust-lang/rust#124921 for an explanation of provenance monotonicity. It is violated in raw_eq because comparing bytes without provenance is well-defined, but adding provenance makes the operation UB.

So remove the no-provenance requirement from raw_eq. However, the requirement stays in-place for compile-time invocations of raw_eq, that indeed cannot deal with provenance.

Cc `@rust-lang/opsem`
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Sep 11, 2024
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://github.com/rust-lang/rust) | minor | `1.80.1` -> `1.81.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>rust-lang/rust (rust)</summary>

### [`v1.81.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1810-2024-09-05)

[Compare Source](rust-lang/rust@1.80.1...1.81.0)

\==========================

<a id="1.81.0-Language"></a>

## Language

-   [Abort on uncaught panics in `extern "C"` functions.](rust-lang/rust#116088)
-   [Fix ambiguous cases of multiple `&` in elided self lifetimes.](rust-lang/rust#117967)
-   [Stabilize `#[expect]` for lints (RFC 2383),](rust-lang/rust#120924) like `#[allow]` with a warning if the lint is *not* fulfilled.
-   [Change method resolution to constrain hidden types instead of rejecting method candidates.](rust-lang/rust#123962)
-   [Bump `elided_lifetimes_in_associated_constant` to deny.](rust-lang/rust#124211)
-   [`offset_from`: always allow pointers to point to the same address.](rust-lang/rust#124921)
-   [Allow constraining opaque types during subtyping in the trait system.](rust-lang/rust#125447)
-   [Allow constraining opaque types during various unsizing casts.](rust-lang/rust#125610)
-   [Deny keyword lifetimes pre-expansion.](rust-lang/rust#126762)

<a id="1.81.0-Compiler"></a>

## Compiler

-   [Make casts of pointers to trait objects stricter.](rust-lang/rust#120248)
-   [Check alias args for well-formedness even if they have escaping bound vars.](rust-lang/rust#123737)
-   [Deprecate no-op codegen option `-Cinline-threshold=...`.](rust-lang/rust#124712)
-   [Re-implement a type-size based limit.](rust-lang/rust#125507)
-   [Properly account for alignment in `transmute` size checks.](rust-lang/rust#125740)
-   [Remove the `box_pointers` lint.](rust-lang/rust#126018)
-   [Ensure the interpreter checks bool/char for validity when they are used in a cast.](rust-lang/rust#126265)
-   [Improve coverage instrumentation for functions containing nested items.](rust-lang/rust#127199)
-   Target changes:
    -   [Add Tier 3 `no_std` Xtensa targets:](rust-lang/rust#125141) `xtensa-esp32-none-elf`, `xtensa-esp32s2-none-elf`, `xtensa-esp32s3-none-elf`
    -   [Add Tier 3 `std` Xtensa targets:](rust-lang/rust#126380) `xtensa-esp32-espidf`, `xtensa-esp32s2-espidf`, `xtensa-esp32s3-espidf`
    -   [Add Tier 3 i686 Redox OS target:](rust-lang/rust#126192) `i686-unknown-redox`
    -   [Promote `arm64ec-pc-windows-msvc` to Tier 2.](rust-lang/rust#126039)
    -   [Promote `loongarch64-unknown-linux-musl` to Tier 2 with host tools.](rust-lang/rust#126298)
    -   [Enable full tools and profiler for LoongArch Linux targets.](rust-lang/rust#127078)
    -   [Unconditionally warn on usage of `wasm32-wasi`.](rust-lang/rust#126662) (see compatibility note below)
    -   Refer to Rust's \[platform support page]\[platform-support-doc] for more information on Rust's tiered platform support.

<a id="1.81.0-Libraries"></a>

## Libraries

-   [Split core's `PanicInfo` and std's `PanicInfo`.](rust-lang/rust#115974) (see compatibility note below)
-   [Generalize `{Rc,Arc}::make_mut()` to unsized types.](rust-lang/rust#116113)
-   [Replace sort implementations with stable `driftsort` and unstable `ipnsort`.](rust-lang/rust#124032) All `slice::sort*` and `slice::select_nth*` methods are expected to see significant performance improvements. See the [research project](https://github.com/Voultapher/sort-research-rs) for more details.
-   [Document behavior of `create_dir_all` with respect to empty paths.](rust-lang/rust#125112)
-   [Fix interleaved output in the default panic hook when multiple threads panic simultaneously.](rust-lang/rust#127397)

<a id="1.81.0-Stabilized-APIs"></a>

## Stabilized APIs

-   [`core::error`](https://doc.rust-lang.org/stable/core/error/index.html)
-   [`hint::assert_unchecked`](https://doc.rust-lang.org/stable/core/hint/fn.assert_unchecked.html)
-   [`fs::exists`](https://doc.rust-lang.org/stable/std/fs/fn.exists.html)
-   [`AtomicBool::fetch_not`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.fetch_not)
-   [`Duration::abs_diff`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.abs_diff)
-   [`IoSlice::advance`](https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance)
-   [`IoSlice::advance_slices`](https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance_slices)
-   [`IoSliceMut::advance`](https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance)
-   [`IoSliceMut::advance_slices`](https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance_slices)
-   [`PanicHookInfo`](https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html)
-   [`PanicInfo::message`](https://doc.rust-lang.org/stable/core/panic/struct.PanicInfo.html#method.message)
-   [`PanicMessage`](https://doc.rust-lang.org/stable/core/panic/struct.PanicMessage.html)

These APIs are now stable in const contexts:

-   [`char::from_u32_unchecked`](https://doc.rust-lang.org/stable/core/char/fn.from_u32\_unchecked.html) (function)
-   [`char::from_u32_unchecked`](https://doc.rust-lang.org/stable/core/primitive.char.html#method.from_u32\_unchecked) (method)
-   [`CStr::count_bytes`](https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytes)
-   [`CStr::from_ptr`](https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.from_ptr)

<a id="1.81.0-Cargo"></a>

## Cargo

-   [Generated `.cargo_vcs_info.json` is always included, even when `--allow-dirty` is passed.](rust-lang/cargo#13960)
-   [Disallow `package.license-file` and `package.readme` pointing to non-existent files during packaging.](rust-lang/cargo#13921)
-   [Disallow passing `--release`/`--debug` flag along with the `--profile` flag.](rust-lang/cargo#13971)
-   [Remove `lib.plugin` key support in `Cargo.toml`. Rust plugin support has been deprecated for four years and was removed in 1.75.0.](rust-lang/cargo#13902)

<a id="1.81.0-Compatibility-Notes"></a>

## Compatibility Notes

-   Usage of the `wasm32-wasi` target will now issue a compiler warning and request users switch to the `wasm32-wasip1` target instead. Both targets are the same, `wasm32-wasi` is only being renamed, and this [change to the WASI target](https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html) is being done to enable removing `wasm32-wasi` in January 2025.

-   We have renamed `std::panic::PanicInfo` to `std::panic::PanicHookInfo`. The old name will continue to work as an alias, but will result in a deprecation warning starting in Rust 1.82.0.

    `core::panic::PanicInfo` will remain unchanged, however, as this is now a *different type*.

    The reason is that these types have different roles: `std::panic::PanicHookInfo` is the argument to the [panic hook](https://doc.rust-lang.org/stable/std/panic/fn.set_hook.html) in std context (where panics can have an arbitrary payload), while `core::panic::PanicInfo` is the argument to the [`#[panic_handler]`](https://doc.rust-lang.org/nomicon/panic-handler.html) in no_std context (where panics always carry a formatted *message*). Separating these types allows us to add more useful methods to these types, such as `std::panic::PanicHookInfo::payload_as_str()` and `core::panic::PanicInfo::message()`.

-   The new sort implementations may panic if a type's implementation of [`Ord`](https://doc.rust-lang.org/std/cmp/trait.Ord.html) (or the given comparison function) does not implement a [total order](https://en.wikipedia.org/wiki/Total_order) as the trait requires. `Ord`'s supertraits (`PartialOrd`, `Eq`, and `PartialEq`) must also be consistent. The previous implementations would not "notice" any problem, but the new implementations have a good chance of detecting inconsistencies, throwing a panic rather than returning knowingly unsorted data.

-   [In very rare cases, a change in the internal evaluation order of the trait
    solver may result in new fatal overflow errors.](rust-lang/rust#126128)

<a id="1.81.0-Internal-Changes"></a>

## Internal Changes

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

-   [Add a Rust-for Linux `auto` CI job to check kernel builds.](rust-lang/rust#125209)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Sep 22, 2024
Pkgsrc changes:
 * Adapt patches, apply to new vendored crates where needed.
 * Back-port rust pull request 130110, "make dist vendoring configurable"
 * Disable "dist vendoring", otherwise cargo would try to access
   the network during the build phase.

Upstream changes:

Version 1.81.0 (2024-09-05)
==========================

Language
--------

- [Abort on uncaught panics in `extern "C"` functions.]
  (rust-lang/rust#116088)
- [Fix ambiguous cases of multiple `&` in elided self lifetimes.]
  (rust-lang/rust#117967)
- [Stabilize `#[expect]` for lints (RFC 2383),]
  (rust-lang/rust#120924) like `#[allow]`
  with a warning if the lint is _not_ fulfilled.
- [Change method resolution to constrain hidden types instead of
  rejecting method candidates.]
  (rust-lang/rust#123962)
- [Bump `elided_lifetimes_in_associated_constant` to deny.]
  (rust-lang/rust#124211)
- [`offset_from`: always allow pointers to point to the same
  address.] (rust-lang/rust#124921)
- [Allow constraining opaque types during subtyping in the trait
  system.] (rust-lang/rust#125447)
- [Allow constraining opaque types during various unsizing casts.]
  (rust-lang/rust#125610)
- [Deny keyword lifetimes pre-expansion.]
  (rust-lang/rust#126762)

Compiler
--------

- [Make casts of pointers to trait objects stricter.]
  (rust-lang/rust#120248)
- [Check alias args for well-formedness even if they have escaping
  bound vars.] (rust-lang/rust#123737)
- [Deprecate no-op codegen option `-Cinline-threshold=...`.]
  (rust-lang/rust#124712)
- [Re-implement a type-size based limit.]
  (rust-lang/rust#125507)
- [Properly account for alignment in `transmute` size checks.]
  (rust-lang/rust#125740)
- [Remove the `box_pointers` lint.]
  (rust-lang/rust#126018)
- [Ensure the interpreter checks bool/char for validity when they
  are used in a cast.] (rust-lang/rust#126265)
- [Improve coverage instrumentation for functions containing nested
  items.] (rust-lang/rust#127199)
- Target changes:
  - [Add Tier 3 `no_std` Xtensa targets:]
    (rust-lang/rust#125141) `xtensa-esp32-none-elf`,
    `xtensa-esp32s2-none-elf`, `xtensa-esp32s3-none-elf`
  - [Add Tier 3 `std` Xtensa targets:]
    (rust-lang/rust#126380) `xtensa-esp32-espidf`,
    `xtensa-esp32s2-espidf`, `xtensa-esp32s3-espidf`
  - [Add Tier 3 i686 Redox OS target:]
    (rust-lang/rust#126192) `i686-unknown-redox`
  - [Promote `arm64ec-pc-windows-msvc` to Tier 2.]
    (rust-lang/rust#126039)
  - [Promote `wasm32-wasip2` to Tier 2.]
    (rust-lang/rust#126967)
  - [Promote `loongarch64-unknown-linux-musl` to Tier 2 with host
    tools.] (rust-lang/rust#126298)
  - [Enable full tools and profiler for LoongArch Linux targets.]
    (rust-lang/rust#127078)
  - [Unconditionally warn on usage of `wasm32-wasi`.]
    (rust-lang/rust#126662) (see compatibility
    note below)
  - Refer to Rust's [platform support page][platform-support-doc]
    for more information on Rust's tiered platform support.

Libraries
---------

- [Split core's `PanicInfo` and std's `PanicInfo`.]
  (rust-lang/rust#115974) (see compatibility
  note below)
- [Generalize `{Rc,Arc}::make_mut()` to unsized types.]
  (rust-lang/rust#116113)
- [Replace sort implementations with stable `driftsort` and unstable
  `ipnsort`.] (rust-lang/rust#124032) All
  `slice::sort*` and `slice::select_nth*` methods are expected to
  see significant performance improvements. See the [research
  project] (https://github.com/Voultapher/sort-research-rs) for
  more details.
- [Document behavior of `create_dir_all` with respect to empty
  paths.] (rust-lang/rust#125112)
- [Fix interleaved output in the default panic hook when multiple
  threads panic simultaneously.]
  (rust-lang/rust#127397)
- Fix `Command`'s batch files argument escaping not working when
  file name has trailing whitespace or periods (CVE-2024-43402).

Stabilized APIs
---------------

- [`core::error`] (https://doc.rust-lang.org/stable/core/error/index.html)
- [`hint::assert_unchecked`]
  (https://doc.rust-lang.org/stable/core/hint/fn.assert_unchecked.html)
- [`fs::exists`] (https://doc.rust-lang.org/stable/std/fs/fn.exists.html)
- [`AtomicBool::fetch_not`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.fetch_not)
- [`Duration::abs_diff`]
  (https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.abs_diff)
- [`IoSlice::advance`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance)
- [`IoSlice::advance_slices`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance_slices)
- [`IoSliceMut::advance`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance)
- [`IoSliceMut::advance_slices`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance_slices)
- [`PanicHookInfo`]
  (https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html)
- [`PanicInfo::message`]
  (https://doc.rust-lang.org/stable/core/panic/struct.PanicInfo.html#method.message)
- [`PanicMessage`]
  (https://doc.rust-lang.org/stable/core/panic/struct.PanicMessage.html)

These APIs are now stable in const contexts:

- [`char::from_u32_unchecked`]
  (https://doc.rust-lang.org/stable/core/char/fn.from_u32_unchecked.html)
  (function)
- [`char::from_u32_unchecked`]
  (https://doc.rust-lang.org/stable/core/primitive.char.html#method.from_u32_unchecked)
  (method)
- [`CStr::count_bytes`]
  (https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytes)
- [`CStr::from_ptr`]
  (https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.from_ptr)

Cargo
-----

- [Generated `.cargo_vcs_info.json` is always included, even when
  `--allow-dirty` is passed.]
  (rust-lang/cargo#13960)
- [Disallow `package.license-file` and `package.readme` pointing
  to non-existent files during packaging.]
  (rust-lang/cargo#13921)
- [Disallow passing `--release`/`--debug` flag along with the
  `--profile` flag.] (rust-lang/cargo#13971)
- [Remove `lib.plugin` key support in `Cargo.toml`. Rust plugin
  support has been deprecated for four years and was removed in
  1.75.0.] (rust-lang/cargo#13902)

Compatibility Notes
-------------------

* Usage of the `wasm32-wasi` target will now issue a compiler
  warning and request users switch to the `wasm32-wasip1` target
  instead. Both targets are the same, `wasm32-wasi` is only being
  renamed, and this [change to the WASI target]
  (https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html)
  is being done to enable removing `wasm32-wasi` in January 2025.

* We have renamed `std::panic::PanicInfo` to `std::panic::PanicHookInfo`.
  The old name will continue to work as an alias, but will result in
  a deprecation warning starting in Rust 1.82.0.

  `core::panic::PanicInfo` will remain unchanged, however, as this
  is now a *different type*.

  The reason is that these types have different roles:
  `std::panic::PanicHookInfo` is the argument to the [panic
  hook](https://doc.rust-lang.org/stable/std/panic/fn.set_hook.html)
  in std context (where panics can have an arbitrary payload),
  while `core::panic::PanicInfo` is the argument to the
  [`#[panic_handler]`](https://doc.rust-lang.org/nomicon/panic-handler.html)
  in no_std context (where panics always carry a formatted *message*).
  Separating these types allows us to add more useful methods to
  these types, such as `std::panic::PanicHookInfo::payload_as_str()`
  and `core::panic::PanicInfo::message()`.

* The new sort implementations may panic if a type's implementation
  of [`Ord`](https://doc.rust-lang.org/std/cmp/trait.Ord.html) (or
  the given comparison function) does not implement a [total
  order](https://en.wikipedia.org/wiki/Total_order) as the trait
  requires. `Ord`'s supertraits (`PartialOrd`, `Eq`, and `PartialEq`)
  must also be consistent. The previous implementations would not
  "notice" any problem, but the new implementations have a good chance
  of detecting inconsistencies, throwing a panic rather than returning
  knowingly unsorted data.
* [In very rare cases, a change in the internal evaluation order of the trait
  solver may result in new fatal overflow errors.]
  (rust-lang/rust#126128)

Internal Changes
----------------

These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.

- [Add a Rust-for Linux `auto` CI job to check kernel builds.]
  (rust-lang/rust#125209)
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 24, 2024
Pkgsrc changes:
 * Adapt patches, apply to new vendored crates where needed.
 * Back-port rust pull request 130110, "make dist vendoring configurable"
 * Disable "dist vendoring", otherwise cargo would try to access
   the network during the build phase.

Upstream changes:

Version 1.81.0 (2024-09-05)
==========================

Language
--------

- [Abort on uncaught panics in `extern "C"` functions.]
  (rust-lang/rust#116088)
- [Fix ambiguous cases of multiple `&` in elided self lifetimes.]
  (rust-lang/rust#117967)
- [Stabilize `#[expect]` for lints (RFC 2383),]
  (rust-lang/rust#120924) like `#[allow]`
  with a warning if the lint is _not_ fulfilled.
- [Change method resolution to constrain hidden types instead of
  rejecting method candidates.]
  (rust-lang/rust#123962)
- [Bump `elided_lifetimes_in_associated_constant` to deny.]
  (rust-lang/rust#124211)
- [`offset_from`: always allow pointers to point to the same
  address.] (rust-lang/rust#124921)
- [Allow constraining opaque types during subtyping in the trait
  system.] (rust-lang/rust#125447)
- [Allow constraining opaque types during various unsizing casts.]
  (rust-lang/rust#125610)
- [Deny keyword lifetimes pre-expansion.]
  (rust-lang/rust#126762)

Compiler
--------

- [Make casts of pointers to trait objects stricter.]
  (rust-lang/rust#120248)
- [Check alias args for well-formedness even if they have escaping
  bound vars.] (rust-lang/rust#123737)
- [Deprecate no-op codegen option `-Cinline-threshold=...`.]
  (rust-lang/rust#124712)
- [Re-implement a type-size based limit.]
  (rust-lang/rust#125507)
- [Properly account for alignment in `transmute` size checks.]
  (rust-lang/rust#125740)
- [Remove the `box_pointers` lint.]
  (rust-lang/rust#126018)
- [Ensure the interpreter checks bool/char for validity when they
  are used in a cast.] (rust-lang/rust#126265)
- [Improve coverage instrumentation for functions containing nested
  items.] (rust-lang/rust#127199)
- Target changes:
  - [Add Tier 3 `no_std` Xtensa targets:]
    (rust-lang/rust#125141) `xtensa-esp32-none-elf`,
    `xtensa-esp32s2-none-elf`, `xtensa-esp32s3-none-elf`
  - [Add Tier 3 `std` Xtensa targets:]
    (rust-lang/rust#126380) `xtensa-esp32-espidf`,
    `xtensa-esp32s2-espidf`, `xtensa-esp32s3-espidf`
  - [Add Tier 3 i686 Redox OS target:]
    (rust-lang/rust#126192) `i686-unknown-redox`
  - [Promote `arm64ec-pc-windows-msvc` to Tier 2.]
    (rust-lang/rust#126039)
  - [Promote `wasm32-wasip2` to Tier 2.]
    (rust-lang/rust#126967)
  - [Promote `loongarch64-unknown-linux-musl` to Tier 2 with host
    tools.] (rust-lang/rust#126298)
  - [Enable full tools and profiler for LoongArch Linux targets.]
    (rust-lang/rust#127078)
  - [Unconditionally warn on usage of `wasm32-wasi`.]
    (rust-lang/rust#126662) (see compatibility
    note below)
  - Refer to Rust's [platform support page][platform-support-doc]
    for more information on Rust's tiered platform support.

Libraries
---------

- [Split core's `PanicInfo` and std's `PanicInfo`.]
  (rust-lang/rust#115974) (see compatibility
  note below)
- [Generalize `{Rc,Arc}::make_mut()` to unsized types.]
  (rust-lang/rust#116113)
- [Replace sort implementations with stable `driftsort` and unstable
  `ipnsort`.] (rust-lang/rust#124032) All
  `slice::sort*` and `slice::select_nth*` methods are expected to
  see significant performance improvements. See the [research
  project] (https://github.com/Voultapher/sort-research-rs) for
  more details.
- [Document behavior of `create_dir_all` with respect to empty
  paths.] (rust-lang/rust#125112)
- [Fix interleaved output in the default panic hook when multiple
  threads panic simultaneously.]
  (rust-lang/rust#127397)
- Fix `Command`'s batch files argument escaping not working when
  file name has trailing whitespace or periods (CVE-2024-43402).

Stabilized APIs
---------------

- [`core::error`] (https://doc.rust-lang.org/stable/core/error/index.html)
- [`hint::assert_unchecked`]
  (https://doc.rust-lang.org/stable/core/hint/fn.assert_unchecked.html)
- [`fs::exists`] (https://doc.rust-lang.org/stable/std/fs/fn.exists.html)
- [`AtomicBool::fetch_not`]
  (https://doc.rust-lang.org/stable/core/sync/atomic/struct.AtomicBool.html#method.fetch_not)
- [`Duration::abs_diff`]
  (https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.abs_diff)
- [`IoSlice::advance`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance)
- [`IoSlice::advance_slices`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSlice.html#method.advance_slices)
- [`IoSliceMut::advance`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance)
- [`IoSliceMut::advance_slices`]
  (https://doc.rust-lang.org/stable/std/io/struct.IoSliceMut.html#method.advance_slices)
- [`PanicHookInfo`]
  (https://doc.rust-lang.org/stable/std/panic/struct.PanicHookInfo.html)
- [`PanicInfo::message`]
  (https://doc.rust-lang.org/stable/core/panic/struct.PanicInfo.html#method.message)
- [`PanicMessage`]
  (https://doc.rust-lang.org/stable/core/panic/struct.PanicMessage.html)

These APIs are now stable in const contexts:

- [`char::from_u32_unchecked`]
  (https://doc.rust-lang.org/stable/core/char/fn.from_u32_unchecked.html)
  (function)
- [`char::from_u32_unchecked`]
  (https://doc.rust-lang.org/stable/core/primitive.char.html#method.from_u32_unchecked)
  (method)
- [`CStr::count_bytes`]
  (https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.count_bytes)
- [`CStr::from_ptr`]
  (https://doc.rust-lang.org/stable/core/ffi/c_str/struct.CStr.html#method.from_ptr)

Cargo
-----

- [Generated `.cargo_vcs_info.json` is always included, even when
  `--allow-dirty` is passed.]
  (rust-lang/cargo#13960)
- [Disallow `package.license-file` and `package.readme` pointing
  to non-existent files during packaging.]
  (rust-lang/cargo#13921)
- [Disallow passing `--release`/`--debug` flag along with the
  `--profile` flag.] (rust-lang/cargo#13971)
- [Remove `lib.plugin` key support in `Cargo.toml`. Rust plugin
  support has been deprecated for four years and was removed in
  1.75.0.] (rust-lang/cargo#13902)

Compatibility Notes
-------------------

* Usage of the `wasm32-wasi` target will now issue a compiler
  warning and request users switch to the `wasm32-wasip1` target
  instead. Both targets are the same, `wasm32-wasi` is only being
  renamed, and this [change to the WASI target]
  (https://blog.rust-lang.org/2024/04/09/updates-to-rusts-wasi-targets.html)
  is being done to enable removing `wasm32-wasi` in January 2025.

* We have renamed `std::panic::PanicInfo` to `std::panic::PanicHookInfo`.
  The old name will continue to work as an alias, but will result in
  a deprecation warning starting in Rust 1.82.0.

  `core::panic::PanicInfo` will remain unchanged, however, as this
  is now a *different type*.

  The reason is that these types have different roles:
  `std::panic::PanicHookInfo` is the argument to the [panic
  hook](https://doc.rust-lang.org/stable/std/panic/fn.set_hook.html)
  in std context (where panics can have an arbitrary payload),
  while `core::panic::PanicInfo` is the argument to the
  [`#[panic_handler]`](https://doc.rust-lang.org/nomicon/panic-handler.html)
  in no_std context (where panics always carry a formatted *message*).
  Separating these types allows us to add more useful methods to
  these types, such as `std::panic::PanicHookInfo::payload_as_str()`
  and `core::panic::PanicInfo::message()`.

* The new sort implementations may panic if a type's implementation
  of [`Ord`](https://doc.rust-lang.org/std/cmp/trait.Ord.html) (or
  the given comparison function) does not implement a [total
  order](https://en.wikipedia.org/wiki/Total_order) as the trait
  requires. `Ord`'s supertraits (`PartialOrd`, `Eq`, and `PartialEq`)
  must also be consistent. The previous implementations would not
  "notice" any problem, but the new implementations have a good chance
  of detecting inconsistencies, throwing a panic rather than returning
  knowingly unsorted data.
* [In very rare cases, a change in the internal evaluation order of the trait
  solver may result in new fatal overflow errors.]
  (rust-lang/rust#126128)

Internal Changes
----------------

These changes do not affect any public interfaces of Rust, but they
represent significant improvements to the performance or internals
of rustc and related tools.

- [Add a Rust-for Linux `auto` CI job to check kernel builds.]
  (rust-lang/rust#125209)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. finished-final-comment-period The final comment period is finished for this PR / Issue. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-lang Relevant to the language team, which will review and decide on the PR/issue. T-opsem Relevant to the opsem team
Projects
None yet
Development

Successfully merging this pull request may close these issues.