Commit Graph

8016 Commits

Author SHA1 Message Date
bors
60dabef95a Auto merge of #138023 - melrief:97227_impl_Seek_for_Take, r=tgross35
Add `std::io::Seek` instance for `std::io::Take`

Library tracking issue [#97227](https://github.com/rust-lang/rust/issues/97227).
ACP: https://github.com/rust-lang/libs-team/issues/555

1. add a `len` field to `Take` to keep track of the original number of bytes that `Take` could read
2. add a `position()` method to return the current position of the cursor inside `Take`
3. implement `std::io::Seek` for `std::io::Take`

Closes: https://github.com/rust-lang/libs-team/issues/555
2025-05-19 19:28:16 +00:00
Matthias Krüger
6e784f842a Rollup merge of #141248 - RalfJung:reentrant-lock-race, r=joboet
fix data race in ReentrantLock fallback for targets without 64bit atomics

See [Zulip](https://rust-lang.zulipchat.com/#narrow/channel/269128-miri/topic/reentrant.20lock.20failure.20on.20musl) for details: the address used to identify a thread might get lazily allocated inside `tls_addr()`, so if we call that *after* doing the `tls_addr.load()` it is too late to establish synchronization with prior threads that used the same address -- the `load()` thus races with the `store()` by that prior thread, and might hence see outdated values, and then the entire logic breaks down.

r? `@joboet`
2025-05-19 18:08:42 +02:00
Mario Pastorelli
c8f5ff867d Add std::io::Seek instance for std::io::Take 2025-05-19 17:56:46 +02:00
Ralf Jung
a14e25c768 windows: document that we rely on an undocumented property of GetUserProfileDirectoryW 2025-05-19 17:06:02 +02:00
Ralf Jung
8286487c0c fix data race in ReentrantLock fallback for targets without 64bit atomics 2025-05-19 15:21:25 +02:00
León Orell Valerian Liehr
6f415e0f4c Rollup merge of #140628 - joboet:async_signal_safe, r=Mark-Simulacrum
std: stop using TLS in signal handler

TLS is not async-signal-safe, making its use in the signal handler used to detect stack overflows unsound (c.f. #133698). POSIX however lists two thread-specific identifiers that can be obtained in a signal handler: the current `pthread_t` and the address of `errno`. Since `pthread_equal` is not AS-safe, `pthread_t` should be considered opaque, so for our purposes, `&errno` is the only option. This however works nicely: we can use the address as a key into a map that stores information for each thread. This PR uses a `BTreeMap` protected by a spin lock to hold the guard page address and thread name and thus fixes #133698.
2025-05-18 18:44:11 +02:00
León Orell Valerian Liehr
eb21b252c6 Rollup merge of #140966 - est31:let_chains_library, r=tgross35
Remove #![feature(let_chains)] from library and src/librustdoc

PR https://github.com/rust-lang/rust/pull/132833 has stabilized the `let_chains` feature. This PR removes the last occurences from the library, the compiler, and librustdoc (also because #140887 missed the conditional in one of the crates as it was behind the "rustc" feature).

We keep `core` as exercise for the future as updating it is non-trivial (see PR thread).
2025-05-18 11:03:45 +02:00
Fluid
0dec3fee34 replace try_reserve_exact with try_with_capacity in std::fs::read 2025-05-18 09:54:57 +03:00
bors
777d372772 Auto merge of #138087 - tgross35:core-float-math, r=Amanieu
Initial implementation of `core_float_math`

Since [1], `compiler-builtins` makes a certain set of math symbols
weakly available on all platforms. This means we can begin exposing some
of the related functions in `core`, so begin this process here.

It is not possible to provide inherent methods in both `core` and `std`
while giving them different stability gates, so standalone functions are
added instead. This provides a way to experiment with the functionality
while unstable; once it is time to stabilize, they can be converted to
inherent.

For `f16` and `f128`, everything is unstable so we can move the inherent
methods.

The following are included to start:

* floor
* ceil
* round
* round_ties_even
* trunc
* fract
* mul_add
* div_euclid
* rem_euclid
* powi
* sqrt
* abs_sub
* cbrt

These mirror the set of functions that we have in `compiler-builtins`
since [1], with the exception of `powi` that has been there longer.

Details for each of the changes is in the commit messages.

Tracking issue: https://github.com/rust-lang/rust/issues/137578

[1]: https://github.com/rust-lang/compiler-builtins/pull/763

try-job: aarch64-gnu
tru-job: armhf-gnu
try-job: i686-msvc-1
try-job: test-various
try-job: x86_64-mingw-1
try-job: x86_64-mingw-2
2025-05-17 19:31:39 +00:00
GrantBirki
4358a1c05e remove extra tests that really might not be all that useful 2025-05-17 10:49:15 -07:00
GrantBirki
1bc8535e61 revert forward slash to backslash 2025-05-17 10:36:39 -07:00
Matthias Krüger
b9839ab329 Rollup merge of #139103 - joboet:abort_dedup, r=tgross35
deduplicate abort implementations

Currently, the code for process aborts is duplicated across `panic_abort` and `std`. This PR uses `#[rustc_std_internal_symbol]` to make the `std` implementation available to `panic_abort` via the linker, thereby deduplicating the code.
2025-05-17 15:45:20 +02:00
mejrs
c9b6ccc11c Switch library rustc_unimplemented to use Self and This 2025-05-17 12:50:37 +02:00
GrantBirki
604f0e2743 remove test_embedded_null_byte() test for now 2025-05-16 22:42:05 -07:00
Jack O'Connor
dcef449e2c discuss deadlocks in the std::io::pipe() example 2025-05-16 20:59:45 -07:00
Paul Mabileau
a9330dd0e9 Docs(lib/coll/hm): Add kv pair to extract_if's first sentence
Make it consistent in this regard with `BTreeMap`'s.

Signed-off-by: Paul Mabileau <paul.mabileau@harfanglab.fr>
2025-05-17 02:49:57 +02:00
Paul Mabileau
014434e96f Docs(lib/extract_if): Unify paragraph about elements mutation
Take the one from `BTreeMap` that seems the best-worded and most
precise among the available variations.

Signed-off-by: Paul Mabileau <paul.mabileau@harfanglab.fr>
2025-05-17 02:45:56 +02:00
Paul Mabileau
9205ee27a8 Docs(lib/extract_if): Unify paragraph about closure actions
Also fixes `HashSet`'s that incorrectly designated itself as a `list`.

Signed-off-by: Paul Mabileau <paul.mabileau@harfanglab.fr>
2025-05-17 02:36:08 +02:00
Paul Mabileau
cd5772e396 Docs(lib/coll/hm): Reword extract_if to use element instead of value
A minor change, but it seemed interesting to unify this one's
description, especially considering all the other equivalents use
`element` as well.

Signed-off-by: Paul Mabileau <paul.mabileau@harfanglab.fr>
2025-05-17 02:14:55 +02:00
GrantBirki
49658e6a3c additional edge cases tests for path.rs 2025-05-16 15:19:44 -07:00
est31
258e880861 Remove #![feature(let_chains)] from library and src/librustdoc 2025-05-16 16:14:24 +02:00
joboet
2cdbd69abf disable the stack overflow handler on miri 2025-05-16 14:25:15 +02:00
Matthias Krüger
03912f40ef Rollup merge of #141013 - federico-terzi:feat/command_startupinfo_windows, r=joboet
Implement methods to set STARTUPINFO flags for Command API on Windows

Implements https://github.com/rust-lang/rust/issues/141010
2025-05-16 07:19:42 +02:00
Matthias Krüger
3237d4dc14 Rollup merge of #140984 - mlowicki:patch-2, r=ibraheemdev
fix doc for UnixStream

Doc example was using `UdpSocket` instead of `UnixStream`.
2025-05-16 07:19:40 +02:00
Matthias Krüger
370cd22e47 Rollup merge of #140910 - paolobarbolini:wasi-fs-incorrect-stabilization, r=joboet
Remove `stable` attribute from wasi fs (read_exact|write_all)_at

The docs for [`std::os::wasi::fs::FileExt::read_exact_at`](https://doc.rust-lang.org/1.86.0/std/os/wasi/fs/trait.FileExt.html#method.read_exact_at) and [`std::os::wasi::fs::FileExt::write_all_at`](https://doc.rust-lang.org/1.86.0/std/os/wasi/fs/trait.FileExt.html#method.write_all_at) show the methods to be stable since v1.33, which is not correct and was a mistake made when the methods were added in (https://github.com/rust-lang/rust/pull/74076#pullrequestreview-443124667). The reviewer seemed to think this was an insta-stabilization, but the entire file is marked as unstable so that was not right. The stabilization version would also have been wrong either way.
2025-05-16 07:19:39 +02:00
joboet
6647cbb515 improve internal fastfail explainer 2025-05-15 11:20:13 +02:00
joboet
b7f2cd3a2b deduplicate abort implementations
Currently, the code for process aborts is duplicated across `panic_abort` and `std`. This PR uses `#[rustc_std_internal_symbol]` to make the `std` implementation available to `panic_abort` via the linker, thereby deduplicating the code.
2025-05-15 11:20:13 +02:00
Eric Huss
57af157ce2 Update std doctests for android
This updates some doctests that fail to run on android. We will soon be
supporting cross-compiled doctests, and the `arm-android` job fails to
run these tests.

In summary:
- Android re-exports some traits from linux under a different path.
- Android doesn't seem to have common unix utilities like `true`,
  `false`, or `whoami`, so these are disabled.
2025-05-14 18:26:06 -07:00
teor
8f0522dc81 Fix confusing WTF surrogate safety docs 2025-05-15 07:58:30 +10:00
Federico Terzi
e0b6363974 wire up startupinfo methods 2025-05-14 19:00:56 +02:00
Trevor Gross
2b9256e1c8 Move applicable float tests from coretests back to std
The previous commit moved all test files from `std` to `core` so git
understands the move. Not all functionality is actually testable in
`core`, however, so perform move the relevant portions back. Changes
from inherent to module methods is also done since this is the form of
math operations available in `core` (as `core_float_math`).
2025-05-14 14:29:58 +00:00
B I Mohammed Abbas
544c8ce535 Fix settimes for vxworks 2025-05-14 13:52:31 +05:30
B I Mohammed Abbas
e1f1878da5 Fix set_name for vxworks. Length of name should be truncated to VX_TASK_RENAME_LENGTH-1 2025-05-14 13:52:31 +05:30
Michał Łowicki
b9f4350fbc fix doc for UnixStream 2025-05-13 22:00:56 -04:00
Trevor Gross
48f3e63f70 Move float tests from std to core
Many float-related tests in `std` only depend on `core`, so move the
tests there. This also allows us to verify functions from
`core_float_math`.

Since the majority of test files need to be moved to `coretests`, move
the files here without any cleanup; this is done in a followup commit.
This makes git history slightly cleaner, but coretests will not build
immediately after this commit.
2025-05-13 22:22:15 +00:00
Trevor Gross
36790d2881 Initial implementation of core_float_math
Since [1], `compiler-builtins` makes a certain set of math symbols
weakly available on all platforms. This means we can begin exposing some
of the related functions in `core`, so begin this process here.

It is not possible to provide inherent methods in both `core` and `std`
while giving them different stability gates, so standalone functions are
added instead. This provides a way to experiment with the functionality
while unstable; once it is time to stabilize, they can be converted to
inherent.

For `f16` and `f128`, everything is unstable so we can move the inherent
methods.

The following are included to start:

* floor
* ceil
* round
* round_ties_even
* trunc
* fract
* mul_add
* div_euclid
* rem_euclid
* powi
* sqrt
* abs_sub
* cbrt

These mirror the set of functions that we have in `compiler-builtins`
since [1].

Tracking issue: https://github.com/rust-lang/rust/issues/137578

[1]: https://github.com/rust-lang/compiler-builtins/pull/763
2025-05-13 22:08:18 +00:00
Pietro Albini
ce6e29679c bump compiler_builtins 2025-05-13 11:30:36 +02:00
Pietro Albini
2ce08ca5d6 update cfg(bootstrap) 2025-05-12 15:33:37 +02:00
Pietro Albini
a360940ac9 update version placeholders 2025-05-12 15:33:30 +02:00
Paolo Barbolini
aeea4727a4 Remove stable attribute from wasi fs (read_exact|write_all)_at 2025-05-10 23:55:51 +00:00
Matthias Krüger
8186b71fb4 Rollup merge of #140783 - veluca93:oncelock-docs, r=jhpratt
Update documentation of OnceLock::get_or_init.

Explicitly point out that if the function panics the init function might be called multiple times.
2025-05-10 16:26:03 +02:00
Matthias Krüger
c6b9253ad5 Rollup merge of #129334 - ChayimFriedman2:more-lazy-methods, r=Amanieu
Implement (part of) ACP 429: add `DerefMut` to `Lazy[Cell/Lock]`

`DerefMut` is instantly stable, as a trait impl. That means this needs an FCP.

``@rustbot`` label +needs-fcp

https://github.com/rust-lang/libs-team/issues/429
2025-05-10 16:26:01 +02:00
Matthias Krüger
7fc43e50c7 Rollup merge of #140759 - dpaoliello:symlink, r=workingjubilee
[win][arm64] Disable std::fs tests that require symlinks

While trying to get the aarch64-msvc build working correctly (#140136), various tests in `std::fs` were failing as the Arm64 Windows runner image we are using does not have Developer Mode enabled, thus it cannot create symlinks.

I've [filed a request to get Developer Mode enabled](https://github.com/actions/partner-runner-images/issues/94), but in the meantime I've disabled the relevant tests on Arm64 Windows.
2025-05-08 13:55:46 +02:00
Luca Versari
ae25c39f22 Update documentation of OnceLock::get_or_init.
Explicitly point out that if the function panics the init function might
be called multiple times.
2025-05-08 09:33:38 +02:00
Daniel Paoliello
0cacc05531 [win][arm64] Disable FS tests that require symlinks 2025-05-07 11:12:11 -07:00
Guillaume Gomez
5152ab2f5e Rollup merge of #140734 - ivmarkov:master, r=joboet
Fix regression from #140393 for espidf / horizon / nuttx / vita

#140393 introduced changes to the layout of the `std::sys::process` code.
As a result, the Tier 3 ESP-IDF (and I suspect Horizon, Nuttx and Vita targets as well) no longer build.

A `pub use unsupported::output` is all that was missing - for the above OSes specifically. This explicit `pub use` is now necessary, because #140393 moved the `output` function to module-level, where it was previously part of `Command` and was thus re-exported automatically, as part of the `imp::Command` re-export further down the file containing the one-liner fix.

Note that - with the change introduced by #140393 - we **can't** anymore just do an unconditional `pub use imp::output` as this function simply does not exist anymore anywhere else but in the `unsupported` module.

r? `@joboet`
2025-05-07 18:19:08 +02:00
Guillaume Gomez
aca12a8216 Rollup merge of #140724 - tgross35:update-builtins, r=tgross35
Update `compiler-builtins` to 0.1.158

Includes the following changes:

* Require `target_has_atomic = "ptr"` for runtime feature detection [1]

[1]: https://github.com/rust-lang/compiler-builtins/pull/909
2025-05-07 10:50:50 +02:00
Guillaume Gomez
6e2c39b568 Rollup merge of #140398 - Berrysoft:cygwin-backtrace, r=tgross35
Fix backtrace for cygwin

Closes #140304

Depends on:
- [x] https://github.com/rust-lang/backtrace-rs/pull/704

This PR could not be merged until the above PR is merged. I'll update the submodule then.

EDIT: submodule updated.
2025-05-07 10:50:49 +02:00
ivmarkov
392880c004 Fix regression from #140393 for espidf / horizon / nuttx / vita 2025-05-07 08:04:21 +00:00
王宇逸
fe64184b16 Fix backtrace for cygwin 2025-05-07 13:08:19 +08:00