about summary refs log tree commit diff
path: root/library/std
AgeCommit message (Collapse)AuthorLines
2025-08-09reorganize rwlock testsConnor Tsui-336/+348
This commit simply helps discern the actual changes needed to test both poison and nonpoison `rwlock`s.
2025-08-09add `nonpoison::rwlock` implementationConnor Tsui-0/+1086
Adds the equivalent `nonpoison` types to the `poison::rwlock` module. These types and implementations are gated under the `nonpoison_rwlock` feature gate. Also blesses the ui tests that now have a name conflicts (because these types no longer have unique names). The full path distinguishes the different types.
2025-08-09reorganize rwlock fileConnor Tsui-327/+372
This commit is a purely cosmetic change to the documentation and ordering of items in the `rwlock.rs` file, which will help discern the actual difference between the `nonpoison` and `poison` variants of `rwlock`. List of changes (lots of small things): - Clean up some of the existing field doc comments - Add documentation for every field in struct definitions - Consolidate related implementation blocks (1 implementation block per guard instead of 2) - Use the lifetime name `'rwlock` instead of `'a` - Reorder implementation blocks to be consistent across the entire file (follows the order `ReadGuard`, `WriteGuard`, `MappedReadGuard`, MappedWriteGuard`) - Move simple trait implementations to the bottom of the file - Rename the `poison` field in `MappedRwLockWriteGuard` to posion_guard` - Cut off comments at 100 columns - Update the documentation of `downgrade` to match stabilization PR # 143191
2025-08-09Rollup merge of #145096 - Spxg:w/wasm_atomic, r=tgross35Stuart Cook-0/+4
Fix wasm target build with atomics feature Introduced by https://github.com/rust-lang/rust/pull/115746 close https://github.com/rust-lang/rust/issues/145101
2025-08-08Revert "Rollup merge of #143906 - ↵Jakub Beránek-32/+32
LorrensP-2158466:miri-float-nondet-foreign-items, r=RalfJung" This reverts commit 71f04692c32e181ab566c01942f1418dec8662d4, reversing changes made to 995ca3e532b48b689567533e6b736675e38b741e.
2025-08-08Fix wasm target build with atomics featureSpxg-0/+4
2025-08-08Fix wrong cache line size of riscv64minxuanz-5/+3
2025-08-07Rollup merge of #145046 - ulrichstark:master, r=tgross35Trevor Gross-2/+2
Fix doc comment of File::try_lock and File::try_lock_shared The doc comments of functions `File::try_lock` and `File::try_lock_shared` stabilized today in version 1.89.0 document an incorrect type of `Ok`. The result type was changed in rust-lang/rust#139343 after the latest change to the doc comments in rust-lang/rust#136876.
2025-08-07Rollup merge of #144903 - Kivooeo:panic_handler-is-not-begin, r=m-ou-seTrevor Gross-1/+1
Rename `begin_panic_handler` to `panic_handler` Part of https://github.com/rust-lang/rust/issues/116005
2025-08-07Rollup merge of #144900 - Kivooeo:unsigned_signed_diff-stabilize, r=dtolnayTrevor Gross-1/+0
Stabilize `unsigned_signed_diff` feature This closes [tracking issue](https://github.com/rust-lang/rust/issues/126041) and stabilises `checked_signed_diff` Closes: https://github.com/rust-lang/rust/issues/126041
2025-08-07Rollup merge of #144705 - pmur:murp/aarch64-lse, r=AmanieuTrevor Gross-0/+27
compiler-builtins: plumb LSE support for aarch64 on linux/gnu when optimized-compiler-builtins not enabled Add dynamic support for aarch64 LSE atomic ops on linux/gnu targets when optimized-compiler-builtins is not enabled. Enabling LSE is the primary motivator for rust-lang/rust#143689, though extending the rust version doesn't seem too farfetched. Are there more details which I have overlooked which make this impractical? I've tested this on an aarch64 host with LSE. r? ```````@tgross35```````
2025-08-07Auto merge of #145043 - Zalathar:rollup-3dbvdrm, r=Zalatharbors-32/+32
Rollup of 19 pull requests Successful merges: - rust-lang/rust#137831 (Tweak auto trait errors) - rust-lang/rust#138689 (add nvptx_target_feature) - rust-lang/rust#140267 (implement continue_ok and break_ok for ControlFlow) - rust-lang/rust#143028 (emit `StorageLive` and schedule `StorageDead` for `let`-`else`'s bindings after matching) - rust-lang/rust#143764 (lower pattern bindings in the order they're written and base drop order on primary bindings' order) - rust-lang/rust#143808 (Port `#[should_panic]` to the new attribute parsing infrastructure ) - rust-lang/rust#143906 (Miri: non-deterministic floating point operations in `foreign_items`) - rust-lang/rust#143929 (Mark all deprecation lints in name resolution as deny-by-default and report-in-deps) - rust-lang/rust#144133 (Stabilize const TypeId::of) - rust-lang/rust#144369 (Upgrade semicolon_in_expressions_from_macros from warn to deny) - rust-lang/rust#144439 (Introduce ModernIdent type to unify macro 2.0 hygiene handling) - rust-lang/rust#144473 (Address libunwind.a inconsistency issues in the bootstrap program) - rust-lang/rust#144601 (Allow `cargo fix` to partially apply `mismatched_lifetime_syntaxes`) - rust-lang/rust#144650 (Additional tce tests) - rust-lang/rust#144659 (bootstrap: refactor mingw dist and fix gnullvm) - rust-lang/rust#144682 (Stabilize `strict_overflow_ops`) - rust-lang/rust#145026 (Update books) - rust-lang/rust#145033 (Reimplement `print_region` in `type_name.rs`.) - rust-lang/rust#145040 (rustc-dev-guide subtree update) Failed merges: - rust-lang/rust#143857 (Port #[macro_export] to the new attribute parsing infrastructure) r? `@ghost` `@rustbot` modify labels: rollup
2025-08-07Fix doc comment of File::try_lock and File::try_lock_sharedUlrich Stark-2/+2
2025-08-07Auto merge of #144997 - BoxyUwU:bootstrap_bump, r=Mark-Simulacrumbors-12/+12
bump bootstrap compiler to 1.90 beta There were significantly less `cfg(bootstrap)` and `cfg(not(bootstrap))` this release. Presumably due to the fact that we change the bootstrap stage orderings to reduce the need for them and it was successful :pray:
2025-08-07Rollup merge of #143906 - LorrensP-2158466:miri-float-nondet-foreign-items, ↵Stuart Cook-32/+32
r=RalfJung Miri: non-deterministic floating point operations in `foreign_items` Part of [rust-lang/miri/#3555](https://github.com/rust-lang/miri/issues/3555#issue-2278914000), this pr does the `foreign_items` work. Some things have changed since rust-lang/rust#138062 and rust-lang/rust#142514. I moved the "helpers" used for creating fixed outputs and clamping operations to their defined ranges to `math.rs`. These are now also extended to handle the floating-point operations in `foreign_items`. Tests in `miri/tests/float.rs` were changed/added. Failing tests in `std` were extracted, run under miri with `-Zmiri-many-seeds=0..1000` and changed accordingly. Double checked with `-Zmiri-many-seeds`. I noticed that the C standard doesn't specify the output ranges for all of its mathematical operations; it just specifies them as: ``` Returns The sinh functions return sinh x. ``` So I used [Wolfram|Alpha](https://www.wolframalpha.com/).
2025-08-07Auto merge of #115746 - tgross35:unnamed-threads-panic-message, r=cuviperbors-7/+127
Print thread ID in panic message `panic!` does not print any identifying information for threads that are unnamed. However, in many cases, the thread ID can be determined. This changes the panic message from something like this: thread '<unnamed>' panicked at src/main.rs:3:5: explicit panic To something like this: thread '<unnamed>' (12345) panicked at src/main.rs:3:5: explicit panic Stack overflow messages are updated as well. This change applies to both named and unnamed threads. The ID printed is the OS integer thread ID rather than the Rust thread ID, which should also be what debuggers print. try-job: aarch64-apple try-job: aarch64-gnu try-job: dist-apple-various try-job: dist-various-* try-job: dist-x86_64-freebsd try-job: dist-x86_64-illumos try-job: dist-x86_64-netbsd try-job: dist-x86_64-solaris try-job: test-various try-job: x86_64-gnu try-job: x86_64-mingw-1 try-job: x86_64-msvc-1
2025-08-06Print thread ID in panic message if thread name is unknownTrevor Gross-7/+127
`panic!` does not print any identifying information for threads that are unnamed. However, in many cases, the thread ID can be determined. This changes the panic message from something like this: thread '<unnamed>' panicked at src/main.rs:3:5: explicit panic To something like this: thread '<unnamed>' (0xff9bf) panicked at src/main.rs:3:5: explicit panic Stack overflow messages are updated as well. This change applies to both named and unnamed threads. The ID printed is the OS integer thread ID rather than the Rust thread ID, which should also be what debuggers print.
2025-08-06Rollup merge of #144975 - joshtriplett:file-times-dir, r=jhprattGuillaume Gomez-1/+6
`File::set_times`: Update documentation and example to support setting timestamps on directories Inspired by https://github.com/rust-lang/rust/issues/123883 .
2025-08-06Rollup merge of #144972 - the8472:file-prefix-docs, r=joshtriplettGuillaume Gomez-0/+2
add code example showing that file_prefix treats dotfiles as the name of a file, not an extension This came up in a libs-api meeting while we were reviewing rust-lang/rust#144870
2025-08-06Rollup merge of #144861 - Kivooeo:payload-as-str-stabilization, r=ChrisDentonGuillaume Gomez-3/+1
Stabilize `panic_payload_as_str` feature Closes [tracking issue](https://github.com/rust-lang/rust/issues/125175). Part of https://github.com/rust-lang/rust/issues/116005. FCP ended more than year ago in tracking issue, I'm not sure if we should rerun it.
2025-08-06Reword documentation for `set_times` to clarify directory handlingJosh Triplett-2/+3
2025-08-06Change stdlib float tests to account for miri nondet floats.LorrensP-2158466-32/+32
2025-08-06Clarify EOF handling for `BufRead::skip_until`ginnyTheCat-2/+7
2025-08-06Rollup merge of #144836 - chotchki:patch-1, r=tgross35Jakub Beránek-1/+1
Change visibility of Args new function Currently the Args new function is constrained to pub(super) but this stops me from being able to construct Args structs in unit tests. This pull request is to change this to pub.
2025-08-06replace version placeholderBoxy-12/+12
2025-08-05`File::set_times`: Add documentation about setting directory timestampsJosh Triplett-0/+4
Inspired by https://github.com/rust-lang/rust/issues/123883 .
2025-08-05`File::set_times`: Remove `write(true)` from the example so it works on ↵Josh Triplett-1/+1
directories Inspired by https://github.com/rust-lang/rust/issues/123883 .
2025-08-05add code example showing that file_prefix treats dotfiles as the name of a ↵The 8472-0/+2
file, not an extension
2025-08-05Dynamically enable LSE for aarch64 rust provided intrinsicsPaul Murphy-0/+27
Create a private module to hold the bootstrap code needed enable LSE at startup on aarch64-*-linux-* targets when rust implements the intrinsics. This is a bit more heavyweight than compiler-rt's LSE initialization, but has the benefit of initializing the aarch64 cpu feature detection for other uses. Using the rust initialization code does use some atomic operations, that's OK. Mixing LSE and non-LSE operations should work while the update flag propagates.
2025-08-05Ignore sleep_until test on SGXRaoul Strackx-0/+1
2025-08-05Rollup merge of #144872 - connortsui20:once-poison-docs, r=AmanieuSamuel Tardieu-3/+59
Document Poisoning in `LazyCell` and `LazyLock` Currently, there is no documentation of poisoning behavior in either `LazyCell` or `LazyLock`, even though both of them can be observed as poisoned by users. `LazyCell` [plagyround example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=9cf38b8dc56db100848f54085c2c697d) `LazyLock` [playground example](https://play.rust-lang.org/?version=stable&mode=debug&edition=2024&gist=f1cd6f9fe16636e347ebb695a0ce30c0) # Open Questions - [x] Is it worth making the implementation of `LazyLock` more complicated to ensure that the the panic message is `"LazyLock instance has previously been poisoned"` instead of `"Once instance has previously been poisoned"`? See the `LazyLock` playground link above for more context. - [x] Does it make sense to move `LazyLock` into the `poison` module? It is certainly a poison-able type, but at the same time it is slightly different from the 4 other types currently in the `poison` module in that it is unrecoverable. I think this is more of a libs-api question. ``@rustbot`` label +T-libs-api Please let me know if these open questions deserve a separate issue / PR!
2025-08-05Rollup merge of #144852 - Kivooeo:rename-panic, r=m-ou-seSamuel Tardieu-2/+2
Rename `rust_panic_without_hook` to `resume_unwind` part of https://github.com/rust-lang/rust/issues/116005 r? libs
2025-08-04std: sys: io: io_slice: Add UEFI typesAyush Singh-0/+196
UEFI networking APIs do support vectored read/write. While the types for UDP4, UDP6, TCP4 and TCP6 are defined separately, they are essentially the same C struct. So we can map IoSlice and IoSliceMut to have the same binary representation. Since all UEFI networking types for read/write are DSTs, `IoSlice` and `IoSliceMut` will need to be copied to the end of the transmit/receive structures. So having the same binary representation just allows us to do a single memcpy instead of having to loop and set the DST. Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-08-04remove begin prefixKivooeo-1/+1
2025-08-04remove feature gateKivooeo-1/+0
2025-08-04Rollup merge of #144853 - Kivooeo:rust_-cleanup, r=Mark-SimulacrumStuart Cook-6/+6
Remove unnecessary `rust_` prefixes part of https://github.com/rust-lang/rust/issues/116005 Honestly, not sure if this can affect linking somehow, also I didn't touched things like `__rust_panic_cleanup` and `__rust_start_panic` which very likely will break something, so just small cleanup here also didn't changed `rust_panic_without_hook` because it was renamed here https://github.com/rust-lang/rust/pull/144852 r? libs
2025-08-04Rollup merge of #144188 - joshtriplett:available-parallelism, r=Mark-SimulacrumStuart Cook-0/+3
`available_parallelism`: Add documentation for why we don't look at `ulimit`
2025-08-04remove gateKivooeo-9/+2
2025-08-03add poisoning documentation to `LazyLock`Connor Tsui-2/+58
2025-08-03fix broken doc section link in `poison.rs`Connor Tsui-1/+1
2025-08-03Rollup merge of #144070 - stifskere:feat/macros/hash_map, r=NoratriebSamuel Tardieu-0/+76
Implement `hash_map` macro Implementation of https://github.com/rust-lang/rust/issues/144032 Implements the `hash_map` macro under `std/src/macros.rs`.
2025-08-03remove rust_ prefixesKivooeo-6/+6
2025-08-03removed gateKivooeo-3/+1
2025-08-03rename rust_panic_without_hookKivooeo-2/+2
2025-08-02Change visibility of Args new functionChristopher Hotchkiss-1/+1
Currently the Args new function is scope constrained to pub(super) but this stops me from being able to construct Args structs in unit tests.
2025-08-02Rollup merge of #144478 - joshtriplett:doc-code-formatting-prep, r=AmanieuSamuel Tardieu-2/+3
Improve formatting of doc code blocks We don't currently apply automatic formatting to doc comment code blocks. As a result, it has built up various idiosyncracies, which make such automatic formatting difficult. Some of those idiosyncracies also make things harder for human readers or other tools. This PR makes a few improvements to doc code formatting, in the hopes of making future automatic formatting easier, as well as in many cases providing net readability improvements. I would suggest reading each commit separately, as each commit contains one class of changes.
2025-08-02Rollup merge of #144185 - purplesyringa:poisoning-wording, r=AmanieuSamuel Tardieu-25/+87
Document guarantees of poisoning This mostly documents the current behavior of `Mutex` and `RwLock` (rust-lang/rust#143471) as imperfect. It's unlikely that the situation improves significantly in the future, and even if it does, the rules will probably be more complicated than "poisoning is completely reliable", so this is a conservative guarantee. We also explicitly specify that `OnceLock` never poisons, even though it has an API similar to mutexes. Fixes rust-lang/rust#143471 by improving documentation. r? ``@Amanieu``
2025-08-02feat: implement `hash_map!` macrostifskere-0/+76
2025-07-31[Doc] Add links to the various collectionsBruno Roy-6/+6
Add a few links to the collections mentioned in the module doc for Collections.
2025-07-31Remove `std`'s dependency on `compiler-builtins`Trevor Gross-1/+0
`compiler-builtins` is already in the crate graph via `alloc`, and all features related to `compiler-builtins` goes through `alloc`. There isn't any reason that `std` needs this direct dependency, so remove it.