Commit Graph

26115 Commits

Author SHA1 Message Date
bors 7c2c3c0ded Auto merge of #149063 - matthiaskrgr:rollup-6z23izv, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#147887 (Improve the documentation of atomic::fence)
 - rust-lang/rust#148281 (repr(transparent) check: do not compute check_unsuited more than once)
 - rust-lang/rust#148484 (Fix suggestion for the `cfg!` macro)
 - rust-lang/rust#149057 (`rust-analyzer` subtree update)
 - rust-lang/rust#149061 (debug-assert FixedSizeEncoding invariant)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-11-18 21:59:27 +00:00
Matthias Krüger e6d08c6521 Rollup merge of #147887 - matthieu-m:task/lib-core-sync-atomic-fence-doc-improvement, r=Mark-Simulacrum
Improve the documentation of atomic::fence

Attempt to "fix" two flaws of the current documentation:

1. The over-emphasis of fence - fence synchronization, relegating atomic - fence and fence - atomic synchronization to second fiddle.
2. The lack of explanation as to how to properly perform atomic - fence and fence - atomic synchronization.

It does so by first making it clear that there are 3 different ways to use an atomic fence, then presenting a full example for each usecase, noting the particular position of the fence with regard to the atomic operation, and rounding up with generic notes.
2025-11-18 16:52:10 +01:00
bors 3d461af2a2 Auto merge of #149059 - GuillaumeGomez:rollup-s6m2mmy, r=GuillaumeGomez
Rollup of 4 pull requests

Successful merges:

 - rust-lang/rust#148970 (std: sys: fs: uefi: Implement stat)
 - rust-lang/rust#149020 (flush_delayed: add note about stashed diagnostics)
 - rust-lang/rust#149026 (Add test for href of reexported enum variant)
 - rust-lang/rust#149049 (compiletest: Use JSON "binary-format" to decide `//@ only-elf` and `//@ ignore-elf`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-11-18 14:07:46 +00:00
Guillaume Gomez ff262bcb29 Rollup merge of #148970 - Ayush1325:uefi-fs-stat, r=joboet
std: sys: fs: uefi: Implement stat

- Implement std::fs::metadata function.
- Tested on qemu ovmf
2025-11-18 14:14:38 +01:00
bors f9e7961506 Auto merge of #148151 - cjgillot:no-offset-of, r=scottmcm
Replace OffsetOf by an actual sum of calls to intrinsic.

This PR changes the way we compute the value of the `offset_of!` macro in MIR. The current implementation uses a dedicated MIR rvalue.

This PR proposes to replace it by an inline constant which sums calls to a new intrinsic `offset_of(variant index, field index)`. The desugaring is done at THIR building time, easier that doing it on MIR.

The new intrinsic is only meant to be used by const-eval. LLVM codegen will refuse to generate code for it.

We replace:
```rust
a = offset_of!(T, Variant1.Field1.Variant2.Field2);
```

By:
```rust
a = const {constant#n};

{constant#n}: usize = {
    _1 = offset_of::<T>(index of Variant1, index of Field1);
    _2 = offset_of::<U>(index of Variant2, index of Field2); // Where T::Variant1::Field1 has type U
    _0 = _1 + _2
}
```

The second commit modifies intrinsic const checking to take `allow_internal_unstable` into account. The new intrinsic should only be called from stable `offset_of!` macro. The intrinsic itself is unstable, const-unstable, but `rustc_intrinsic_const_stable_indirect`.

Fixes rust-lang/rust#123959
Fixes rust-lang/rust#125680
Fixes rust-lang/rust#129425
Fixes rust-lang/rust#136175

r? `@ghost`
2025-11-18 10:55:59 +00:00
Ayush Singh 6106760f31 std: sys: fs: uefi: Implement stat
- Implement std::fs::metadata function.
- Tested on qemu ovmf

Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-11-18 15:11:08 +05:30
Camille Gillot aeb9332b28 Complete doc. 2025-11-18 00:10:04 +00:00
Camille Gillot 12e91cf814 Honor allow_internal_unstable for const intrinsics. 2025-11-18 00:10:03 +00:00
Camille Gillot 72444372ae Replace OffsetOf by an actual sum. 2025-11-18 00:10:03 +00:00
Matthias Krüger c3af6292ec Rollup merge of #147077 - joboet:mov_kernel_copy_sys, r=ibraheemdev
std: move `kernel_copy` to `sys`

Part of rust-lang/rust#117276.

