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

library: Compute RUST_EXCEPTION_CLASS from native-endian bytes #130897

Merged
merged 1 commit into from
Sep 28, 2024

Conversation

workingjubilee
Copy link
Member

This makes it appear correctly in hexdumps on both LE and BE platforms.

As discussed extensively in https://github.com/rust-lang/rust/pull/130381/files#r1760034980

This makes it appear correctly in hexdumps on both LE and BE platforms.
@rustbot
Copy link
Collaborator

rustbot commented Sep 26, 2024

r? @thomcc

rustbot has assigned @thomcc.
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-libs Relevant to the library team, which will review and decide on the PR/issue. labels Sep 26, 2024
@thomcc
Copy link
Member

thomcc commented Sep 27, 2024

Nice. Not going to rollup this in case it causes issues and is needed to be identified in a bisection.

@bors r+ rollup=never

@bors
Copy link
Contributor

bors commented Sep 27, 2024

📌 Commit f21f4cd has been approved by thomcc

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 Sep 27, 2024
@bors
Copy link
Contributor

bors commented Sep 28, 2024

⌛ Testing commit f21f4cd with merge 150247c...

@bors
Copy link
Contributor

bors commented Sep 28, 2024

☀️ Test successful - checks-actions
Approved by: thomcc
Pushing 150247c to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Sep 28, 2024
@bors bors merged commit 150247c into rust-lang:master Sep 28, 2024
7 checks passed
@rustbot rustbot added this to the 1.83.0 milestone Sep 28, 2024
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (150247c): comparison URL.

Overall result: ✅ improvements - no action needed