The current organisation of the `kernel_copy` mechanism used to specialise `io::copy` on Linux necessitated circular links between the `io::copy` module and the implementation in `sys::pal::unix::kernel_copy`, as well as presenting an exception to the tidy PAL rule that forbids OS-based `#[cfg]`s outside of `sys` and `os`.

This PR fixes this by moving `kernel_copy` to `sys` (as per rust-lang/rust#117276) and returning a `CopyState` from that function specifying whether `io::copy` should use its fallback. The `kernel_copy` function on other platforms just unconditionally returns `CopyState::Fallback`.
2025-11-17 21:47:58 +01:00
Matthieu M 5431c6fd8e Improve the documentation of atomic::fence
Attempt to "fix" two flaws of the current documentation:

1. The over-emphasis of fence - fence synchronization, relegating
   atomic - fence and fence - atomic synchronization to second fiddle.
2. The lack of explanation as to how to properly perform atomic - fence
   and fence - atomic synchronization.

It does so by first making it clear that there are 3 different ways to
use an atomic fence, then presenting a full example for each usecase,
noting the particular position of the fence with regard to the atomic
operation, and rounding up with generic notes.
2025-11-17 18:12:43 +01:00
Matthias Krüger 4e5c61e932 Rollup merge of #148504 - NeatNit:intlong, r=ibraheemdev
Fix link in c_longlong documentation

Ran across this mistake when reading [the documentation](https://doc.rust-lang.org/std/ffi/type.c_longlong.html). I went through the other `.md` files in this directory and didn't spot any other errors.

**I did not check the output of this change** - I couldn't figure out how to get `cargo doc` to work and I figured it's not worth the distraction. It can't really go wrong, can it?
2025-11-17 18:07:32 +01:00
Matthias Krüger 5dd82e8ed9 Rollup merge of #145610 - GrigorenkoPV:char_max_len, r=Amanieu
Stabilize `char_max_len`

Tracking issue: rust-lang/rust#121714

r? t-libs-api

`@rustbot` label +needs-fcp -T-libs +T-libs-api

Closes rust-lang/rust#121714
2025-11-17 18:07:31 +01:00
joboet d870149672 std: move kernel_copy to sys 2025-11-17 17:44:21 +01:00
bors cc328c1238 Auto merge of #149013 - Zalathar:rollup-io1ddhc, r=Zalathar
Rollup of 11 pull requests

Successful merges:

 - rust-lang/rust#148505 (add larger test for `proc_macro` `FromStr` implementations)
 - rust-lang/rust#148752 (Constify `ManuallyDrop::take`)
 - rust-lang/rust#148757 (Constify `mem::take`)
 - rust-lang/rust#148855 (Error if an autodiff user does not set lto=fat)
 - rust-lang/rust#148912 (add note to `lines` docs about empty str behavior)
 - rust-lang/rust#148958 (Run codegen tests on a 32-bit target in PR CI)
 - rust-lang/rust#148994 (Abi compatibility test cleanup)
 - rust-lang/rust#148999 (Tweak Motor OS linker preset, fix `remote-test-server` for Motor OS)
 - rust-lang/rust#149004 (compiletest: Avoid race condition in file deletion)
 - rust-lang/rust#149008 (triagebot: remove jsha from notifications for rustdoc HTML)
 - rust-lang/rust#149010 (compiletest: Remove the "wasm32-bare" alias for `wasm32-unknown-unknown`)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-11-17 07:49:48 +00:00
Stuart Cook 47585c9f48 Rollup merge of #148912 - msmoiz:main, r=scottmcm
add note to `lines` docs about empty str behavior

This pull request adds a short note to the documentation for `str::lines` that describes the behavior of the resulting iterator when called on an empty string. I tripped over this a few days ago because I thought (incorrectly) that the iterator would return a single line with an empty string. I don't doubt that the actual behavior (return no lines) is the correct behavior, but in the absence of explicit documentation describing it, I came to the wrong conclusion about it and maybe others will too. If this is so obvious as to be not worth including, I'm happy to withdraw the pull request! Thanks for taking a look.
2025-11-17 16:41:03 +11:00
Stuart Cook 6fe5c1d544 Rollup merge of #148757 - nxsaken:const_mem_take, r=scottmcm
Constify `mem::take`

Feature: `const_default` (rust-lang/rust#143894)
2025-11-17 16:41:02 +11:00
Stuart Cook dd9b8e65a4 Rollup merge of #148752 - nxsaken:const_manually_drop_take, r=scottmcm
Constify `ManuallyDrop::take`

Feature: `const_manually_drop_take`
Tracking issue: rust-lang/rust#148773

This PR constifies `ManuallyDrop::take`.
2025-11-17 16:41:01 +11:00
bors 89fe96197d Auto merge of #148478 - RalfJung:rotating-funnel, r=Mark-Simulacrum
use funnel shift as fallback impl for rotating shifts

That lets us remove this gnarly implementation from Miri and const-eval.

However, `rotate_left`/`rotate_right` are stable as const fn, so to do this we have to `rustc_allow_const_fn_unstable` a bunch of const trait stuff. Is that a bad idea? Cc `@oli-obk` `@fee1-dead`
2025-11-17 04:36:16 +00:00
Matthias Krüger 046e09096e Rollup merge of #148995 - RalfJung:extract_if, r=the8472
add must_use to extract_if methods

Also, mention the `.for_each(drop)` pattern in the documentation. One can't always use `retain` with a negated predicate as that does not have a range argument.

r? `@the8472`
2025-11-16 20:40:25 +01:00
Matthias Krüger cb94a8411c Rollup merge of #148971 - purplesyringa:pre-exec-error-constructor, r=Mark-Simulacrum
Document Error::{new,other} as to be avoided in pre_exec

This is a mistake I've found in many projects on GitHub and made myself. It's obvious that `Error::new`/`Error::other` allocate when you look at their signatures, and it's obvious that the `pre_exec` closure shouldn't allocate, but when you're asked to write a closure that returns a specific type, you don't expect its main constructor to be problematic.

I've included the list of 71 affected projects in a spoiler, though I don't expect anyone to look through it closely. It includes popular projects like alacritty, pika-backup, rio, rpm-ostree, and headcrab, as well as many smaller ones. For the most part, the snippets I've found are careful to only call functions from `libc`, `nix`, or `rustix`, so it's not a case of general incompetence, but something that just slipped through the cracks.

This docs section is already cluttered, so I've kept it terse.

If this is merged, I'd like to mass-post issues to the affected projects linking to this PR as a centralized source of information and place for discussion. Are there any objections about that?

`@rustbot` label +A-docs +A-process +O-unix +T-libs-api

<details>
<summary>List of affected projects</summary>

Format: links (witness of multi-threading)

- https://github.com/0x4D44/mdmcp/blob/cccdfab32d5a203d03ccbc6ed261a2f4a4e6420d/mdmcpsrvr/src/sandbox.rs#L385 (`tokio::main`)
- https://github.com/alacritty/alacritty/blob/bf68154f9e4b91e5ba21dfb8151dbde23c46d47d/alacritty_terminal/src/tty/unix.rs#L250 (`thread::spawn`)
- https://github.com/AsterZephyr/polyagent/blob/6a7f5aced0335926941931ca965e5455890a7ce3/rust/agent-core/src/sandbox.rs#L257 (`tokio::main`)
- https://github.com/bootc-dev/containers-image-proxy-rs/blob/68673c836a91070811c17858183266e634f9719d/src/imageproxy.rs#L285 (`library`)
- https://github.com/delft-hyperloop/DH09-sw/blob/27f489edd297e9b93b8caa2c0b222ae8a9f1a70f/gs/station/src/tui/app.rs#L69 (`thread::spawn`)
- https://github.com/fcoury/oxproc/blob/85e8b510102d1caf7f15fd88694b4ad24bcd59b7/src/manager.rs#L55 (`tokio::runtime::Builder::new_multi_thread`)
- https://github.com/galqiwi/runner/blob/35d4756bc518b5947e0275e4251b674c8c354b62/src/run.rs#L75 (`tokio::main`)
- https://github.com/golemfactory/yagna/blob/31f5353e5532e947abb824adc30791583d01bf74/golem_cli/src/command/yagna.rs#L384, https://github.com/golemfactory/yagna/blob/31f5353e5532e947abb824adc30791583d01bf74/test-utils/test-framework/src/yagna.rs#L103 (`actix_rt::main`)
- https://github.com/greshake/i3status-rust/blob/2d797c50702873fc8efe518156e204a0b3979fc8/src/subprocess.rs#L14 (`thread::Builder::new`)
- https://github.com/hattmo/projects/blob/626feea965cebd90490e3e16f2c4b0c6725212e1/opstation/src/manager/mod.rs#L50 (`none`)
- https://github.com/iamazy/nxshell/blob/ca3b94324831cdc8f8b533c1ff252bdeeba3acbf/crates/alacritty_terminal/src/tty/unix.rs#L256 (`thread::spawn`)
- https://github.com/ironcore-dev/FeOS/blob/9dee27162f5860991dc176bf2e0d9f948dc97d5b/feos/services/vm-service/src/vmm/ch_adapter.rs#L272 (`tokio::main`)
- https://github.com/jamesmcm/vopono/blob/d1aad75d9fc8959488e020f3ffea6ffd1f798609/vopono_core/src/network/application_wrapper.rs#L193 (`thread::spawn`)
- https://github.com/Kocoro-lab/Shannon/blob/05b0c5ca7b65b2d2c2c8be83906b37d5307718e7/rust/agent-core/src/sandbox.rs#L261 (`tokio::main`)
- https://github.com/kolloch/zack/blob/2244f29a74f74401abd8869c50c7d868afd656b9/zaun/src/lib.rs#L157 (`library`)
- https://github.com/MaxVerevkin/wlr-which-key/blob/179261a45867544f2b3c25871b8ef77c6f9bdf43/src/main.rs#L532 (`none`)
- https://github.com/openanolis/cryptpilot/blob/8deab3eee1d6488f6578f6284d0494c70ce7f6b4/src/provider/mod.rs#L228 (`tokio::main`)
- https://github.com/pantsbuild/pants/blob/e5ee289fc67a02a8d011f3fd160e8544727bd613/src/rust/process_execution/children/src/lib.rs#L44 (`tokio::main`)
- https://github.com/pika-backup/pika-backup/blob/297d21a2b02dc7230c2d8e7cf86289d25ba82de1/pika-backup/src/utils.rs#L171 (`library`)
- https://github.com/proxmox/pve-xtermjs/blob/1c92330cccb21fb65abcff6e35848b712592dccb/termproxy/src/main.rs#L290 (`none`)
- https://github.com/rand/mnemosyne/blob/3db85ed0bde68f25c38fb4a77c6cac50fa638d52/src/daemon/mod.rs#L181, https://github.com/rand/mnemosyne/blob/3db85ed0bde68f25c38fb4a77c6cac50fa638d52/src/daemon/orchestration.rs#L204 (`tokio::main`)
- https://github.com/raphamorim/rio/blob/c0d687a3a1a439dbe81405d805c3dc191c90c45f/teletypewriter/src/unix/mod.rs#L551 (`library`)
- https://github.com/rawkode/cuenv/blob/2e76ab93b0faa25a53094406e7f5f1ca15e32068/crates/security/src/access_restrictions.rs#L379 (`thread::spawn`)
- https://github.com/reubeno/brush/blob/b1a76480bf000bb2d351b65c2012eb06f88fa0ae/brush-core/src/sys/unix/commands.rs#L64 (`tokio::runtime::Runtime::new()`)
- https://github.com/sebosp/chartacritty/blob/b2c19ee7836ca3d939fff045cad93182749cc0ea/alacritty_terminal/src/tty/unix.rs#L250 (`thread::spawn`)
- https://github.com/skanehira/ghost/blob/ad500f9fb47b7266e6d5989b0232881efe1bfa87/src/app/process.rs#L82 (`tokio::main`)
- https://github.com/coreos/rpm-ostree/blob/0ad2ee53f3c2d77bc4adfd618d865e919c943865/rust/src/bwrap.rs#L100 (`thread::spawn`)
- https://github.com/zerocore-ai/microsandbox/blob/9d334572a821775070de68d7cb20f1b2b65da9c3/microsandbox-utils/lib/runtime/supervisor.rs#L131 (`tokio::main`)
- https://github.com/willfindlay/bpfcontain-rs/blob/eb2cd826b609e165d63d784c0f562b7a278171d2/src/subcommands/run.rs#L62 (`library`)
- https://github.com/willothy/sesh/blob/c013dda71e69d59de3e23c08aa7fc4f71c8e087c/shared/src/pty.rs#L216 (`tokio::main`)
- https://github.com/AiTerminalFoundation/ai-terminal/blob/33618aedf66229ee5075519640344fef44b058e1/ai-terminal/src-tauri/src/command/core/execute_command.rs#L388 (`thread::spawn`)
- https://github.com/Toromino/chromiumos-platform2/blob/97e6ba18f0e5ab6723f3448a66f82c1a07538d87/os_install_service/src/util.rs#L92 (`thread::spawn`)
- https://github.com/jimmyff/nixfiles/blob/462d487680d91b25a74f69ce2509e519504ea5de/scripts/flitter/flitter.rs#L455 (`tokio::main`)
- https://github.com/simonrw/dap-gui/blob/5d073ff0ea4e99ba94af6c0137c089418ead5298/crates/server/src/debugpy.rs#L43 (`thread::spawn`)
- https://github.com/Team-Atlanta/aixcc-afc-atlantis/blob/ef3425da2bc8951afcfe419913e88b064eb3bcf0/example-crs-webservice/crs-multilang/uniafl/src/concolic/executor/symcc/symcc.rs#L216, https://github.com/Team-Atlanta/aixcc-afc-atlantis/blob/ef3425da2bc8951afcfe419913e88b064eb3bcf0/example-crs-webservice/crs-multilang/uniafl/src/concolic/executor/symcc/symqemu.rs#L259 (`thread::spawn`)
- https://github.com/nullpo-head/dbgee/blob/e2a34f3271ee7e100eeccd8e00f8a50729ef0f1a/dbgee/src/os/linux.rs#L162 (`thread::spawn`)
- https://github.com/KingBright/training_manager/blob/22e54166ed4e153e05b6902d7d8661a6a4b5e31a/src/task_manager.rs#L87 (`tokio::main`)
- https://github.com/SparkyTD/ovpn/blob/c55e2945776ab0da0616707315141a5a04c4129c/ovpnd/src/session_manager.rs#L32 (`tokio::main`)
- https://github.com/FulanXisen/like/blob/e5b6543e8f1729e410439e1e50ceed1fdc9fddc2/like-strace/src/main.rs#L51 (`none`)
- https://github.com/patrickdappollonio/dotenv/blob/5ec161045b21c5548f867cae637bea64bea59550/src/main.rs#L166 (`none`)
- https://github.com/jefflouisma/KasmVNCPlus/blob/765a77371645cbbba5b639f49591c251aa97f363/novnc_recorder/src/ffmpeg.rs#L11 (`thread::spawn`)
- https://github.com/xlsynth/xlsynth-crate/blob/02967d938910cf23a09e93ffb3284e50c1e11d7d/xlsynth-driver/src/prover.rs#L474 (`thread::spawn`)
- https://github.com/M00NLIG7/pandoras_box/blob/d2dcfff230426688af6d6770899d9865d27b5733/rustrc/src/stateful_process.rs#L37 (`tokio::main`)
- https://github.com/bendiksolheim/term/blob/9906f5c5a0115fc330ac6c56e947d41c4ad78545/src/term/term.rs#L155 (`async_std::task::spawn`)
- https://github.com/yskszk63/ssssh/blob/9c03e1d7bab2b1cdc52892d4c28e11daf639bd94/examples/bash.rs#L87 (`tokio::main`)
- https://github.com/jarhodes314/tcp-buffer-test/blob/63c366f5c1dd940f9a392fc73be653c0c0d81b4c/src/main.rs#L281 (`tokio::main`)
- https://github.com/luser/spawn-ptrace/blob/d29c538c0c81ac1d62f19cee8be48e4ab0926392/src/lib.rs#L59 (`library`)
- https://github.com/OSH-2020/x-chital/blob/fadcc96868b619f4463c95edd01b71f23fb20c13/rvisor/src/sentry/platform/ptrace.rs#L21 (`none`)
- https://github.com/sbstp/supermon/blob/3353fad862970eb54c293c63dda9980539e1ac0b/src/reactor.rs#L76 (`thread::spawn`)
- https://github.com/headcrab-rs/headcrab/blob/5a420c5da3f51196cd991680bb2b3fded6ce7033/src/target/unix.rs#L55 (`library`)
- https://github.com/taoky/greenhook/blob/2a69aa432ab7fd4eee68eea2a2b4dbec845165cc/src/lib.rs#L430 (`thread::spawn`)
- https://github.com/saltnpepper97/snug/blob/b59df7f112f059f144c7a32c00bd8ad73a7d584d/src/process.rs#L89 (`thread::spawn`)
- https://github.com/regiontog/WebDM/blob/43b557295316668a975466354d86703f7ad3dd2d/src/main.rs#L488 (`gtk`)
- https://github.com/KailasMahavarkar/rustbox/blob/c27801cc479c75fec6c12a08272d507793769871/rustbox/src/executor.rs#L226 (`thread::spawn`)
- https://github.com/roboplc/virtual-terminal/blob/967e6c9dea5455c7f7f3b9276b88abb445009a3a/src/lib.rs#L224 (`library`)
- https://github.com/nui/caco3/blob/ce093f81c6a57dd9172894e7d5ab28d2984f5cc8/caco3-pty/src/nixpty.rs#L67 (`library`)
- https://github.com/nohackjustnoobb/Macro-Deck-Driver/blob/531421e41266ca952cf7c62644da0194877c1e24/src/cli/background_start.rs#L69 (`thread::spawn`)
- https://github.com/ManishaChavva/a653rs-linux/blob/1b2830594519d9eff3779f6cd22795dbe14f8d54/hypervisor/src/hypervisor/partition.rs#L258 (`thread::spawn`)
- https://github.com/rhinos0608/codecrucible-synth/blob/7c7d5fb7743116a2a94c3156dee43439675a4e2e/rust-executor/src/executors/command.rs#L422 (`library`)
- https://github.com/Nughm3/sandbox/blob/5146a95e29b198b85c496077dc096bbe1e882d23/src/lib.rs#L73 (`library`)
- https://github.com/naverwhale/whaleos-platform2/blob/166e825c8a43753dda3b021c5519124842d1d8d5/os_install_service/src/util.rs#L92 (`thread::spawn`)
- https://github.com/de-vri-es/webterm-server-rs/blob/69845f7f0678dce942de8313d6d4b0a57f83a9a9/src/pty/pseudo_terminal_pair.rs#L59, https://github.com/de-vri-es/webterm-server-rs/blob/69845f7f0678dce942de8313d6d4b0a57f83a9a9/src/pty/pseudo_terminal_pair.rs#L63 (`tokio::main`)
- https://github.com/jjs-dev/jjs/blob/bf00423f70f8a6ed508bbcb8b38840225e43cc73/src/invoker/src/worker/valuer.rs#L39 (`tokio::main`)
- https://github.com/Drumblow/seac/blob/9c9fea1222ab98aee25376b51de8a66fe0eb4676/src/executor/process_manager.rs#L139 (`tokio::main`)
- https://github.com/CJacob314/rustcon/blob/92c582fa21fc68bb8740f617455820c3377a0274/src/main.rs#L166 (`none`)
- https://github.com/antialize/simple-admin/blob/cbde17d1b132be8427340fcc55f82958641d32a6/src/bin/sadmin/persist_daemon.rs#L223 (`tokio::main`)
- https://github.com/jonathanforhan/pty-exec/blob/c08b037747aa049cd7d41d6ea8de02305775d789/src/unix/pty.rs#L48 (`library`)
- https://github.com/0b01/tail2/blob/5f699b6aafb4c5be677c21e8f619c35bca33efcf/tail2/src/client/run.rs#L178 (`tokio::main`)
- https://github.com/owtaylor/ttymon/blob/61dfc842151c1e45920c427471617cbb27caff0d/src/pty.rs#L187 (`none`)
- https://github.com/Nughm3/contest-platform/blob/25a6ad7ff84550f5a2b32f270660acdd010e5a93/judge/src/sandbox.rs#L96 (`tokio::main`)
- https://github.com/valoq/glycin/blob/3447555afb60245f4e2329f129c921573f077d1b/glycin/src/sandbox.rs#L335 (`library`)
</details>
2025-11-16 20:40:24 +01:00
Matthias Krüger 098260034a Rollup merge of #148914 - folkertdev:aarch64-openbsd-fix-import, r=Mark-Simulacrum
fix incorrect import in `std_detect` on `aarch64-unknown-openbsd`

fixes https://github.com/rust-lang/rust/issues/148898

In https://github.com/rust-lang/rust/pull/147024 the module structure of `std_detect` for `openbsd` was changed which invalidated this `super::` usage.

I've now tested that `std_detect` builds (or well, checks, because I don't have the right linkers) with `aarch64-unknown-openbsd` and `powerpc64-unknown-openbsd`.
2025-11-16 20:40:24 +01:00
Matthias Krüger 79d765ed38 Rollup merge of #148703 - pitaj:rangefrom-overflow_checks, r=Mark-Simulacrum
Use `overflow_checks` intrinsic so `IterRangeFrom` yields MAX before panicking in debug

Based on rust-lang/rust#128666. For your convenience, here is the [diff from that PR](https://github.com/pitaj/rust/compare/intrinsic-overflow_checks...pitaj:rust:rangefrom-overflow_checks).

When `overflow_checks` are enabled, the following code will output as shown
```rust
for n in std::range::RangeFrom::from(253_u8..) {
    println!("{n}");
}
// 253
// 254
// 255
// panic
```

Which is a change from the current behavior, where it will panic after printing 254.

This behavior was [requested by the libs team](https://github.com/rust-lang/rust/issues/125687#issuecomment-2151118208)

r? `@Mark-Simulacrum`
2025-11-16 20:40:22 +01:00
Ralf Jung fc07052f8b add must_use to extract_if methods 2025-11-16 15:57:23 +01:00
bors e1a2ec6051 Auto merge of #148259 - RalfJung:const-ptr-fragment, r=oli-obk
const-eval: fix and re-enable pointer fragment support

The pointer fragment support from https://github.com/rust-lang/rust/pull/144081 got disabled due to https://github.com/rust-lang/rust/issues/146291. This brings it back. To fix the issue, the per-byte provenance fragment tracking tracks *both* the provenance and raw address of the full pointer, so we can ensure that only fragments that are truly part of the same pointer are being merged.

r? `@oli-obk`
Cc `@theemathas`
Fixes https://github.com/rust-lang/const-eval/issues/72 again.
Also fixes https://github.com/rust-lang/rust/issues/147959.

`@traviscross` I assume this won't need another t-lang FCP since it already got FCP'd in rust-lang/rust#144081?
2025-11-16 07:09:45 +00:00
Peter Jaszkowiak 0e5c96c3ec IterRangeFrom: overflow panic after yielding MAX
check overflow after yielding MAX value
new `0_u8..` will yield `255` and only panic on the subsequent `next()`
2025-11-15 21:29:59 -07:00
Peter Jaszkowiak 6d2eb33391 fix a couple unstable attributes 2025-11-15 21:29:59 -07:00
Stuart Cook 8ea74b1a8f Rollup merge of #148836 - ericseppanen:primitive_reference_docs, r=Mark-Simulacrum
tweak primitive reference docs

This is a docs-only change for primitive reference.

I noticed a typo ("safe to use at type `T`") and fixed it to read "safe to use *as* type `T`".

While reading over the whole page, I also noticed another sentence that was hard to read. I tried to improve it: feel free to comment on the wisdom of this change...
2025-11-16 14:39:59 +11:00
Stuart Cook 79e2a2f47c Rollup merge of #148832 - clubby789:cargo-update-library-11-11-25, r=Mark-Simulacrum
Bump library dependencies

https://github.com/rust-lang/rust/pull/145849#issuecomment-3394832713
2025-11-16 14:39:59 +11:00
Stuart Cook ec2f7397ce Rollup merge of #148827 - GoldsteinE:stabilize-vec-into-raw-parts, r=Mark-Simulacrum
Stabilize vec_into_raw_parts

This stabilizes `Vec::into_raw_parts()` and `String::into_raw_parts()` per FCP in https://github.com/rust-lang/rust/issues/65816#issuecomment-3517630971. While this _does not_ stabilize `Vec::into_parts()`, I fixed up the examples that said they were waiting for `vec_into_raw_parts`. As `Vec::from_parts()` and `Vec::into_parts()` are covered by the same feature `box_vec_non_null`, any doctest that uses `Vec::from_parts()` can also use `Vec::into_parts()` (and same for allocator-aware versions).

Closes rust-lang/rust#65816

``@rustbot`` modify labels: +T-libs-api
2025-11-16 14:39:58 +11:00
Stuart Cook 7b73b2126d Rollup merge of #148416 - GrigorenkoPV:vec_recycle, r=Mark-Simulacrum
`vec_recycle`: implementation

Tracking issue: rust-lang/rust#148227

Going with the `TransmuteFrom` approach suggested in https://github.com/rust-lang/libs-team/issues/674#issuecomment-3457795183, but a bit simplified.

Currently does not work in some places where it should due to the limitations of the current implementation of the transmutability analysis: https://github.com/rust-lang/rust/issues/148227#issuecomment-3478099591
2025-11-16 14:39:56 +11:00
bors 54f417673c Auto merge of #148526 - reddevilmidzy:docs, r=Mark-Simulacrum
Expand pow docs with special-case tests

resolve: rust-lang/rust#148316

Files changed:

* library/std/src/num: f32.rs, f64.rs,
  * powi
  * powf
* library/std/src/num: f16.rs, f128.rs
  * powf
* library/core/src/num: f16.rs, f128.rs
  * powi
* library/core/src/num: int_macros.rs, uint_macros.rs
  * checked_pow
  * strict_pow
  * saturating_pow
  * wrapping_pow
  * overflowing_pow
  * pow
2025-11-15 22:01:14 +00:00
Alisa Sireneva 33a6142ee0 Document Error::{new,other} as to be avoided in pre_exec 2025-11-15 12:30:16 +03:00
Ralf Jung 907fd85e16 const-eval: fix and re-enable pointer fragment support 2025-11-15 10:09:42 +01:00
bors b6d7ff3aa7 Auto merge of #148944 - theemathas:rm_inherit_overflow, r=joboet
Remove `rustc_inherit_overflow_checks` from `position()` in slice iterators

This method implementation can never cause an overflow, since `i` can never go over the slice's length.
2025-11-14 18:47:43 +00:00
bors 42f4793e5a Auto merge of #138918 - Ayush1325:uefi-fs-time, r=joboet
uefi: fs: Add file times plumbing

- Add plumbing to allow conversions to and from UEFI Time to Rust SystemTime.
- Also add FileTimes implementation.

cc `@nicholasbishop`

r? `@petrochenkov`
2025-11-14 15:35:39 +00:00
Pavel Grigorenko f9dcc6b21c Stabilize char_max_len 2025-11-14 18:23:19 +03:00
Theemathas Chirananthavat 8d075ae0aa Remove rustc_inherit_overflow_checks from position() in slice iterators
This method implementation can never cause an overflow,
since `i` can never go over the slice's length.
2025-11-14 20:12:11 +07:00
bors c91009892b Auto merge of #148940 - dtolnay:implarguments, r=joboet
Combine `impl<'a> Arguments<'a>` blocks

This makes a difference in the documentation rendered by rustdoc.

**Before:**

<p align="center"><img width="700" src="https://github.com/user-attachments/assets/cd5cc519-a8fa-4409-a347-f5a19638efc1" /></p>

**After:**

<p align="center"><img width="700" src="https://github.com/user-attachments/assets/4c6a9564-7f46-4879-a085-51715453bbae" /></p>
2025-11-14 12:19:17 +00:00
David Tolnay 85332e39d2 Combine impl<'a> Arguments<'a> blocks 2025-11-14 02:12:43 -08:00
Stuart Cook f61bfb0037 Rollup merge of #148725 - scottmcm:experiment-new-try-block-v3, r=petrochenkov
Implement the alternative `try` block desugaring

As discussed in https://github.com/rust-lang/rfcs/pull/3721#issuecomment-3208342727, update the `try` in nightly to match the RFC as a way to experiment.

This addresses the following unresolved issue from https://github.com/rust-lang/rust/issues/31436

>  Address issues with type inference (`try { expr? }?` currently requires an explicit type annotation somewhere).
2025-11-14 19:57:06 +11:00
Scott McMurray e5803fceed Move into_try_type to a free function 2025-11-13 19:53:02 -08:00
Stuart Cook 355e4cf8d6 Rollup merge of #148906 - m-ou-se:fmt-args-from-str, r=dtolnay
Expose fmt::Arguments::from_str as unstable.

Now that https://github.com/rust-lang/rust/pull/148789 is merged, we can have a fmt::Arguments::from_str. I don't know if we want to commit to always having an implementation that allows for this, but we can expose it as unstable for now so we can play with it.

Tracking issue: https://github.com/rust-lang/rust/issues/148905
2025-11-14 13:14:08 +11:00
Stuart Cook e32379b445 Rollup merge of #148902 - folkertdev:detect-s390x-target-feature, r=tgross35
add missing s390x target feature to std detect test

Fix an oversight from https://github.com/rust-lang/rust/pull/145656, where the `is_s390x_feature_detected!` macro and some target features were stabilized, but other target features remain unstable under a new target feature name.

I tested this locally using a `stage1` build on the test file with the `s390x-unknown-linux-gnu` target.

cc ```@uweigand```
r? ```@Amanieu``` (or whoever really)
2025-11-14 13:14:07 +11:00
Stuart Cook ad91711d79 Rollup merge of #148867 - edwloef:refactor-box-take, r=joboet
Refactor `Box::take`

as per https://github.com/rust-lang/rust/pull/147227#discussion_r2395521349
2025-11-14 13:14:02 +11:00
Stuart Cook 9ff7390470 Rollup merge of #148850 - joshtriplett:read-array, r=joboet
Implement `Read::read_array`

Tracking issue: https://github.com/rust-lang/rust/issues/148848
2025-11-14 13:14:02 +11:00
Stuart Cook 7481e91e65 Rollup merge of #148826 - btj:cstr-docs, r=joboet
CStr docs: Fix CStr vs &CStr confusion

The CStr documentation used to say things about CStr that are only true for &CStr.

Also, it's the bytes that are being borrowed, not the reference. One could say that it's the reference that is doing the borrowing, rather than being borrowed.
2025-11-14 13:14:01 +11:00
msmoiz e628b059bb update language from "no lines" to "empty iterator" 2025-11-13 16:44:07 -08:00
Folkert de Vries ac3faf0cae fix incorrect import on aarch64-unknown-openbsd 2025-11-13 18:31:14 +01:00
msmoiz 4996edc53d add note to lines docs about empty str behavior 2025-11-13 08:36:22 -08:00