@rustbot label: -perf-regression

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-3.3% [-3.3%, -3.3%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -3.3% [-3.3%, -3.3%] 1

Max RSS (memory usage)

Results (primary 2.9%, secondary -2.2%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
2.9% [2.9%, 2.9%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.2% [-2.2%, -2.2%] 1
All ❌✅ (primary) 2.9% [2.9%, 2.9%] 1

Cycles

Results (primary -2.5%, secondary 6.8%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
6.8% [6.8%, 6.8%] 1
Improvements ✅
(primary)
-2.5% [-2.9%, -2.1%] 2
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.5% [-2.9%, -2.1%] 2

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 771.075s -> 771.117s (0.01%)
Artifact size: 341.37 MiB -> 341.36 MiB (-0.00%)

@workingjubilee workingjubilee deleted the dump-hexes-with-class branch September 28, 2024 23:32
@nbdd0121
Copy link
Contributor

nbdd0121 commented Oct 8, 2024

Note that the Itanium exception ABI says that the convention is that high bit are for vendor and low bits are for language: https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html.

Perhaps put a relnote to say that the langauge is now renamed to MOZ? ;)

nbdd0121 added a commit to nbdd0121/unwinding that referenced this pull request Oct 8, 2024
This was changed in upstream Rust recently [1], so change to follow
suit. The error message is slightly different between
exception from another Rust runtime and a complete foreign exception.
(The message for later is a confusing "Rust exception must be
rethrown").

Link: rust-lang/rust#130897 [1]
nbdd0121 referenced this pull request in nbdd0121/unwinding Oct 8, 2024
This was changed in upstream Rust recently [1], so change to follow
suit. The error message is slightly different between
exception from another Rust runtime and a complete foreign exception.
(The message for later is a confusing "Rust exception must be
rethrown").

Link: rust-lang/rust#130381 [1]
@workingjubilee
Copy link
Member Author

Note that the Itanium exception ABI says that the convention is that high bit are for vendor and low bits are for language: https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html.

Perhaps put a relnote to say that the langauge is now renamed to MOZ? ;)

✔️ MOZ from RUST

@workingjubilee workingjubilee added the relnotes Marks issues that should be documented in the release notes of the next release. label Oct 9, 2024
@RalfJung
Copy link
Member

RalfJung commented Oct 9, 2024

More like ZOM, no? "The low 4 bytes" would have a different order on little-endian than on big-endian.

If all other languages use from_be_bytes, then maybe we should, too?

@RalfJung
Copy link
Member

RalfJung commented Oct 9, 2024

Cc @rust-lang/libs

nbdd0121 added a commit to nbdd0121/unwinding that referenced this pull request Oct 13, 2024
This was changed in upstream Rust recently [1], so change to follow
suit. The error message is slightly different between
exception from another Rust runtime and a complete foreign exception.
(The message for latter is a confusing "Rust exception must be
rethrown").

Link: rust-lang/rust#130897 [1]
@purplesyringa
Copy link
Contributor

purplesyringa commented Oct 25, 2024

Given that the class is changed anyway, should it be replaced with RUSTMOZ\0 for consistency?

@joshtriplett
Copy link
Member

joshtriplett commented Oct 25, 2024

At the risk of bikeshedding, we could use RUSTRUST, since the vendor and language are now one and the same. :)

(Which doesn't do anything about endianness, but shrug.)

@RalfJung
Copy link
Member

RalfJung commented Oct 25, 2024

Given that the class is changed anyway, should it be replaced with RUSTMOZ\0 for consistency?

It's not changed, this PR just computes the same class in a different way.

EDIT: Ah sorry, I misremember the PR this is about.

@RalfJung
Copy link
Member

Note that the Itanium exception ABI says that the convention is that high bit are for vendor and low bits are for language: https://itanium-cxx-abi.github.io/cxx-abi/abi-eh.html.

Perhaps put a relnote to say that the langauge is now renamed to MOZ? ;)

In other words, we are now deviating from the official spec. That should have been discussed a bit more before it is shipped, IMO.

@purplesyringa
Copy link
Contributor

I would advise against RUSTRUST, as it counterintuitively forces Rust compilers that use another ABI to replace "RUST". IMO, keeping MOZ would be more correct.

@workingjubilee
Copy link
Member Author

@RalfJung We've already left the building: The only MUST there is that the de facto string includes "C++\0" if one is a C++ implementation and conforms exactly to the C++ exception-handling semantics.

As we have never exactly done so, it doesn't particularly matter how we handle the string because a C++ implementation won't recognize our exceptions as C++ exceptions, and probably shouldn't.

@nbdd0121
Copy link
Contributor

Except the Itanium C++ exception ABI is the de facto standard for all unwinding on Linux and it specifies that "low 4 bytes indicate the language"?

@workingjubilee
Copy link
Member Author

Which is Rust, yes.

And here it says:

Set the exception_class field in the unwind header. This is a 64-bit value representing the ASCII string "XXXXC++\0", where "XXXX" is a vendor-dependent string. That is, for implementations conforming to this ABI, the low-order 4 bytes of this 64-bit value will be "C++\0".

That's a "will".

So our real choices are to either say we're C++... which, again, we've never done, would be somewhat unusual, and we don't really have any proof that it's a good idea... or not.

And at that point what matters is that if someone examines the value they won't find "C++\0" in it.

@workingjubilee
Copy link
Member Author

alternatively, on the subject of vendor vs. language bytes:

    println!("{}", "🦀".len()) // 4

@nbdd0121
Copy link
Contributor

nbdd0121 commented Oct 25, 2024

It also says

The exception_class field is a language- and implementation-specific identifier of the kind of exception. It allows a personality routine to distinguish between native and foreign exceptions, for example. By convention, the high 4 bytes indicate the vendor (for instance HP\0\0), and the low 4 bytes indicate the language. For the C++ ABI described in this document, the low four bytes are C++\0.

And this what people do:

D sets it to DMD\0D\0\0\0: https://github.com/dlang/dmd/blob/4b94c9facf46a4167acfdc83ed9a92c5bc88c583/druntime/src/rt/dwarfeh.d#L139
GCJ sets it to GNUCJAVA (although this is no longer relevant because GCJ is dead).
GNAT sets it to GNU-ADA: https://github.com/gcc-mirror/gcc/blob/0b22f0585348335369298c7d39afd171758eebe9/gcc/ada/libgnat/s-excmac__gcc.ads#L84
Probably there're other examples in the wild.

This can be useful for telling people what foreign exception is caught when we eventually support catching them. I don't think we gain much for not following the convention here.

@workingjubilee
Copy link
Member Author

Does anyone pattern match on the language names that aren't their own?

@workingjubilee
Copy link
Member Author

workingjubilee commented Oct 25, 2024

It's a fairly trivial change, so I'm not particularly fussed by which... ah... end we want to start from. My main drive was to actually compute it from the string data it is (written backwards though it may be) instead of having an inscrutable constant.

By the way, the ABI docs mention HP\0\0 as the "example" vendor.

...the Itanium was bi-endian, and HP-UX uses big endian.

The "convention" they described was, yes, the one that makes sense on a big endian machine.

@RalfJung
Copy link
Member

Does anyone pattern match on the language names that aren't their own?

I don't think that matters. There is an existing recommendation in the spec, and it is widely followed by implementations. We shouldn't diverge from that without a really good reason, and IMO we don't have a good reason.

qinheping added a commit to qinheping/verify-rust-std that referenced this pull request Nov 7, 2024
771d77c Rollup merge of rust-lang#132495 - Houtamelo:remove_unintended_link, r=jieyouxu
d99f3cf Rollup merge of rust-lang#132493 - Houtamelo:doc_type-ref_html-tag, r=jieyouxu
e24475c Rollup merge of rust-lang#132482 - lukas-code:stab-attrs, r=Noratrieb
21e23b8 Rollup merge of rust-lang#132398 - krtab:add_doc_link, r=Noratrieb
64e2472 Remove unintended link
166cea2 Fix type reference in documents which was being confused with html tags.
cab478a fix some stability annotations
ecd55b1 Rollup merge of rust-lang#132459 - RalfJung:byte_sub_ptr, r=scottmcm
3cd2636 Rollup merge of rust-lang#132455 - RalfJung:const_alloc_layout, r=dtolnay
8fdd6d4 Rollup merge of rust-lang#132451 - RalfJung:less-rustc_allow_const_fn_unstable, r=tgross35
9f63901 Rollup merge of rust-lang#132445 - RalfJung:const-unchecked-shifts, r=tgross35
2b0a6dd Rollup merge of rust-lang#132413 - lolbinarycat:offset_of_nested-docs, r=workingjubilee
c80bb77 offset_from / sub_ptr docs: emphasize that pointers must be in the same allocation
861009d feat(byte_sub_ptr): add ptr::byte_sub_ptr
f4e1fa3 make const_alloc_layout feature gate only about functions that are already stable
bf19bda unchecked_shifts, unchecked_neg are safe-to-const-expose-on-stable, so we can get rid of a bunch of attributes
ebf7505 remove some unnecessary rustc_allow_const_fn_unstable
36cfa4e Auto merge of rust-lang#132206 - tgross35:update-builtins, r=wesleywiser
4283f78 use semantic line break
a4b3916 update offset_of! docs to reflect the stablization of nesting
f0634f0 Add intra-doc link in str::xxx_char_boundary
5d892fb Remove do_not_const_check from Iterator methods
93839e7 Add intra-doc link in str::xxx_prefix
8c0bdb3 Auto merge of rust-lang#132238 - Urgau:midpoint-i64-hackers-impl, r=joboet
9b9ea35 Auto merge of rust-lang#132326 - matthiaskrgr:rollup-ngyw18g, r=matthiaskrgr
94dd5c6 Rollup merge of rust-lang#132321 - betrusted-io:xous/fix-rustc_const_stable-attribute, r=joboet
eb2e420 Auto merge of rust-lang#132231 - lukas-code:rc-plug-leaks, r=tgross35
ed1a265 xous: sync: remove `rustc_const_stable` attribute
6495896 Rollup merge of rust-lang#132270 - yakiimoninja:fs-truncate-docs, r=Noratrieb
057f9e9 Rollup merge of rust-lang#132233 - WaffleLapkin:box-module-split, r=workingjubilee
d0a99e7 Rollup merge of rust-lang#131520 - zachs18:const-str-split, r=Noratrieb
e134006 Auto merge of rust-lang#132277 - workingjubilee:rollup-5e6q6e4, r=workingjubilee
a1b88a0 Auto merge of rust-lang#128985 - GrigorenkoPV:instantly-dangling-pointer, r=Urgau
9318ae3 Rc destructor: tweak inlining
3a686cd Split `boxed.rs` into a few modules
7be29e9 Rollup merge of rust-lang#131441 - SpriteOvO:proc-macro-to-tokens-trait, r=dtolnay
d56ef5a clarified std::fs truncate doc
b0248e2 Auto merge of rust-lang#132145 - RalfJung:stdarch, r=Amanieu
191aa70 clarified doc for `std::fs::OpenOptions.truncate()`
a5aa408 New lint: `dangling_pointers_from_temporaries`
8cdb783 Rollup merge of rust-lang#131391 - ChaiTRex:isqrt, r=scottmcm,tgross35
4f4a6c6 we can now enable the 'const stable fn must be stable' check
79c45be bump stdarch
848fcd5 Auto merge of rust-lang#132251 - jieyouxu:rollup-mtv9mpd, r=jieyouxu
e212260 Auto merge of rust-lang#132200 - Mark-Simulacrum:strengthen-cross-lang, r=RalfJung
ac1ec5f Support `char::is_digit` in const contexts
b534a02 Use Hacker's Delight impl in `i64::midpoint` instead of wide `i128` impl
28223bd Rc/Arc: don't leak the allocation if drop panics
5d8140d add test for panicking drop in Box/Rc/Arc
cde6279 Auto merge of rust-lang#131284 - dingxiangfei2009:rename-smart-ptr-to-coerce-referent, r=compiler-errors
c667683 Auto merge of rust-lang#132191 - Urgau:midpoint_signed_towards_zero, r=dtolnay
80f0aa3 Add a new trait `proc_macro::ToTokens`
3cfffb8 Update compiler-builtins to 0.1.136
45d8393 Auto merge of rust-lang#131715 - tgross35:add-const_sockaddr_setters, r=Amanieu
ec76942 Make clearer that guarantees in ABI compatibility are for Rust only
139f632 Add test for all midpoint expectations
4612afa Round negative signed integer towards zero in `iN::midpoint`
06b5c8e Rollup merge of rust-lang#132019 - daboross:document-partialeq-oncelock, r=Mark-Simulacrum
658e709 Auto merge of rust-lang#131349 - RalfJung:const-stability-checks, r=compiler-errors
db3b9fc Rollup merge of rust-lang#132137 - RalfJung:behavior, r=Noratrieb
6daffe4 get rid of the internal unlikely macro
d2ff6a2 Re-do recursive const stability checks
295b932 library: consistently use American spelling for 'behavior'
2348c06 Rollup merge of rust-lang#131457 - kpreid:fnaddr, r=dtolnay
2da7b7f Auto merge of rust-lang#132121 - workingjubilee:rollup-yrtn33e, r=workingjubilee
5cf142b Rollup merge of rust-lang#132113 - LaihoE:pattern_as_utf8_default_impl, r=workingjubilee
1f2f88e Rollup merge of rust-lang#132101 - youknowone:thread_local-gyneiene, r=tgross35
6c81340 Rollup merge of rust-lang#132048 - mustartt:aix-random-impl, r=workingjubilee
980e5a2 Rollup merge of rust-lang#131851 - sunshowers:musl-posix, r=workingjubilee
d25ee97 Avoid use imports in thread_local_inner! in statik
b4ea08d Auto merge of rust-lang#132116 - matthiaskrgr:rollup-3a0ia4r, r=matthiaskrgr
0ae2951 Rollup merge of rust-lang#131790 - nmathewson:doc_socketaddr_representation, r=tgross35
8baae66 Auto merge of rust-lang#131985 - compiler-errors:const-pred, r=fee1-dead
115a851 provide default impl for as_utf8_pattern
a92f55c Auto merge of rust-lang#123550 - GnomedDev:remove-initial-arc, r=Noratrieb
c9460bf Document textual format of SocketAddrV{4,6}
78f4ed3 Remove associated type based effects logic
21eb2c2 [musl] use posix_spawn if a directory change was requested
03798ad Rollup merge of rust-lang#130225 - adetaylor:rename-old-receiver, r=wesleywiser
a45e030 Rollup merge of rust-lang#132066 - tifv:ptr-docs-typo, r=Amanieu
927edad Rollup merge of rust-lang#132065 - tifv:dangling-docs, r=Noratrieb
ded2a0a Rollup merge of rust-lang#132060 - joshtriplett:innermost-outermost, r=jieyouxu
e62b2cc Rollup merge of rust-lang#132039 - a1phyr:vecdeque_read_exact, r=Noratrieb
76e75ae Rollup merge of rust-lang#130991 - LaihoE:vectorized_slice_contains, r=Noratrieb
6799f85 const fn str::split_at*
887bcf6 const fn str::is_char_boundary
01ed719 vectorized SliceContains
1bb8bde s/SmartPointer/CoerceReferent/g
843347f fix a typo in documentation of pointer::sub_ptr()
10f64a7 fix documentation of ptr::dangling() function
728a8d7 "innermost", "outermost", "leftmost", and "rightmost" don't need hyphens
282790f Specialize `read_exact` and `read_buf_exact` for `VecDeque`
054b256 Rollup merge of rust-lang#132031 - slanterns:rc_default, r=ibraheemdev
05b4955 Rollup merge of rust-lang#131707 - clarfonthey:constify-core-tests, r=thomcc
b0fc9c7 Auto merge of rust-lang#131929 - LaihoE:replace_default_capacity, r=joboet
5c416b4 AIX use /dev/urandom for impl
09e26cb better default capacity for str::replace
3a5e669 Rename Receiver -> LegacyReceiver
224a60d refactor `Arc<T>::default`
fe5101d optimize `Rc<T>::default`
507193a Rollup merge of rust-lang#131697 - ShE3py:rt-arg-lifetimes, r=Amanieu
61fa53e Document PartialEq impl for OnceLock
2e8dd5b Rollup merge of rust-lang#132003 - RalfJung:abi-compat-docs, r=traviscross
7f91dbe Rollup merge of rust-lang#130350 - RalfJung:strict-provenance, r=dtolnay
8499ec3 update ABI compatibility docs for new option-like rules
6d2a437 move strict provenance lints to new feature gate, remove old feature gates
4461171 stabilize Strict Provenance and Exposed Provenance
e2b2c3a fix docs
20ed6b5 replace FindFirstFileW with FindFirstFileExW and apply optimization
a065b8e replace FindFirstFileW with FindFirstFileExW and regenerate bindings
362aec6 Auto merge of rust-lang#131948 - matthiaskrgr:rollup-c9rvzu6, r=matthiaskrgr
7628c4f Rollup merge of rust-lang#131921 - klensy:statx_all, r=ChrisDenton
affe042 Rollup merge of rust-lang#131772 - GnomedDev:remove-proc_macro-todo, r=petrochenkov
5615efc Auto merge of rust-lang#131907 - saethlin:update-compiler-builtins, r=tgross35
b6b2903 Update `compiler-builtins` to 0.1.134
b714f9d Rollup merge of rust-lang#131919 - RalfJung:zero-sized-accesses, r=jhpratt
fb67079 Rollup merge of rust-lang#131890 - printfn:precise-capturing-docs, r=traviscross
642ab07 Rollup merge of rust-lang#127462 - Ayush1325:uefi-env, r=joboet
bac3891 Remove the Arc rt::init allocation for thread info
85f6f48 Auto merge of rust-lang#131816 - Zalathar:profiler-feature, r=Kobzol
f843b26 replace STATX_ALL with (STATX_BASIC_STATS | STATX_BTIME) as former is deprecated
aabdd7d zero-sized accesses are fine on null pointers
ff3f33f Update `use` keyword docs to describe precise capturing
c949985 std: uefi: Use common function for UEFI shell
f973e62 std: uefi: Add basic Env variables
63a4a9b Auto merge of rust-lang#131895 - jieyouxu:rollup-jyt3pic, r=jieyouxu
39ccfc9 Rollup merge of rust-lang#126207 - devnexen:stack_overflow_libc_upd, r=joboet
e08bce6 Auto merge of rust-lang#131841 - paulmenage:futex-abstraction, r=joboet
eba461c Rollup merge of rust-lang#131866 - jieyouxu:thread_local, r=jhpratt
80bbaa9 Rollup merge of rust-lang#131858 - AnthonyMikh:AnthonyMikh/repeat_n-is-not-that-special-anymore, r=jhpratt
5ec2cbc Rollup merge of rust-lang#131809 - collinoc:fix-retain-mut-docs, r=jhpratt
fe19eb6 Rollup merge of rust-lang#131774 - thesummer:rtems-add-getentropy, r=joboet
fca7375 Rollup merge of rust-lang#130136 - GKFX:stabilize-const-pin, r=dtolnay
07aaa64 Add entropy source for RTEMS
1b957f4 Rollup merge of rust-lang#131850 - lexeyOK:master, r=compiler-errors
a6871b8 Rollup merge of rust-lang#131823 - thesummer:bump-libc-0.2.160, r=workingjubilee
848aed9 Rollup merge of rust-lang#131654 - betrusted-io:xous-various-fixes, r=thomcc
a6e300e Avoid shadowing user provided types or type aliases in `thread_local!`
a993e1d remove outdated documentation for `repeat_n`
4d2c969 Auto merge of rust-lang#131572 - cuviper:ub-index_range, r=thomcc
f905a0c Bump libc to 0.2.161
beee93f std::unix::stack_overflow::drop_handler addressing todo through libc update
c8f71dc Missing parenthesis
01bce29 Abstract the state type for futexes
0ab703c Rollup merge of rust-lang#131835 - ferrocene:amanjeev/add-missing-attribute-unwind, r=Noratrieb
bac74b6 Rollup merge of rust-lang#131833 - c-ryan747:patch-1, r=Noratrieb
0d7c889 Auto merge of rust-lang#130223 - LaihoE:faster_str_replace, r=thomcc
34c8228 Do not run test where it cannot run
d73f924 Add must_use to CommandExt::exec
aa027e9 Make `profiler_builtins` an optional dependency of sysroot, not std
019ad0c Remove TODO in proc_macro now `const_refs_to_static` is stable
3b5d8a2 Fix predicate signatures in retain_mut docs
6c85d31 Auto merge of rust-lang#131797 - matthiaskrgr:rollup-lzpze2k, r=matthiaskrgr
3a5fdfc Partially stabilize const_pin
7caa6d2 Rollup merge of rust-lang#131730 - zlfn:master, r=tgross35
1e13241 Auto merge of rust-lang#131792 - matthiaskrgr:rollup-480nwg4, r=matthiaskrgr
1581f56 Rollup merge of rust-lang#130822 - bjoernager:non-null-from-ref, r=dtolnay
f7b3231 Auto merge of rust-lang#131767 - cuviper:bump-stage0, r=Mark-Simulacrum
cdbd127 Rollup merge of rust-lang#131746 - slanterns:once_box_order, r=joboet
6f3e65c Rollup merge of rust-lang#131712 - tgross35:const-lazy_cell_into_inner, r=joboet
151c0c7 Auto merge of rust-lang#131460 - jwong101:default-placement-new, r=ibraheemdev
43f97fb update bootstrap configs
eae13d1 replace placeholder version
e35d9fe relax a memory order in `once_box`
fbde7e8 Rollup merge of rust-lang#131521 - jdonszelmann:rc, r=joboet
9d9ea42 Rollup merge of rust-lang#130568 - eduardosm:const-float-methods, r=RalfJung,tgross35
435ce04 Rollup merge of rust-lang#129794 - Ayush1325:uefi-os-expand, r=joboet
bfd32fa Refactor `floating` macro and nofloat panic message
7d1457e Auto merge of rust-lang#131723 - matthiaskrgr:rollup-krcslig, r=matthiaskrgr
148ed85 Rename debug! macro to impl_Debug!
db2efb0 Combine impl_int and impl_uint
1897d05 Make some float methods unstable `const fn`
76342d9 Auto merge of rust-lang#131724 - matthiaskrgr:rollup-ntgkkk8, r=matthiaskrgr
da7ca22 Rollup merge of rust-lang#131706 - GKFX:fix-const-hacks, r=tgross35
54072ab Rollup merge of rust-lang#131496 - bjoernager:const-make-ascii, r=dtolnay
1695b0a Rollup merge of rust-lang#130608 - YohDeadfall:cstr-from-into-str, r=workingjubilee
f1ee2cd Rollup merge of rust-lang#131339 - HeroicKatora:set_ptr_value-documentation, r=Mark-Simulacrum
ffc4a6c Rollup merge of rust-lang#122670 - beetrees:non-unicode-option-env-error, r=compiler-errors
cc7730e Auto merge of rust-lang#129458 - EnzymeAD:enzyme-frontend, r=jieyouxu
eeab9d4 Stabilise 'const_make_ascii'
ec0b0df Add a `const_sockaddr_setters` feature
e788410 Mark LazyCell::into_inner unstably const
acaf7e2 Run most core::num tests in const context too
63f3836 Fix two const-hacks
34d920c `rt::Argument`: elide lifetimes
ecb3830 Rollup merge of rust-lang#131384 - saethlin:precondition-tests, r=ibraheemdev
ea7a0c6 Rollup merge of rust-lang#129424 - coolreader18:stabilize-pin_as_deref_mut, r=dtolnay
843c9e9 Auto merge of rust-lang#131672 - matthiaskrgr:rollup-gyzysj4, r=matthiaskrgr
3b92996 uefi: Implement getcwd and chdir
8d35aa9 Rollup merge of rust-lang#131616 - RalfJung:const_ip, r=tgross35
b6cfaeb Rollup merge of rust-lang#131274 - workingjubilee:stabilize-the-one-that-got-away, r=scottmcm
6d8235e Rollup merge of rust-lang#130629 - Dirbaio:net-from-octets, r=tgross35
88634c8 Rollup merge of rust-lang#128967 - devnexen:get_path_fbsd_upd, r=joboet
d6318f3 Auto merge of rust-lang#126557 - GrigorenkoPV:vec_track_caller, r=joboet
d11e388 Auto merge of rust-lang#131662 - matthiaskrgr:rollup-r1wkfxw, r=matthiaskrgr
089c495 rename rcbox in other places as per review comments
2cfa6d0 core/net: use hex for ipv6 doctests for consistency.
9ae0e8b core/net: add Ipv[46]Addr::from_octets, Ipv6Addr::from_segments
da6c63c Rollup merge of rust-lang#131646 - RalfJung:unix-miri-fallbacks, r=joboet
87ea4bb Rollup merge of rust-lang#131644 - RalfJung:win-miri, r=joboet
928b99c library: xous: mark alloc as `FIXME(static_mut_refs)`
dde2ff0 xous: ffi: correct syscall number for adjust_process
c3955e4 net: fix dead code warning
3919c4f std: xous: add support for args and env
9c1e162 Auto merge of rust-lang#125679 - clarfonthey:escape_ascii, r=joboet
262c3fb unwind: update unwinding dependency to 0.2.3
4c63749 sys/unix: add comments for some Miri fallbacks
e3f701c remove outdated comment now that Miri is on CI
e2c210e sys/windows: remove miri hack that is only needed for win7
1799481 switch unicode-data back to 'static'
ddfd2ea merge const_ipv4 / const_ipv6 feature gate into 'ip' feature gate
b6c0376 Rollup merge of rust-lang#131418 - coolreader18:wasm-exc-use-stdarch, r=bjorn3
1ee9b69 Rollup merge of rust-lang#131120 - tgross35:stabilize-const_option, r=RalfJung
6fc4b1a Fix bug where `option_env!` would return `None` when env var is present but not valid Unicode
d72915f Fix typo thing->thin referring to pointer
a2d85a1 Stabilize `const_option`
4a9ad4a Rollup merge of rust-lang#131617 - RalfJung:const_cow_is_borrowed, r=tgross35
113c6c0 Rollup merge of rust-lang#131503 - theemathas:stdin_read_line_docs, r=Mark-Simulacrum
7a51595 remove const_cow_is_borrowed feature gate
7420c36 Rollup merge of rust-lang#131233 - joboet:stdout-before-main, r=tgross35
08e7188 Rollup merge of rust-lang#130954 - workingjubilee:stabilize-const-mut-fn, r=RalfJung
3febfb3 std: fix stdout-before-main
3b820ee library: Stabilize `const_replace`
ee21064 library: Stabilize `const_ptr_write`
36ff2c8 library: Stabilize `const_intrinsic_forget`
4f124de Rollup merge of rust-lang#131289 - RalfJung:duration_consts_float, r=tgross35
de76914 Rollup merge of rust-lang#130962 - nyurik:opts-libs, r=cuviper
76ce3a9 Rollup merge of rust-lang#124874 - jedbrown:float-mul-add-fast, r=saethlin
de18ce1 Avoid superfluous UB checks in `IndexRange`
eb8ff20 Rollup merge of rust-lang#131463 - bjoernager:const-char-encode-utf8, r=RalfJung
964c91b Rollup merge of rust-lang#131287 - RalfJung:const_result, r=tgross35
a8b0950 Rollup merge of rust-lang#131109 - tgross35:stabilize-debug_more_non_exhaustive, r=joboet
637b515 Rollup merge of rust-lang#131065 - Voultapher:port-sort-test-suite, r=thomcc
eeb881d intrinsics.fmuladdf{16,32,64,128}: expose llvm.fmuladd.* semantics
2b6b22c Single commit implementing the enzyme/autodiff frontend
00785c0 stabilize const_result
12b8028 stabilize duration_consts_float
c8d357c Rollup merge of rust-lang#131512 - j7nw4r:master, r=jhpratt
34f7831 rename RcBox in other places too
cd0a8f5 rename RcBox to RcInner for consistency
dd6dd70 Fixing rustDoc for LayoutError.
7fdd545 Rollup merge of rust-lang#130741 - mrkajetanp:detect-b16b16, r=Amanieu
77f7b2f Rollup merge of rust-lang#130538 - ultrabear:ultrabear_const_from_ref, r=workingjubilee
fca0919 More clearly document Stdin::read_line
e4a9064 Stabilise 'const_char_encode_utf8';
8547f51 allocate before calling T::default in <Arc<T>>::default()
669e255 allocate before calling T::default in <Box<T>>::default()
5ef6f83 rustc_target: Add sme-b16b16 as an explicit aarch64 target feature
74264e3 stdarch: Bump stdarch submodule
a5529ee Clean up is_aligned_and_not_null
db5a9a7 Add more precondition check tests
528dda2 Allow zero-size reads/writes on null pointers
86c7526 Optimize escape_ascii
36a90d7 Rollup merge of rust-lang#131462 - cuviper:open_buffered-error, r=RalfJung
49220cd Rollup merge of rust-lang#131449 - nickrum:wasip2-net-decouple-fd, r=alexcrichton
ff37c08 Rollup merge of rust-lang#131383 - AngelicosPhosphoros:better_doc_for_slice_slicing_at_ends, r=cuviper
136ec3a Rollup merge of rust-lang#130827 - fmease:library-mv-obj-save-dyn-compat, r=ibraheemdev
8cdea8c Add "not guaranteed to be equal"
db9377d Mention allocation errors for `open_buffered`
7e225fa Apply suggestions from code review
0ce4f76 Expand `ptr::fn_addr_eq()` documentation.
885e3d1 Library: Rename "object safe" to "dyn compatible"
5f495ee Decouple WASIp2 sockets from WasiFd
78670fb stabilize `{slice,array}::from_mut`
7153288 Update library/std/src/sys/pal/unix/process/process_vxworks.rs
cd0d5be fix ref in process_vxworks.rs
01e7f5f Update library/std/src/sys/pal/unix/process/process_unix.rs
fbb514c Change a few `&Option<T>` into `Option<&T>`
cc1e8b5 Use throw intrinsic from stdarch in wasm libunwind
bc755bb Stabilize Pin::as_deref_mut
fcc990d Stabilize `isqrt` feature
b946b83 Add docs about slicing slices at the ends
9ca739e cfg out checks in add and sub but not offset
8293e74 Add precondition checks to ptr::offset, ptr::add, ptr::sub
c65244c Rollup merge of rust-lang#131308 - mati865:gnullvm-f16-f128, r=tgross35
6a809c7 Rollup merge of rust-lang#128399 - mammothbane:master, r=Amanieu,tgross35
723693e liballoc: introduce String, Vec const-slicing
fee7e5e Auto merge of rust-lang#128651 - folkertdev:naked-asm-macro-v2, r=Amanieu
61eff8f Expand set_ptr_value / with_metadata_of docs
7c3b7e7 Rollup merge of rust-lang#131335 - dacianpascu06:fix-typo, r=joboet
8e3076e Rollup merge of rust-lang#131307 - YohDeadfall:prctl-set-name-dbg-assert, r=workingjubilee
b8c51a6 grammar fix
4ca50c3 disallow `asm!` in `#[naked]` functions
cc09cb0 implement `naked_asm` macro
dbb2281 Rollup merge of rust-lang#131316 - programmerjake:patch-4, r=Noratrieb
4b276e6 Auto merge of rust-lang#131314 - tgross35:update-builtins, r=tgross35
5dc3e7c Fix typo in primitive_docs.rs
686d25d Auto merge of rust-lang#130540 - veera-sivarajan:fix-87525, r=estebank
9555c10 Update `compiler-builtins` to 0.1.133
0f71b38 enable f16 and f128 on windows-gnullvm targets
d14d771 Auto merge of rust-lang#131302 - matthiaskrgr:rollup-56kbpzx, r=matthiaskrgr
b8dd441 Android: Debug assertion after setting thread name
fcd199d Rollup merge of rust-lang#131281 - RalfJung:const-cell, r=Amanieu
71aa514 Auto merge of rust-lang#131221 - XrXr:bump-compiler-builtins, r=tgross35
b7c90c6 library: Stabilize const `MaybeUninit::assume_init_mut`
0418d54 Add a Lint for Pointer to Integer Transmutes in Consts
460459d Rollup merge of rust-lang#131256 - RalfJung:f16-f128-const, r=ibraheemdev
a818a4d Rollup merge of rust-lang#131094 - joboet:lazy_once_box, r=ibraheemdev
2ed6282 make Cell unstably const
575391b move f16/f128 const fn under f16/f128 feature gate
b3da4ed Stabilize `const_slice_split_at_mut` and `const_slice_first_last_chunk`
bbe8bf7 Rollup merge of rust-lang#131267 - okaneco:bufread_skip_until, r=tgross35
65049d1 Rollup merge of rust-lang#131105 - slanterns:literal_c_str, r=petrochenkov
7001dd5 Rollup merge of rust-lang#130403 - eduardosm:stabilize-const_slice_from_raw_parts_mut, r=workingjubilee
0f43ffb Update compiler-builtins to 0.1.132
7d4319e Rollup merge of rust-lang#131177 - workingjubilee:stabilize-const-mut-referees, r=tgross35
6709307 Rollup merge of rust-lang#130518 - scottmcm:stabilize-controlflow-extra, r=dtolnay
b732d23 Stabilize `BufRead::skip_until`
eb2806b Auto merge of rust-lang#130157 - eduardosm:stabilize-const_float_classify, r=RalfJung
c822d33 update libc version
26b231b std::fs::get_path freebsd update.
1bd16cd Rollup merge of rust-lang#131197 - EFanZh:avoid-emptyness-check-in-peekmut-pop, r=Amanieu
8cfa0ca Avoid emptiness check in `PeekMut::pop`
86fa474 Rollup merge of rust-lang#131163 - JakenHerman:master, r=Nadrieril
6b57e57 Auto merge of rust-lang#128711 - clarfonthey:default-iters-hash, r=dtolnay
254af0b Add `get_line` confusable to `Stdin::read_line()`
f89b8dc impl Default for Hash{Map,Set} iterators that don't already have it
0c22ea8 Auto merge of rust-lang#127912 - joboet:tls_dtor_thread_current, r=cuviper
2b4f6ec Auto merge of rust-lang#131148 - Urgau:hashbrown-0.15, r=Amanieu
26013cd library: Stabilize `const_slice_first_last`
51ed903 library: Stabilize `const_unsafecell_get_mut`
cd6c1cc library: Stabilize `const_ptr_as_ref`
ecb0f03 library: Stabilize `const_str_as_mut`
78ad293 library: Stabilize `const_str_from_utf8_unchecked_mut`
db56087 std: make `thread::current` available in all `thread_local!` destructors
d5599a7 Rollup merge of rust-lang#131141 - RalfJung:mpmc-test, r=Amanieu
487946f Update hashbrown to 0.15 and adjust some methods
0d19119 mpmc doctest: make sure main thread waits for child threads
a7d53da Auto merge of rust-lang#130829 - Urgau:option_array_transpose, r=ibraheemdev
7c896fc Auto merge of rust-lang#128204 - GuillaumeGomez:integers-opti, r=workingjubilee
f19cac1 std: replace `LazyBox` with `OnceBox`
e2ebf04 Stabilize `const_slice_from_raw_parts_mut`
a575a8b Auto merge of rust-lang#131111 - matthiaskrgr:rollup-n6do187, r=matthiaskrgr
82e1372 Rollup merge of rust-lang#130773 - bjoernager:master, r=thomcc
b33d815 Rollup merge of rust-lang#130229 - RalfJung:ptr-offset-unsigned, r=scottmcm
bf40ab2 Implemented FromStr for CString and TryFrom<CString> for String
ea51d16 Stabilize `debug_more_non_exhaustive`
f8db877 update `Literal`'s intro
bcfd953 Auto merge of rust-lang#131098 - GuillaumeGomez:rollup-kk74was, r=GuillaumeGomez
3a8939e Rollup merge of rust-lang#131085 - RalfJung:miri-slow-test, r=tgross35
90d63b1 Auto merge of rust-lang#126839 - obeis:mpmc, r=Amanieu
4451aee Remove the need to provide the maximum number of digits to `impl_Display` macro
85c1cec Simplify `impl_Display` macro
c4be3da Small optimization for integers Display implementation
82014ee make test_lots_of_insertions test take less long in Miri
f688d7d Enable `f16` tests on non-GNU Windows
e97c379 Rollup merge of rust-lang#130966 - RalfJung:ptr-metadata-const-stable, r=scottmcm
e4d621e Rollup merge of rust-lang#130961 - tgross35:f16-x86-apple, r=thomcc
3c9808b Rollup merge of rust-lang#130914 - compiler-errors:insignificant-dtor, r=Amanieu
99e9853 Rollup merge of rust-lang#129638 - nickrum:wasip2-net, r=alexcrichton
e2a020e Add multi-producer, multi-consumer channel (mpmc)
cbc9e28 Port sort-research-rs test suite Rust stdlib tests
b362019 Rollup merge of rust-lang#130972 - RalfJung:const_cell_into_inner, r=dtolnay
109f270 Rollup merge of rust-lang#129003 - Voultapher:improve-ord-docs, r=workingjubilee
07542a5 Rollup merge of rust-lang#123932 - adamse:global-alloc-safety-preconds-positive, r=tgross35
2332c3d Rollup merge of rust-lang#130931 - GuillaumeGomez:standalone-crate, r=notriddle
faa018e Rename doctest attribute `standalone-crate` into `standalone_crate` for coherency
e36be64 Rollup merge of rust-lang#130743 - YohDeadfall:net-nonblocking-doc, r=Mark-Simulacrum
a31f882 Rollup merge of rust-lang#130416 - BatmanAoD:130122-sort-by-docs, r=Mark-Simulacrum
08ac3a0 Remove duplicate section
b4307a5 Auto merge of rust-lang#128321 - BatmanAoD:catch-unwind-doc-update, r=Mark-Simulacrum
9ae087c Fix std tests for wasm32-wasip2 target
b0cc902 Hook up std::net to wasi-libc on wasm32-wasip2 target
7311aa8 Auto merge of rust-lang#123778 - jhorstmann:optimize-upper-lower-auto-vectorization, r=the8472
c3d3d1a Enable `f16` tests on x86 Apple platforms
3aae770 Auto merge of rust-lang#129385 - tgross35:more-platforms-enable-f16, r=Mark-Simulacrum
2640736 Auto merge of rust-lang#130792 - tgross35:update-builtins, r=Amanieu
383f0de Rename `standalone` doctest attribute into `standalone-crate`
1f8a773 Update compiler_builtins to 0.1.130
7a5052a Rollup merge of rust-lang#128778 - RalfJung:atomic-read-read-races, r=Mark-Simulacrum
098ada1 Auto merge of rust-lang#130964 - matthiaskrgr:rollup-suriuub, r=matthiaskrgr
81fcbcd Further clarificarion for atomic and UnsafeCell docs:
e7c99a7 allow mixed-size atomic reads
addd05e atomics: allow atomic and non-atomic reads to race
b8c2a2a stabilize const_cell_into_inner
7946445 make ptr metadata functions callable from stable const fn
9f50f5a Auto merge of rust-lang#130897 - workingjubilee:dump-hexes-with-class, r=thomcc
e66058d Rollup merge of rust-lang#130922 - tyilo:udp-unspecified, r=ibraheemdev
1bd2532 Rollup merge of rust-lang#125404 - a1phyr:fix-read_buf-uses, r=workingjubilee
288b9ca Update Unicode escapes;
05590f7 Enable `f16` on platforms that were missing conversion symbols
3a00bff Auto merge of rust-lang#130946 - matthiaskrgr:rollup-ia4mf0y, r=matthiaskrgr
c2bd1e3 Rollup merge of rust-lang#130926 - ChrisDenton:cc-1-1-22, r=tgross35
7ddd566 Rollup merge of rust-lang#129087 - slanterns:option_get_or_insert_default, r=dtolnay
93916ed Mark some more smart pointers as insignificant
118d2e4 Mark some more types as having insignificant dtor
9b4776b Add 'from_ref' and 'from_mut' constructors to 'core::ptr::NonNull';
56523a9 Update Cargo.lock
aabd713 Apply review feedback
df28bde Apply round 1 of review comments
cb0529a Fix mistake in example
a9eb97b Improve Ord docs
04d9145 Reference UNSPECIFIED instead of INADDR_ANY in join_multicast_v4
edc72ca Rollup merge of rust-lang#130892 - tgross35:library-cargo-update, r=Noratrieb
fdf84bf Rollup merge of rust-lang#130875 - folkertdev:naked-asm-bootstrap, r=tgross35
1b3f488 Rollup merge of rust-lang#130846 - ChrisDenton:revert-break, r=Noratrieb
89c9ef6 Rollup merge of rust-lang#130313 - c410-f3r:unlock-rfc-2011, r=thomcc
ea82a96 Rollup merge of rust-lang#130880 - RalfJung:const-hack, r=scottmcm
be1d9d6 Rollup merge of rust-lang#130861 - cuviper:sun-path-offset, r=ibraheemdev
c1c0a1b Rollup merge of rust-lang#130845 - RalfJung:utf8chunk, r=tgross35
805d196 Rollup merge of rust-lang#130279 - theemathas:manually-drop-docs, r=thomcc,traviscross
f40ec5a library: Compute `RUST_EXCEPTION_CLASS` from native-endian bytes
eae051b Partially update `library/Cargo.lock`
532cd85 Add `sun_path` to the fake doc `sockaddr_un`
f0660de add missing FIXME(const-hack)
0580e66 Add `[Option<T>; N]::transpose`
1341724 update `compiler_builtins` to `0.1.126`
cd704d4 add a bootstrap variant of `naked_asm`
a781a4a Stabilize the `map`/`value` methods on `ControlFlow`
ff45313 Use `&raw` in the standard library
3d03634 Use `mem::offset_of!` for `sockaddr_un.sun_path`
f50b2ba Rollup merge of rust-lang#130842 - Noratrieb:tracking-issue-inprogress, r=jieyouxu
c50befe Rollup merge of rust-lang#130832 - RalfJung:sort-cfg-mess, r=workingjubilee
d50c54a Rollup merge of rust-lang#130819 - bjoernager:char-must-use-len-utf, r=Noratrieb
811ce77 Rollup merge of rust-lang#130811 - RalfJung:random, r=joboet
275fb0e Revert Break into the debugger on panic (129019)
f560508 Utf8Chunks: add link to Utf8Chunk
8847429 Add tracking issue for io_error_inprogress
fa38b29 fix some cfg logic around optimize_for_size and 16-bit targets
b9ef35a Auto merge of rust-lang#130816 - matthiaskrgr:rollup-jy25phv, r=matthiaskrgr
e4f89ec Add 'must_use' attribute to 'char::len_utf8' and 'char::len_utf16';
bcb9d23 Rollup merge of rust-lang#130810 - kromych:master, r=workingjubilee
a5a32e2 Rollup merge of rust-lang#130595 - no1wudi:master, r=ibraheemdev
6a06555 Rollup merge of rust-lang#130549 - biabbas:riscv32_wrs_vxworks, r=nnethercote
f67efdd add link from random() helper fn to extensive DefaultRandomSource docs
4a7aeff Auto merge of rust-lang#130803 - cuviper:file-buffered, r=joshtriplett
54834b6 Don't trap into the debugger on panics under Linux
2c408b1 Rollup merge of rust-lang#130789 - aviramha:add_inprogress, r=Noratrieb
8849d13 Rollup merge of rust-lang#130788 - tgross35:memchr-pinning, r=Noratrieb,Mark-Simulacrum
2ab86f0 Add a tracking issue for `file_buffered`
963cefb Dogfood `feature(file_buffered)`
15d69c9 Pre-allocate buffers in `File::open_buffered` and `create_buffered`
eb07a61 Add `File::open_buffered` and `create_buffered`
92d5cef Auto merge of rust-lang#129587 - Voultapher:opt-for-size-variants-of-sort-impls, r=cuviper
c86f1ce add InProgress ErrorKind gated behind io_error_inprogress feature
6d8f5d8 Pin memchr to 2.5.0 in the library rather than rustc_ast
194bbc7 Auto merge of rust-lang#130738 - bjoernager:const-make-ascii, r=jhpratt
c47920f Initial std library support for NuttX
622d08c Mark and implement 'make_ascii_uppercase' and 'make_ascii_lowercase' in '[u8]' and 'str' as const;
668b21a Rollup merge of rust-lang#130762 - RalfJung:const_intrinsic_copy, r=dtolnay
43a4d34 Rollup merge of rust-lang#129545 - notriddle:notriddle/toolbar-v2, r=GuillaumeGomez
57557c9 Add a comment to `Read::read_buf`
4a11249 Add tests
f342675 Fix `io::default_read_to_end` uses of `read_buf`
57f279d Fix `io::BufReader` uses of `read_buf`
8472204 Fix `io::Take::read_buf`
db0f337 stabilize const_intrinsic_copy
27136c4 Add fast path for ascii to ascii in str::replace
fc983ba Fix up standard library intro
6d41b99 Clarifications for set_nonblocking methods
f5406a5 Improve autovectorization of to_lowercase / to_uppercase functions
bab810c random: add tracking issue, address other comments
849258c std: switch to faster random sources on macOS and most BSDs
a095a76 std: implement the `random` feature
ba6158c Rollup merge of rust-lang#130723 - D0liphin:master, r=workingjubilee
776d9ef Rollup merge of rust-lang#130713 - bjoernager:const-char-make-ascii, r=Noratrieb
337c634 Rollup merge of rust-lang#130659 - bjoernager:const-char-encode-utf16, r=dtolnay
8ffc170 Rollup merge of rust-lang#129550 - kornelski:boxasstr, r=joshtriplett,dtolnay
a28cdff Reformat using the new identifier sorting from rustfmt
07a62f4 reword edge-conditions documentation on all slice 'sort' functions; resolves rust-lang#130122
9bcb2d9 Add test for `available_parallelism()`
474b9af Mark 'make_ascii_uppercase' and 'make_ascii_lowercase' in 'u8' as const; Rename 'const_char_make_ascii' feature gate to 'const_make_ascii';
b3d4fde Rollup merge of rust-lang#130692 - RalfJung:result-flatten, r=Noratrieb
55becb0 Rollup merge of rust-lang#130670 - the8472:read-to-end-heuristics, r=ChrisDenton
202df81 Rollup merge of rust-lang#130658 - EqualMa:patch-1, r=scottmcm
9c26e05 Auto merge of rust-lang#130697 - bjoernager:const-char-make-ascii, r=dtolnay
36b115f Mark 'make_ascii_uppercase' and 'make_ascii_lowercase' in 'char' as const;
98aba66 make unstable Result::flatten a const fn
d098993 Rollup merge of rust-lang#130653 - RalfJung:result-abi-compat, r=traviscross
2953dee Rollup merge of rust-lang#130408 - okaneco:into_lossy_refactor, r=Noratrieb
94105e8 wait for two short reads before uncapping the max read size
dea467a Mark and implement 'char::encode_utf16' as const; Rewrite 'encode_utf16_raw';
49128a4 Fix docs of compare_bytes
db6427b ABI compatibility: mention Result guarantee
1632f8f Reword ManuallyDrop+Box interaction
4969ea8 Rollup merge of rust-lang#129718 - lolbinarycat:remove_dir-docs, r=Noratrieb
c11b3aa Avoid re-validating UTF-8 in `FromUtf8Error::into_utf8_lossy`
93f5e21 Auto merge of rust-lang#130631 - GuillaumeGomez:rollup-jpgy1iv, r=GuillaumeGomez
a7aac1e Remove double spaces
74935ec Rollup merge of rust-lang#130624 - theemathas:vec_as_non_null, r=Noratrieb
2c9a4e3 Rollup merge of rust-lang#130611 - bjoernager:const-char-encode-utf8, r=dtolnay
25ab8ef Rollup merge of rust-lang#130526 - eholk:pin-reborrow, r=compiler-errors
97c4937 Rollup merge of rust-lang#128209 - beetrees:no-macos-10.10, r=jieyouxu
3e5c662 Auto merge of rust-lang#124895 - obeis:static-mut-hidden-ref, r=compiler-errors
31d575b Add `Vec::as_non_null`
54e23b5 Address diagnostics regression for 'const_char_encode_utf8';
557a0b8 Allow unused unsafe for vxworks in alligned_malloc to resolve build errors
7ae6827 [Clippy] Remove final std paths for diagnostic item
7b1c5e8 Allow shortening reborrows
86240c7 Add `#[track_caller]` to allocating methods of `Vec` & `VecDeque`
3394557 Rollup merge of rust-lang#130554 - ShE3py:unsupported-exitcode, r=Noratrieb
17b0e39 Rollup merge of rust-lang#130553 - GnomedDev:remove-clippy-paths, r=compiler-errors
64a5984 Rollup merge of rust-lang#128001 - Krappa322:master, r=scottmcm
81c4805 Add str.as_str() for easy dereferencing of Box<str>
4ea6b82 `pal::unsupported::process::ExitCode`: use an `u8` instead of a `bool`
cb771b2 [Clippy] Swap `open_options` to use diagnostic items instead of paths
04bd505 [Clippy] Swap `iter_over_hash_type` to use diagnostic items instead of paths
8147cf4 [Clippy] Swap `non_octal_unix_permissions` to use diagnostic item instead of path
1b0be2a [Clippy] Swap `unnecessary_owned_empty_strings` to use diagnostic item instead of path
9edfe1d [Clippy] Swap `manual_strip` to use diagnostic items instead of paths
995238c [Clippy] Swap `unnecessary_to_owned` to use diagnostic item instead of path
c1a4a69 [Clippy] Swap `instant_subtraction` to use diagnostic item instead of path
beaebb5 [Clippy] Swap `waker_clone_wake` to use diagnostic item instead of path
925c1c4 [Clippy] Swap `filter_map_bool_then` to use diagnostic item instead of path
7bc30a7 [Clippy] Swap `manual_while_let_some` to use diagnostic items instead of paths
08b676d [Clippy] Swap `repeat_vec_with_capacity` to use diagnostic item instead of path
b95bef0 [Clippy] Swap `VecArgs::hir` to use diagnostic items instead of paths
6906fa9 [Clippy] Swap `single_char_add_str`/`format_push_string` to use diagnostic items instead of paths
b2dc66e [Clippy] Swap `manual_main_separator_str` to use diagnostic item instead of path
a61b7b7 [Clippy] Swap `redundant_clone` to use diagnostic items instead of paths
3310a0b [Clippy] Swap `float_equality_without_abs` to use diagnostic items instead of paths
6ef72c4 [Clippy] Swap `option_as_ref_deref` to use diagnostic items instead of paths
b8c0c3b [Clippy] Swap `lines_filter_map_ok` to use a diagnostic item instead of path
116e527 [Clippy] Swap `map_entry` to use diagnostic items instead of paths
03ff0df Auto merge of rust-lang#130547 - workingjubilee:rollup-tw30khz, r=workingjubilee
6210ecb Auto merge of rust-lang#130511 - bjoernager:const-char-encode-utf8, r=dtolnay
ccb31b8 run `x.py fmt`
9510c76 remove feature attributes as const_maybe_uninit_as_mut_ptr is stabilized
c12546b stabilize `const_maybe_uninit_as_mut_ptr`
e94c080 Mark and implement 'char::encode_utf8' as const.
1509944 Rollup merge of rust-lang#130522 - GnomedDev:clippy-manual-retain-paths, r=compiler-errors
8a9576c Rollup merge of rust-lang#130513 - shekhirin:fs-write-doc-comment, r=cuviper
d53d48a Rollup merge of rust-lang#130487 - cuviper:min-llvm-18, r=nikic
f63c0c1 Rollup merge of rust-lang#130476 - workingjubilee:more-lazy-methods-take-2, r=Amanieu
09e36ad Rollup merge of rust-lang#129934 - ChrisDenton:remove-dir-all3, r=Amanieu
5480d57 Rollup merge of rust-lang#97524 - ibraheemdev:thread-raw, r=ibraheemdev
886fc13 Revert "Add a hack to prevent proc_macro misopt in CI"
56704d4 Begin experimental support for pin reborrowing
262a08b library: Call it really_init_mut to avoid name collisions
51023b5 library: Destabilize Lazy{Cell,Lock}::{force,deref}_mut
ff51d9f [Clippy] Swap `manual_retain` to use diagnostic items instead of paths
28695bf Auto merge of rust-lang#130497 - saethlin:alloc-zeroed-is-unstable, r=bjorn3
8f6ca5b Clarify docs for std::fs::File::write
b19bf06 Auto merge of rust-lang#129491 - StackOverflowExcept1on:master, r=m-ou-se
37eb770 Auto merge of rust-lang#129845 - scottmcm:redo-layout, r=Noratrieb
cc10a76 Take more advantage of the `isize::MAX` limit in `Layout`
d740b8d read_volatile __rust_no_alloc_shim_is_unstable in alloc_zeroed
c4fe01a add `Thread::{into_raw, from_raw}`
e65d8e8 Rollup merge of rust-lang#130481 - krtab:clamp_partial_ord, r=cuviper
f3a53b7 Auto merge of rust-lang#130483 - matthiaskrgr:rollup-q1r0g0y, r=matthiaskrgr
46a0aa8 Remove uneeded PartialOrd bound in cmp::Ord::clamp
c83fbfd Rollup merge of rust-lang#130467 - RalfJung:miri-sync, r=RalfJung
6893990 Rollup merge of rust-lang#129674 - matthewpipie:rc-arc-new-cyclic-in, r=dtolnay
a0f4a4b Implement ACP 429: add `Lazy{Cell,Lock}::get[_mut]` and `force_mut`
7505e29 Rollup merge of rust-lang#128535 - mmvanheusden:master, r=workingjubilee
8a5922f Auto merge of rust-lang#130145 - fee1-dead-contrib:repeatn, r=lcnr,workingjubilee
c15d489 Merge from rustc
e80d16c Rollup merge of rust-lang#130448 - alilleybrinker:master, r=workingjubilee
cd8a7af Update library/alloc/src/sync.rs
2819604 Auto merge of rust-lang#127633 - SamuelMarks:eq-exit-code, r=dtolnay
49a855d fix: Remove duplicate `LazyLock` example.
9af97fc Rollup merge of rust-lang#127879 - kornelski:bad-pointer-printf, r=workingjubilee
2c1bd02 Merge from rustc
fc9c900 Auto merge of rust-lang#130220 - RalfJung:float-classify, r=workingjubilee
35edcb6 update docs for `catch_unwind` & related funcs
ee67105 Rollup merge of rust-lang#130339 - CAD97:unwind-choice, r=dtolnay
f396849 simplify abort_unwind
b66efdd Rollup merge of rust-lang#129439 - okaneco:vec_string_lossy, r=Noratrieb
af73374 Rollup merge of rust-lang#130381 - workingjubilee:sometimes-code-really-is-self-descriptive, r=Noratrieb
524402a Rollup merge of rust-lang#130118 - RalfJung:unwrap_unchecked, r=Noratrieb
3dccb86 Rollup merge of rust-lang#129195 - RalfJung:const-mut-refs, r=fee1-dead
524a5e1 also stabilize const_refs_to_cell
29c8eef const_refs_to_cell: dont let mutable references sneak past the interior mutability check
5671193 stabilize const_mut_refs
085baa2 library: Compute Rust exception class from its string repr
fc53427 Rollup merge of rust-lang#130214 - RalfJung:zeroed, r=Mark-Simulacrum
0e7d343 Rollup merge of rust-lang#130061 - theemathas:box_vec_non_null, r=MarkSimulacrum,workingjubilee
09f1d40 Rollup merge of rust-lang#130042 - lolbinarycat:bufreaker_peek_eof, r=Amanieu
0fd6e23 Add tracking issue number for `box_vec_non_null`
d38c59a Rollup merge of rust-lang#130290 - passcod:stabilise-entry-insert, r=ChrisDenton
96b5b7c Rollup merge of rust-lang#130268 - RalfJung:simd-shuffle-idx-vector, r=compiler-errors
79d937d simd_shuffle: require index argument to be a vector
857ad22 Rollup merge of rust-lang#130053 - glowcoil:next_if-docs, r=jhpratt
9c71d4e add std::panic::abort_unwind
91ebe06 add core::panic::abort_unwind
f30a0ad Merge from rustc
24fa8b9 Rustfmt
4f3d542 [`cfg_match`] Generalize inputs
80f8aeb Fix awkward wording.
84d77be Address WaffleLapkin's comments
84da2fc Update tests for hidden references to mutable static
34e22e8 Rollup merge of rust-lang#130245 - RalfJung:miri-alloc-backtrace, r=Amanieu
ba73022 Stabilize entry_insert
283ce13 Auto merge of rust-lang#130281 - matthiaskrgr:rollup-1b2ibs8, r=matthiaskrgr
ac68273 Rollup merge of rust-lang#130101 - RalfJung:const-cleanup, r=fee1-dead
6695a56 Document subtleties of `ManuallyDrop`
1128894 Stabilize `const_float_classify`
0de0540 Auto merge of rust-lang#129992 - alexcrichton:update-compiler-builtins, r=tgross35
553ca3f also update the wrapping_ docs to use similar wording
27049a0 Rollup merge of rust-lang#130160 - Scripter17:fix-slice-first_mut-doc, r=Amanieu
03dedd9 Rollup merge of rust-lang#125060 - ChrisJefferson:pathbuf-doc, r=workingjubilee
abe63f6 simplify float::classify logic
34e4b6d Fixup docs for PathBuf
22ffa3d Expand PathBuf documentation
4afc77f Merge from rustc
5997b68 Auto merge of rust-lang#130183 - Marcondiro:unicode-16.0.0, r=Manishearth
60b4cf8 Rollup merge of rust-lang#130248 - nyurik:fix-129895, r=workingjubilee
136504a Rollup merge of rust-lang#130168 - juliusl:pr/fix-win-fs-change-time-links, r=ChrisDenton
e9cd33c Rollup merge of rust-lang#130077 - madsmtm:watchos-arm-unwind, r=workingjubilee
0ff8428 Rollup merge of rust-lang#129835 - RalfJung:float-tests, r=workingjubilee
15a8ea1 Rollup merge of rust-lang#129696 - RalfJung:stdarch, r=Amanieu
e977a44 Limit `libc::link` usage to `nto70` target only, not NTO OS
acd2526 various updates based on review
dbf585c make basic allocation functions track_caller in Miri for nicer backtraces
3e2ea2b chore: remove struct details
6ff27d2 Rollup merge of rust-lang#130207 - GrigorenkoPV:ERROR_CANT_RESOLVE_FILENAME, r=ChrisDenton
0a47644 Rollup merge of rust-lang#130206 - GrigorenkoPV:WSAEDQUOT, r=ChrisDenton
61a646b Rollup merge of rust-lang#129866 - root-goblin:patch-1, r=workingjubilee
bfe2669 docs: remove struct info
3c00ffa ptr::add/sub: these are *not* equivalent to offset(count as isize)
e8ddc86 update stdarch
a55bf34 MaybeUninit::zeroed: mention that padding is not zeroed
04c4ab4 clean up internal comments about float semantics
fc9b01f these tests seem to work fine on i586 these days
95de48b Auto merge of rust-lang#129403 - scottmcm:only-array-simd, r=compiler-errors
95f9af0 Clarify docs for std::collections
cc0044c Map `ERROR_CANT_RESOLVE_FILENAME` to `ErrorKind::FilesystemLoop`
fde9f6b Map `WSAEDQUOT` to `ErrorKind::FilesystemQuotaExceeded`
22c4e8e Auto merge of rust-lang#130025 - Urgau:missing_docs-expect, r=petrochenkov
0eb5d75 Bump unicode printable to version 16.0.0
17e1039 Bump unicode_data to version 16.0.0
4d5609f Auto merge of rust-lang#130179 - workingjubilee:rollup-l78cv44, r=workingjubilee
d9d3751 Ban non-array SIMD
7e4cfbc Rollup merge of rust-lang#130164 - RalfJung:const_ptr_as_ref, r=dtolnay
3fdbce0 Rollup merge of rust-lang#130146 - folkertdev:bootstrap-naked-asm, r=Amanieu
0bbb25d Rollup merge of rust-lang#130132 - sunshowers:illumos-sigsegv, r=Noratrieb
ec7fd8a Rollup merge of rust-lang#128316 - GrigorenkoPV:io_error_a_bit_more, r=dtolnay
237b11d Auto merge of rust-lang#129778 - RalfJung:interp-lossy-typed-copy, r=saethlin
b47535f chore: removing supporting links in favor of existing doc-comment style
b6f9e80 maint: update docs for change_time ext and doc links
f7b7aa3 Rollup merge of rust-lang#130154 - okaneco:stabilize_char_min, r=cuviper
5a87e4c Rollup merge of rust-lang#130067 - madsmtm:clean-up-fs-test, r=ChrisDenton
41cd571 move const fn with a null check into const_ptr_is_null gate
f28b1d1 move some const fn out of the const_ptr_as_ref feature
4b1440a Fix slice::first_mut docs pointer -> reference
2bc7f6c Stabilize `char::MIN`
d257159 fix UB in a test
931d271 Add missing `#[allow(missing_docs)]` on hack functions in alloc
4f77831 `RepeatN`: use MaybeUninit
0414a2e bootstrap `naked_asm!` for `compiler-builtins`
2582bbb Rollup merge of rust-lang#130115 - eduardosm:needless-returns-libs, r=workingjubilee
e8d9b85 Rollup merge of rust-lang#130107 - RalfJung:const-ptr-is-null, r=oli-obk
2e128a2 Rollup merge of rust-lang#130090 - RalfJung:result-copied, r=Noratrieb
2ee8304 Rollup merge of rust-lang#130087 - RalfJung:option-const-iter, r=workingjubilee
af9a77d [illumos] enable SIGSEGV handler to detect stack overflows
1b763fc remove const_slice_index annotations, it never had a feature gate anyway
9849587 add FIXME(const-hack)
565b336 move Option::unwrap_unchecked into const_option feature gate
f9a9560 Remove needless returns detected by clippy in libraries
cc4242b const: make ptr.is_null() stop execution on ambiguity
295946c Option, Result: put the &mut variants of 'copied' under the same feature as the '&' variants
4caabcd Auto merge of rust-lang#130002 - orlp:better-div-floor-ceil, r=thomcc
55f602f Auto merge of rust-lang#129019 - kromych:master, r=workingjubilee
84184ab Fix linking error when compiling for 32-bit watchOS
e954412 remove pointless rustc_const_unstable on trait impls
0dc4621 add some FIXME(const-hack)
796ae33 Auto merge of rust-lang#130091 - matthiaskrgr:rollup-kalu1cs, r=matthiaskrgr
64afc03 Rollup merge of rust-lang#130047 - ChrisDenton:win-dbghelp, r=wesleywiser
9448662 Rollup merge of rust-lang#130046 - RalfJung:const_str_as_mut, r=dtolnay
2feca1e Rollup merge of rust-lang#129555 - RalfJung:const_float_bits_conv, r=dtolnay
72723d7 make Result::copied unstably const
5011671 remove 'const' from 'Option::iter'
3a53537 str: make as_mut_ptr and as_bytes_mut unstably const
9469575 restate GlobalAlloc method safety preconditions in terms of what the caller has to do for greater clarity
ff7b661 Remove now redundant check in symlink_hard_link test
459f246 Add `NonNull` convenience methods to `Vec`
a2e7f8b Add `NonNull` convenience methods to `Box`
d1005f5 fix doc comments for Peekable::next_if(_eq)
a9cf084 Remove duplicate impl
7b61eea remove the Clone requirement
d6e859b Win: Add dbghelp to the list of import libraries
335236c properly handle EOF in BufReader::peek
b2d6fdd [library/std/src/process.rs] Remove `Eq` `derive`
678165e Break into the debugger (if attached) on panics (Windows, macOS, Linux, FreeBSD)
b947f0a better implementation of signed div_floor/ceil
355445b [library/std/src/process.rs] Update docstring with @joshtriplett's replacement text
0d4a80e Update compiler-builtins to 0.1.125
5446229 Use non-overlapping swap for inner heapsort loop
670630d Select tiny sorts for 16-bit platforms
cd3d6e8 Shrink heapsort further by combining sift_down loops
bea61da Drop bubble_sort
83938b9 Remove macOS 10.10 dynamic linker bug workaround
be2b964 Win: Open dir for sync access in remove_dir_all
a4c4e23 stabilize const_float_bits_conv
3a754b1 Improve documentation for <integer>::from_str_radix
24eca28 add new_cyclic_in for Arc
88d85a8 improve comments
3e677e3 fix new_cyclic_in for rc
7d4ef17 fix fmt
717e3aa Use simpler branchy swap logic in tiny merge sort
5fa71af add guarantee about remove_dir and remove_file error kinds
ea236f0 add new_cyclic_in for rc
ae57bdf Use last swap optimization in bubblesort
2fa330e Convert cfg blocks to cfg_if
f46fcfe Reduce code duplication by moving partition_lomuto_branchless_simple into quicksort module
1805c29 Add binary-size optimized variants for stable and unstable sort as well as select_nth_unstable
4bc6b1f Pass `fmt::Arguments` by reference to `PanicInfo` and `PanicMessage`
1339c1b Implement feature `string_from_utf8_lossy_owned`
9b21aa0 Document futility of printing temporary pointers
028104e Refer to other docs
e0fe4a7 Add unordered list with possible values for each const
84ea721 Format std::env::consts docstrings
7921401 stabilize `option_get_or_insert_default`
8744732 Partially stabilize `io_error_more`
79855bb [library/std/src/process.rs] `PartialEq` & `Eq` for `ExitCode`

git-subtree-dir: library
git-subtree-split: 771d77c
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Nov 30, 2024
Pkgsrc changes compared to rust182:
 * Remove patches related to rust-lang/rust#130110,
   which is now integrated upstream.
 * Remove patch to vendor/cc-1.0.79, now integrated in the current
   vendored cc crate.
 * Checksum updates.

TODO:
 * Cross-compilation fails ref.
   rust-lang/rust#133629

Upstream changes:

Version 1.83.0 (2024-11-28)
==========================

Language
--------
- [Stabilize `&mut`, `*mut`, `&Cell`, and `*const Cell` in const.]
  (rust-lang/rust#129195)
- [Allow creating references to statics in `const` initializers.]
  (rust-lang/rust#129759)
- [Implement raw lifetimes and labels (`'r#ident`).]
  (rust-lang/rust#126452)
- [Define behavior when atomic and non-atomic reads race.]
  (rust-lang/rust#128778)
- [Non-exhaustive structs may now be empty.]
  (rust-lang/rust#128934)
- [Disallow implicit coercions from places of type `!`]
  (rust-lang/rust#129392)
- [`const extern` functions can now be defined for other calling conventions.]
  (rust-lang/rust#129753)
- [Stabilize `expr_2021` macro fragment specifier in all editions.]
  (rust-lang/rust#129972)
- [The `non_local_definitions` lint now fires on less code and
  warns by default.]
  (rust-lang/rust#127117)

Compiler
--------
- [Deprecate unsound `-Csoft-float` flag.]
  (rust-lang/rust#129897)
- Add many new tier 3 targets:
    - [`aarch64_unknown_nto_qnx700`]
      (rust-lang/rust#127897)
    - [`arm64e-apple-tvos`]
      (rust-lang/rust#130614)
    - [`armv7-rtems-eabihf`]
      (rust-lang/rust#127021)
    - [`loongarch64-unknown-linux-ohos`]
      (rust-lang/rust#130750)
    - [`riscv32-wrs-vxworks` and `riscv64-wrs-vxworks`]
      (rust-lang/rust#130549)
    - [`riscv32{e|em|emc}-unknown-none-elf`]
      (rust-lang/rust#130555)
    - [`x86_64-unknown-hurd-gnu`]
      (rust-lang/rust#128345)
    - [`x86_64-unknown-trusty`]
      (rust-lang/rust#130453)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

Libraries
---------
- [Implement `PartialEq` for `ExitCode`.]
  (rust-lang/rust#127633)
- [Document that `catch_unwind` can deal with foreign exceptions
  without UB, although the exact behavior is unspecified.]
  (rust-lang/rust#128321)
- [Implement `Default` for `HashMap`/`HashSet` iterators that don't
  already have it.]
  (rust-lang/rust#128711)
- [Bump Unicode to version 16.0.0.]
  (rust-lang/rust#130183)
- [Change documentation of `ptr::add`/`sub` to not claim equivalence
  with `offset`.]
  (rust-lang/rust#130229).

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

- [`BufRead::skip_until`]
  (https://doc.rust-lang.org/stable/std/io/trait.BufRead.html#method.skip_until)
- [`ControlFlow::break_value`]
  (https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.break_value)
- [`ControlFlow::continue_value`]
  (https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.continue_value)
- [`ControlFlow::map_break`]
  (https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_break)
- [`ControlFlow::map_continue`]
  (https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_continue)
- [`DebugList::finish_non_exhaustive`]
  (https://doc.rust-lang.org/stable/core/fmt/struct.DebugList.html#method.finish_non_exhaustive)
- [`DebugMap::finish_non_exhaustive`]
  (https://doc.rust-lang.org/stable/core/fmt/struct.DebugMap.html#method.finish_non_exhaustive)
- [`DebugSet::finish_non_exhaustive`]
  (https://doc.rust-lang.org/stable/core/fmt/struct.DebugSet.html#method.finish_non_exhaustive)
- [`DebugTuple::finish_non_exhaustive`]
  (https://doc.rust-lang.org/stable/core/fmt/struct.DebugTuple.html#method.finish_non_exhaustive)
- [`ErrorKind::ArgumentListTooLong`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ArgumentListTooLong)
- [`ErrorKind::Deadlock`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.Deadlock)
- [`ErrorKind::DirectoryNotEmpty`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.DirectoryNotEmpty)
- [`ErrorKind::ExecutableFileBusy`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ExecutableFileBusy)
- [`ErrorKind::FileTooLarge`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.FileTooLarge)
- [`ErrorKind::HostUnreachable`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.HostUnreachable)
- [`ErrorKind::IsADirectory`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.IsADirectory)
- [`ErrorKind::NetworkDown`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkDown)
- [`ErrorKind::NetworkUnreachable`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkUnreachable)
- [`ErrorKind::NotADirectory`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotADirectory)
- [`ErrorKind::NotSeekable`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotSeekable)
- [`ErrorKind::ReadOnlyFilesystem`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ReadOnlyFilesystem)
- [`ErrorKind::ResourceBusy`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ResourceBusy)
- [`ErrorKind::StaleNetworkFileHandle`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StaleNetworkFileHandle)
- [`ErrorKind::StorageFull`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StorageFull)
- [`ErrorKind::TooManyLinks`]
  (https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.TooManyLinks)
- [`Option::get_or_insert_default`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.get_or_insert_default)
- [`Waker::data`]
  (https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.data)
- [`Waker::new`]
  (https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.new)
- [`Waker::vtable`]
  (https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.vtable)
- [`char::MIN`]
  (https://doc.rust-lang.org/stable/core/primitive.char.html#associatedconstant.MIN)
- [`hash_map::Entry::insert_entry`]
  (https://doc.rust-lang.org/stable/std/collections/hash_map/enum.Entry.html#method.insert_entry)
- [`hash_map::VacantEntry::insert_entry`]
  (https://doc.rust-lang.org/stable/std/collections/hash_map/struct.VacantEntry.html#method.insert_entry)

These APIs are now stable in const contexts:

- [`Cell::into_inner`]
  (https://doc.rust-lang.org/stable/core/cell/struct.Cell.html#method.into_inner)
- [`Duration::as_secs_f32`]
  (https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f32)
- [`Duration::as_secs_f64`]
  (https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f64)
- [`Duration::div_duration_f32`]
  (https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f32)
- [`Duration::div_duration_f64`]
  (https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f64)
- [`MaybeUninit::as_mut_ptr`]
  (https://doc.rust-lang.org/stable/core/mem/union.MaybeUninit.html#method.as_mut_ptr)
- [`NonNull::as_mut`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_mut)
- [`NonNull::copy_from`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from)
- [`NonNull::copy_from_nonoverlapping`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from_nonoverlapping)
- [`NonNull::copy_to`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to)
- [`NonNull::copy_to_nonoverlapping`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to_nonoverlapping)
- [`NonNull::slice_from_raw_parts`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.slice_from_raw_parts)
- [`NonNull::write`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write)
- [`NonNull::write_bytes`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_bytes)
- [`NonNull::write_unaligned`]
  (https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_unaligned)
- [`OnceCell::into_inner`]
  (https://doc.rust-lang.org/stable/core/cell/struct.OnceCell.html#method.into_inner)
- [`Option::as_mut`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.as_mut)
- [`Option::expect`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.expect)
- [`Option::replace`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.replace)
- [`Option::take`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.take)
- [`Option::unwrap`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap)
- [`Option::unwrap_unchecked`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap_unchecked)
- [`Option::<&_>::copied`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied)
- [`Option::<&mut _>::copied`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied-1)
- [`Option::<Option<_>>::flatten`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.flatten)
- [`Option::<Result<_, _>>::transpose`]
  (https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.transpose)
- [`RefCell::into_inner`]
  (https://doc.rust-lang.org/stable/core/cell/struct.RefCell.html#method.into_inner)
- [`Result::as_mut`]
  (https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.as_mut)
- [`Result::<&_, _>::copied`]
  (https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied)
- [`Result::<&mut _, _>::copied`]
  (https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied-1)
- [`Result::<Option<_>, _>::transpose`]
  (https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.transpose)
- [`UnsafeCell::get_mut`]
  (https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.get_mut)
- [`UnsafeCell::into_inner`]
  (https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.into_inner)
- [`array::from_mut`]
  (https://doc.rust-lang.org/stable/core/array/fn.from_mut.html)
- [`char::encode_utf8`]
  (https://doc.rust-lang.org/stable/core/primitive.char.html#method.encode_utf8)
- [`{float}::classify`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.classify)
- [`{float}::is_finite`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_finite)
- [`{float}::is_infinite`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_infinite)
- [`{float}::is_nan`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_nan)
- [`{float}::is_normal`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_normal)
- [`{float}::is_sign_negative`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_negative)
- [`{float}::is_sign_positive`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_positive)
- [`{float}::is_subnormal`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_subnormal)
- [`{float}::from_bits`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_bits)
- [`{float}::from_be_bytes`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_be_bytes)
- [`{float}::from_le_bytes`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_le_bytes)
- [`{float}::from_ne_bytes`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_ne_bytes)
- [`{float}::to_bits`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_bits)
- [`{float}::to_be_bytes`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_be_bytes)
- [`{float}::to_le_bytes`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_le_bytes)
- [`{float}::to_ne_bytes`]
  (https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_ne_bytes)
- [`mem::replace`]
  (https://doc.rust-lang.org/stable/core/mem/fn.replace.html)
- [`ptr::replace`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.replace.html)
- [`ptr::slice_from_raw_parts_mut`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.slice_from_raw_parts_mut.html)
- [`ptr::write`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.write.html)
- [`ptr::write_unaligned`]
  (https://doc.rust-lang.org/stable/core/ptr/fn.write_unaligned.html)
- [`<*const _>::copy_to`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to)
- [`<*const _>::copy_to_nonoverlapping`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping)
- [`<*mut _>::copy_from`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from)
- [`<*mut _>::copy_from_nonoverlapping`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from_nonoverlapping)
- [`<*mut _>::copy_to`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to-1)
- [`<*mut _>::copy_to_nonoverlapping`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping-1)
- [`<*mut _>::write`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write)
- [`<*mut _>::write_bytes`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_bytes)
- [`<*mut _>::write_unaligned`]
  (https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_unaligned)
- [`slice::from_mut`]
  (https://doc.rust-lang.org/stable/core/slice/fn.from_mut.html)
- [`slice::from_raw_parts_mut`]
  (https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts_mut.html)
- [`<[_]>::first_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_mut)
- [`<[_]>::last_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_mut)
- [`<[_]>::first_chunk_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_chunk_mut)
- [`<[_]>::last_chunk_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_chunk_mut)
- [`<[_]>::split_at_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut)
- [`<[_]>::split_at_mut_checked`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_checked)
- [`<[_]>::split_at_mut_unchecked`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_unchecked)
- [`<[_]>::split_first_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_mut)
- [`<[_]>::split_last_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_mut)
- [`<[_]>::split_first_chunk_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_chunk_mut)
- [`<[_]>::split_last_chunk_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_chunk_mut)
- [`str::as_bytes_mut`]
  (https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_bytes_mut)
- [`str::as_mut_ptr`]
  (https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_mut_ptr)
- [`str::from_utf8_unchecked_mut`]
  (https://doc.rust-lang.org/stable/core/str/fn.from_utf8_unchecked_mut.html)

Cargo
-----
- [Introduced a new `CARGO_MANIFEST_PATH` environment variable,
  similar to `CARGO_MANIFEST_DIR` but pointing directly to the manifest
  file.]
  (rust-lang/cargo#14404)
- [Added `package.autolib` to the manifest, allowing `[lib]`
  auto-discovery to be disabled.]
  (rust-lang/cargo#14591)
- [Declare support level for each crate in Cargo's Charter / crate docs.]
  (rust-lang/cargo#14600)
- [Declare new Intentional Artifacts as 'small' changes.]
  (rust-lang/cargo#14599)

Rustdoc
-------

- [The sidebar / hamburger menu table of contents now includes the
  `# headers` from the main item's doc comment]
  (rust-lang/rust#120736). This is similar
  to a third-party feature provided by the rustdoc-search-enhancements
  browser extension.

Compatibility Notes
-------------------
- [Warn against function pointers using unsupported ABI strings.]
  (rust-lang/rust#128784)
- [Check well-formedness of the source type's signature in fn
  pointer casts.]
  (rust-lang/rust#129021) This partly closes
  a soundness hole that comes when casting a function item to
  function pointer
- [Use equality instead of subtyping when resolving type dependent paths.]
  (rust-lang/rust#129073)
- Linking on macOS now correctly includes Rust's default deployment
  target. Due to a linker bug, you might have to pass
  `MACOSX_DEPLOYMENT_TARGET` or fix your `#[link]` attributes to
  point to the correct frameworks. See
  <rust-lang/rust#129369>.
- [Rust will now correctly raise an error for `repr(Rust)` written
  on non-`struct`/`enum`/`union` items, since it previous did not
  have any effect.]
  (rust-lang/rust#129422)
- The future incompatibility lint `deprecated_cfg_attr_crate_type_name`
  [has been made into a hard error]
  (rust-lang/rust#129670). It was used to
  deny usage of `#![crate_type]` and `#![crate_name]` attributes in
  `#![cfg_attr]`, which required a hack in the compiler to be able
  to change the used crate type and crate name after cfg expansion.
  Users can use `--crate-type` instead of `#![cfg_attr(..., crate_type
  = "...")]` and `--crate-name` instead of `#![cfg_attr(...,
  crate_name = "...")]` when running `rustc`/`cargo rustc` on the
  command line.  Use of those two attributes outside of `#![cfg_attr]`
  continue to be fully supported.

- Until now, paths into the sysroot were always prefixed with
  `/rustc/$hash` in diagnostics, codegen, backtrace, e.g.
    ```
    thread 'main' panicked at 'hello world', map-panic.rs:2:50
    stack backtrace:
       0: std::panicking::begin_panic
                 at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:616:12
       1: map_panic::main::{{closure}}
                 at ./map-panic.rs:2:50
       2: core::option::Option<T>::map
                 at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/option.rs:929:29
       3: map_panic::main
                 at ./map-panic.rs:2:30
       4: core::ops::function::FnOnce::call_once
                 at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
    note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
    ```
  [RFC 3127 said]
  (https://rust-lang.github.io/rfcs/3127-trim-paths.html#changing-handling-of-sysroot-path-in-rustc)
  > We want to change this behaviour such that, when `rust-src`
    source files can be discovered, the virtual path is discarded
    and therefore the local path will be embedded, unless there is
    a `--remap-path-prefix` that causes this local path to be remapped
    in the usual way.

    [#129687](rust-lang/rust#129687)
    implements this behaviour, when `rust-src` is present at compile
    time, `rustc` replaces `/rustc/$hash` with a real path into
    the local `rust-src` component with best effort.  To sanitize
    this, users must explicitly supply `--remap-path-prefix=<path
    to rust-src>=foo` or not have the `rust-src` component installed.
- The allow-by-default `missing_docs` lint used to disable itself
  when invoked through `rustc --test`/`cargo test`, resulting in
  `#[expect(missing_docs)]` emitting false positives due to the
  expectation being wrongly unfulfilled. This behavior [has now been
  removed]
  (rust-lang/rust#130025), which allows
  `#[expect(missing_docs)]` to be fulfilled in all scenarios, but
  will also report new `missing_docs` diagnostics for publicly
  reachable `#[cfg(test)]` items, [integration test]
  (https://doc.rust-lang.org/cargo/reference/cargo-targets.html#integration-tests)
  crate-level documentation, and publicly reachable items in
  integration tests.
- [The `armv8r-none-eabihf` target now uses the Armv8-R required
  set of floating-point features.]
  (rust-lang/rust#130295)
- [Fix a soundness bug where rustc wouldn't detect unconstrained
  higher-ranked lifetimes in a `dyn Trait`'s associated types that
  occur due to supertraits.]
  (rust-lang/rust#130367)
- [Update the minimum external LLVM version to 18.]
  (rust-lang/rust#130487)
- [Remove `aarch64-fuchsia` and `x86_64-fuchsia` target aliases in
  favor of `aarch64-unknown-fuchsia` and `x86_64-unknown-fuchsia`
  respectively.]
  (rust-lang/rust#130657)
- [The ABI-level exception class of a Rust panic is now encoded
  with native-endian bytes, so it is legible in hex dumps.]
  (rust-lang/rust#130897)
- [Visual Studio 2013 is no longer supported for MSVC targets.]
  (rust-lang/rust#131070)
- [The sysroot no longer contains the `std` dynamic library in its
  top-level `lib/` dir.]
  (rust-lang/rust#131188)
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Dec 5, 2024
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [rust](https://github.com/rust-lang/rust) | minor | `1.82.0` -> `1.83.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.83.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1830-2024-11-28)

[Compare Source](rust-lang/rust@1.82.0...1.83.0)

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

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

## Language

-   [Stabilize `&mut`, `*mut`, `&Cell`, and `*const Cell` in const.](rust-lang/rust#129195)
-   [Allow creating references to statics in `const` initializers.](rust-lang/rust#129759)
-   [Implement raw lifetimes and labels (`'r#ident`).](rust-lang/rust#126452)
-   [Define behavior when atomic and non-atomic reads race.](rust-lang/rust#128778)
-   [Non-exhaustive structs may now be empty.](rust-lang/rust#128934)
-   [Disallow implicit coercions from places of type `!`](rust-lang/rust#129392)
-   [`const extern` functions can now be defined for other calling conventions.](rust-lang/rust#129753)
-   [Stabilize `expr_2021` macro fragment specifier in all editions.](rust-lang/rust#129972)
-   [The `non_local_definitions` lint now fires on less code and warns by default.](rust-lang/rust#127117)

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

## Compiler

-   [Deprecate unsound `-Csoft-float` flag.](rust-lang/rust#129897)
-   Add many new tier 3 targets:
    -   [`aarch64_unknown_nto_qnx700`](rust-lang/rust#127897)
    -   [`arm64e-apple-tvos`](rust-lang/rust#130614)
    -   [`armv7-rtems-eabihf`](rust-lang/rust#127021)
    -   [`loongarch64-unknown-linux-ohos`](rust-lang/rust#130750)
    -   [`riscv32-wrs-vxworks` and `riscv64-wrs-vxworks`](rust-lang/rust#130549)
    -   [`riscv32{e|em|emc}-unknown-none-elf`](rust-lang/rust#130555)
    -   [`x86_64-unknown-hurd-gnu`](rust-lang/rust#128345)
    -   [`x86_64-unknown-trusty`](rust-lang/rust#130453)

Refer to Rust's \[platform support page]\[platform-support-doc]
for more information on Rust's tiered platform support.

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

## Libraries

-   [Implement `PartialEq` for `ExitCode`.](rust-lang/rust#127633)
-   [Document that `catch_unwind` can deal with foreign exceptions without UB, although the exact behavior is unspecified.](rust-lang/rust#128321)
-   [Implement `Default` for `HashMap`/`HashSet` iterators that don't already have it.](rust-lang/rust#128711)
-   [Bump Unicode to version 16.0.0.](rust-lang/rust#130183)
-   [Change documentation of `ptr::add`/`sub` to not claim equivalence with `offset`.](rust-lang/rust#130229)

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

## Stabilized APIs

-   [`BufRead::skip_until`](https://doc.rust-lang.org/stable/std/io/trait.BufRead.html#method.skip_until)
-   [`ControlFlow::break_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.break_value)
-   [`ControlFlow::continue_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.continue_value)
-   [`ControlFlow::map_break`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_break)
-   [`ControlFlow::map_continue`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_continue)
-   [`DebugList::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugList.html#method.finish_non_exhaustive)
-   [`DebugMap::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugMap.html#method.finish_non_exhaustive)
-   [`DebugSet::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugSet.html#method.finish_non_exhaustive)
-   [`DebugTuple::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugTuple.html#method.finish_non_exhaustive)
-   [`ErrorKind::ArgumentListTooLong`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ArgumentListTooLong)
-   [`ErrorKind::Deadlock`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.Deadlock)
-   [`ErrorKind::DirectoryNotEmpty`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.DirectoryNotEmpty)
-   [`ErrorKind::ExecutableFileBusy`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ExecutableFileBusy)
-   [`ErrorKind::FileTooLarge`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.FileTooLarge)
-   [`ErrorKind::HostUnreachable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.HostUnreachable)
-   [`ErrorKind::IsADirectory`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.IsADirectory)
-   [`ErrorKind::NetworkDown`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkDown)
-   [`ErrorKind::NetworkUnreachable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NetworkUnreachable)
-   [`ErrorKind::NotADirectory`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotADirectory)
-   [`ErrorKind::NotSeekable`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.NotSeekable)
-   [`ErrorKind::ReadOnlyFilesystem`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ReadOnlyFilesystem)
-   [`ErrorKind::ResourceBusy`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ResourceBusy)
-   [`ErrorKind::StaleNetworkFileHandle`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StaleNetworkFileHandle)
-   [`ErrorKind::StorageFull`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.StorageFull)
-   [`ErrorKind::TooManyLinks`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.TooManyLinks)
-   [`Option::get_or_insert_default`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.get_or_insert_default)
-   [`Waker::data`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.data)
-   [`Waker::new`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.new)
-   [`Waker::vtable`](https://doc.rust-lang.org/stable/core/task/struct.Waker.html#method.vtable)
-   [`char::MIN`](https://doc.rust-lang.org/stable/core/primitive.char.html#associatedconstant.MIN)
-   [`hash_map::Entry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/hash_map/enum.Entry.html#method.insert_entry)
-   [`hash_map::VacantEntry::insert_entry`](https://doc.rust-lang.org/stable/std/collections/hash_map/struct.VacantEntry.html#method.insert_entry)

These APIs are now stable in const contexts:

-   [`Cell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.Cell.html#method.into_inner)
-   [`Duration::as_secs_f32`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f32)
-   [`Duration::as_secs_f64`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.as_secs_f64)
-   [`Duration::div_duration_f32`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f32)
-   [`Duration::div_duration_f64`](https://doc.rust-lang.org/stable/core/time/struct.Duration.html#method.div_duration_f64)
-   [`MaybeUninit::as_mut_ptr`](https://doc.rust-lang.org/stable/core/mem/union.MaybeUninit.html#method.as_mut_ptr)
-   [`NonNull::as_mut`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.as_mut)
-   [`NonNull::copy_from`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from)
-   [`NonNull::copy_from_nonoverlapping`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_from_nonoverlapping)
-   [`NonNull::copy_to`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to)
-   [`NonNull::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.copy_to_nonoverlapping)
-   [`NonNull::slice_from_raw_parts`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.slice_from_raw_parts)
-   [`NonNull::write`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write)
-   [`NonNull::write_bytes`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_bytes)
-   [`NonNull::write_unaligned`](https://doc.rust-lang.org/stable/core/ptr/struct.NonNull.html#method.write_unaligned)
-   [`OnceCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.OnceCell.html#method.into_inner)
-   [`Option::as_mut`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.as_mut)
-   [`Option::expect`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.expect)
-   [`Option::replace`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.replace)
-   [`Option::take`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.take)
-   [`Option::unwrap`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap)
-   [`Option::unwrap_unchecked`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.unwrap_unchecked)
-   [`Option::<&_>::copied`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied)
-   [`Option::<&mut _>::copied`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.copied-1)
-   [`Option::<Option<_>>::flatten`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.flatten)
-   [`Option::<Result<_, _>>::transpose`](https://doc.rust-lang.org/stable/core/option/enum.Option.html#method.transpose)
-   [`RefCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.RefCell.html#method.into_inner)
-   [`Result::as_mut`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.as_mut)
-   [`Result::<&_, _>::copied`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied)
-   [`Result::<&mut _, _>::copied`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.copied-1)
-   [`Result::<Option<_>, _>::transpose`](https://doc.rust-lang.org/stable/core/result/enum.Result.html#method.transpose)
-   [`UnsafeCell::get_mut`](https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.get_mut)
-   [`UnsafeCell::into_inner`](https://doc.rust-lang.org/stable/core/cell/struct.UnsafeCell.html#method.into_inner)
-   [`array::from_mut`](https://doc.rust-lang.org/stable/core/array/fn.from_mut.html)
-   [`char::encode_utf8`](https://doc.rust-lang.org/stable/core/primitive.char.html#method.encode_utf8)
-   [`{float}::classify`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.classify)
-   [`{float}::is_finite`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_finite)
-   [`{float}::is_infinite`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_infinite)
-   [`{float}::is_nan`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_nan)
-   [`{float}::is_normal`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_normal)
-   [`{float}::is_sign_negative`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_negative)
-   [`{float}::is_sign_positive`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_sign_positive)
-   [`{float}::is_subnormal`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.is_subnormal)
-   [`{float}::from_bits`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_bits)
-   [`{float}::from_be_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_be_bytes)
-   [`{float}::from_le_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_le_bytes)
-   [`{float}::from_ne_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.from_ne_bytes)
-   [`{float}::to_bits`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_bits)
-   [`{float}::to_be_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_be_bytes)
-   [`{float}::to_le_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_le_bytes)
-   [`{float}::to_ne_bytes`](https://doc.rust-lang.org/stable/core/primitive.f64.html#method.to_ne_bytes)
-   [`mem::replace`](https://doc.rust-lang.org/stable/core/mem/fn.replace.html)
-   [`ptr::replace`](https://doc.rust-lang.org/stable/core/ptr/fn.replace.html)
-   [`ptr::slice_from_raw_parts_mut`](https://doc.rust-lang.org/stable/core/ptr/fn.slice_from_raw_parts_mut.html)
-   [`ptr::write`](https://doc.rust-lang.org/stable/core/ptr/fn.write.html)
-   [`ptr::write_unaligned`](https://doc.rust-lang.org/stable/core/ptr/fn.write_unaligned.html)
-   [`<*const _>::copy_to`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to)
-   [`<*const _>::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping)
-   [`<*mut _>::copy_from`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from)
-   [`<*mut _>::copy_from_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_from_nonoverlapping)
-   [`<*mut _>::copy_to`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to-1)
-   [`<*mut _>::copy_to_nonoverlapping`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.copy_to_nonoverlapping-1)
-   [`<*mut _>::write`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write)
-   [`<*mut _>::write_bytes`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_bytes)
-   [`<*mut _>::write_unaligned`](https://doc.rust-lang.org/stable/core/primitive.pointer.html#method.write_unaligned)
-   [`slice::from_mut`](https://doc.rust-lang.org/stable/core/slice/fn.from_mut.html)
-   [`slice::from_raw_parts_mut`](https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts_mut.html)
-   [`<[_]>::first_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_mut)
-   [`<[_]>::last_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_mut)
-   [`<[_]>::first_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.first_chunk_mut)
-   [`<[_]>::last_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.last_chunk_mut)
-   [`<[_]>::split_at_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut)
-   [`<[_]>::split_at_mut_checked`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_checked)
-   [`<[_]>::split_at_mut_unchecked`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_at_mut_unchecked)
-   [`<[_]>::split_first_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_mut)
-   [`<[_]>::split_last_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_mut)
-   [`<[_]>::split_first_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_first_chunk_mut)
-   [`<[_]>::split_last_chunk_mut`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.split_last_chunk_mut)
-   [`str::as_bytes_mut`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_bytes_mut)
-   [`str::as_mut_ptr`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.as_mut_ptr)
-   [`str::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/core/str/fn.from_utf8\_unchecked_mut.html)

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

## Cargo

-   [Introduced a new `CARGO_MANIFEST_PATH` environment variable, similar to `CARGO_MANIFEST_DIR` but pointing directly to the manifest file.](rust-lang/cargo#14404)
-   [Added `package.autolib` to the manifest, allowing `[lib]` auto-discovery to be disabled.](rust-lang/cargo#14591)
-   [Declare support level for each crate in Cargo's Charter / crate docs.](rust-lang/cargo#14600)
-   [Declare new Intentional Artifacts as 'small' changes.](rust-lang/cargo#14599)

<a id="1.83-Rustdoc"></a>

## Rustdoc

-   [The sidebar / hamburger menu table of contents now includes the `# headers` from the main item's doc comment](rust-lang/rust#120736). This is similar to a third-party feature provided by the rustdoc-search-enhancements browser extension.

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

## Compatibility Notes

-   [Warn against function pointers using unsupported ABI strings.](rust-lang/rust#128784)
-   [Check well-formedness of the source type's signature in fn pointer casts.](rust-lang/rust#129021) This partly closes a soundness hole that comes when casting a function item to function pointer
-   [Use equality instead of subtyping when resolving type dependent paths.](rust-lang/rust#129073)
-   Linking on macOS now correctly includes Rust's default deployment target. Due to a linker bug, you might have to pass `MACOSX_DEPLOYMENT_TARGET` or fix your `#[link]` attributes to point to the correct frameworks. See [#&#8203;129369](rust-lang/rust#129369).
-   [Rust will now correctly raise an error for `repr(Rust)` written on non-`struct`/`enum`/`union` items, since it previous did not have any effect.](rust-lang/rust#129422)
-   The future incompatibility lint `deprecated_cfg_attr_crate_type_name` [has been made into a hard error](rust-lang/rust#129670). It was used to deny usage of `#![crate_type]` and `#![crate_name]` attributes in `#![cfg_attr]`, which required a hack in the compiler to be able to change the used crate type and crate name after cfg expansion.
    Users can use `--crate-type` instead of `#![cfg_attr(..., crate_type = "...")]` and `--crate-name` instead of `#![cfg_attr(..., crate_name = "...")]` when running `rustc`/`cargo rustc` on the command line.
    Use of those two attributes outside of `#![cfg_attr]` continue to be fully supported.
-   Until now, paths into the sysroot were always prefixed with `/rustc/$hash` in diagnostics, codegen, backtrace, e.g.

        thread 'main' panicked at 'hello world', map-panic.rs:2:50
        stack backtrace:
           0: std::panicking::begin_panic
                     at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/std/src/panicking.rs:616:12
           1: map_panic::main::{{closure}}
                     at ./map-panic.rs:2:50
           2: core::option::Option<T>::map
                     at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/option.rs:929:29
           3: map_panic::main
                     at ./map-panic.rs:2:30
           4: core::ops::function::FnOnce::call_once
                     at /rustc/a55dd71d5fb0ec5a6a3a9e8c27b2127ba491ce52/library/core/src/ops/function.rs:248:5
        note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

    [RFC 3127 said](https://rust-lang.github.io/rfcs/3127-trim-paths.html#changing-handling-of-sysroot-path-in-rustc)

    > We want to change this behaviour such that, when `rust-src` source files can be discovered, the virtual path is discarded and therefore the local path will be embedded, unless there is a `--remap-path-prefix` that causes this local path to be remapped in the usual way.

    [#&#8203;129687](rust-lang/rust#129687) implements this behaviour, when `rust-src` is present at compile time, `rustc` replaces `/rustc/$hash` with a real path into the local `rust-src` component with best effort.
    To sanitize this, users must explicitly supply `--remap-path-prefix=<path to rust-src>=foo` or not have the `rust-src` component installed.
-   The allow-by-default `missing_docs` lint used to disable itself when invoked through `rustc --test`/`cargo test`, resulting in `#[expect(missing_docs)]` emitting false positives due to the expectation being wrongly unfulfilled. This behavior [has now been removed](rust-lang/rust#130025), which allows `#[expect(missing_docs)]` to be fulfilled in all scenarios, but will also report new `missing_docs` diagnostics for publicly reachable `#[cfg(test)]` items, [integration test](https://doc.rust-lang.org/cargo/reference/cargo-targets.html#integration-tests) crate-level documentation, and publicly reachable items in integration tests.
-   [The `armv8r-none-eabihf` target now uses the Armv8-R required set of floating-point features.](rust-lang/rust#130295)
-   [Fix a soundness bug where rustc wouldn't detect unconstrained higher-ranked lifetimes in a `dyn Trait`'s associated types that occur due to supertraits.](rust-lang/rust#130367)
-   [Update the minimum external LLVM version to 18.](rust-lang/rust#130487)
-   [Remove `aarch64-fuchsia` and `x86_64-fuchsia` target aliases in favor of `aarch64-unknown-fuchsia` and `x86_64-unknown-fuchsia` respectively.](rust-lang/rust#130657)
-   [The ABI-level exception class of a Rust panic is now encoded with native-endian bytes, so it is legible in hex dumps.](rust-lang/rust#130897)
-   [Visual Studio 2013 is no longer supported for MSVC targets.](rust-lang/rust#131070)
-   [The sysroot no longer contains the `std` dynamic library in its top-level `lib/` dir.](rust-lang/rust#131188)

</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=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants