about summary refs log tree commit diff
path: root/library
AgeCommit message (Collapse)AuthorLines
2025-06-08Rollup merge of #142162 - RalfJung:unsafe-pinned-get, ↵Jubilee-17/+16
r=workingjubilee,traviscross UnsafePinned: update get() docs and signature to allow shared mutation Follow-up to https://github.com/rust-lang/rust/pull/140638, making `get` consistent with the fact that there's an `UnsafeCell` inside this type now by returning `*mut T` instead of `*const T`. Cc ``@rust-lang/libs-api`` Tracking issue: https://github.com/rust-lang/rust/issues/125735
2025-06-08Rollup merge of #142053 - heiher:loong32-none, r=wesleywiserJubilee-6/+17
Add new Tier-3 targets: `loongarch32-unknown-none*` MCP: https://github.com/rust-lang/compiler-team/issues/865 NOTE: LoongArch32 ELF object support is available starting with object v0.37.0.
2025-06-08Remove rustc's notion of "preferred" alignment AKA `__alignof`Jubilee Young-9/+0
In PR 90877 T-lang decided not to remove `intrinsics::pref_align_of`. However, the intrinsic and its supporting code 1. is a nightly feature, so can be removed at compiler/libs discretion 2. requires considerable effort in the compiler to support, as it necessarily complicates every single site reasoning about alignment 3. has been justified based on relevance to codegen, but it is only a requirement for C++ (not C, not Rust) stack frame layout for AIX, in ways Rust would not consider even with increased C++ interop 4. is only used by rustc to overalign some globals, not correctness 5. can be adequately replaced by other rules for globals, as it mostly affects alignments for a few types under 16 bytes of alignment 6. has only one clear benefactor: automating C -> Rust translation for GNU extensions like `__alignof` 7. such code was likely intended to be `alignof` or `_Alignof`, because the GNU extension is a "false friend" of the C keyword, which makes the choice to support such a mapping very questionable 8. makes it easy to do incorrect codegen in the compiler by its mere presence as usual Rust rules of alignment (e.g. `size == align * N`) do not hold with preferred alignment The implementation is clearly damaging the code quality of the compiler. Thus it is within the compiler team's purview to simply rip it out. If T-lang wishes to have this intrinsic restored for c2rust's benefit, it would have to use a radically different implementation that somehow does not cause internal incorrectness. Until then, remove the intrinsic and its supporting code, as one tool and an ill-considered GCC extension cannot justify risking correctness. Because we touch a fair amount of the compiler to change this at all, and unfortunately the duplication of AbiAndPrefAlign is deep-rooted, we keep an "AbiAlign" type which we can wean code off later.
2025-06-08Auto merge of #141700 - RalfJung:atomic-intrinsics-part2, r=bjorn3bors-991/+217
Atomic intrinsics : use const generic ordering, part 2 This completes what got started in https://github.com/rust-lang/rust/pull/141507 by using a const generic for the ordering for all intrinsics. It is based on that PR; only the last commit is new. Blocked on: - https://github.com/rust-lang/rust/pull/141507 - https://github.com/rust-lang/rust/pull/141687 - https://github.com/rust-lang/stdarch/pull/1811 - https://github.com/rust-lang/rust/pull/141964 r? `@bjorn3`
2025-06-08Mark `slice::swap_with_slice` unstably constPaolo Barbolini-1/+2
2025-06-08De-duplicate f16 & f128 doctest attributesUrgau-180/+4
2025-06-08compiler-builtins: Fix a `rustdoc::bare-urls` errorTrevor Gross-1/+1
2025-06-08Use the in-tree `compiler-builtins`Trevor Gross-11/+14
Many of `std`'s dependency have a dependency on the crates.io `compiler-builtins` when used with the feature `rustc-std-workspace-core`. Use a Cargo patch to select the in-tree version instead. `compiler-builtins` is also added as a dependency of `rustc-std-workspace-core` so these crates can remove their crates.io dependency in the future.
2025-06-07Rollup merge of #142154 - RalfJung:no-more-cfg-bootstrap, r=oli-obkGuillaume Gomez-3/+0
get rid of spurious cfg(bootstrap) r? ```@oli-obk```
2025-06-07Rollup merge of #142065 - ↵Guillaume Gomez-2/+2
paolobarbolini:stabilize-const_eq_ignore_ascii_case, r=Mark-Simulacrum Stabilize `const_eq_ignore_ascii_case` Tracking issue: rust-lang/rust#131719 Closes rust-lang/rust#131719 FCP Completed: https://github.com/rust-lang/rust/issues/131719#issuecomment-2941829167
2025-06-07Rollup merge of #141447 - y86-dev:option-layout-docs, r=RalfJungGuillaume Gomez-1/+1
Document representation of `Option<unsafe fn()>` https://rust-lang.zulipchat.com/#narrow/channel/136281-t-opsem/topic/Option.20Layout.20with.20.60fn.60.20pointers/with/520055652
2025-06-07centralize aliasing rules discussion in UnsafeCell docsRalf Jung-15/+11
2025-06-07intrinsics: use const generic to set atomic orderingRalf Jung-991/+217
2025-06-07Address documentation issues identified with FutureDiggory Blake-7/+16
2025-06-07Stabilize `sha512_sm_x86`, and the `sha512`, `sm3` and `sm4` target featuressayantn-1/+0
2025-06-07Stabilize the `keylocker_x86` flag, and the `kl` and `widekl` target featuressayantn-1/+0
2025-06-07Fix usage of `bootstrap` in coreUrgau-4/+1
2025-06-07UnsafePinned: update get() docs and signature to allow shared mutationRalf Jung-9/+12
2025-06-07fix wording in assertAmogh Shivaram-1/+1
2025-06-07Auto merge of #141964 - sayantn:update-stdarch, r=Amanieubors-0/+0
Update stdarch submodule Updates the stdarch submodule. ## Merged PRs - rust-lang/stdarch#1797 - rust-lang/stdarch#1758 - rust-lang/stdarch#1798 - rust-lang/stdarch#1811 - rust-lang/stdarch#1810 - rust-lang/stdarch#1807 - rust-lang/stdarch#1806 - rust-lang/stdarch#1812 - rust-lang/stdarch#1795 - rust-lang/stdarch#1796 - rust-lang/stdarch#1813 - rust-lang/stdarch#1816 - rust-lang/stdarch#1818 - rust-lang/stdarch#1820 - rust-lang/stdarch#1819 r? `@Amanieu` `@rustbot` label T-libs-api Closes rust-lang/rust#111137
2025-06-07Make NonZero<char> possibleMarijn Schouten-5/+19
2025-06-07get rid of spurious cfg(bootstrap)Ralf Jung-3/+0
2025-06-07cfg for no no_global_oom_handlingAmogh Shivaram-0/+1
2025-06-07Rollup merge of #141857 - RalfJung:coretests-floats, r=tgross35Jacob Pratt-353/+548
coretests: move float tests from num to floats module and use a more flexible macro to generate them This makes some progress on https://github.com/rust-lang/rust/issues/141726 by moving the float tests in `num` to `floats` and using a newer, more flexible macro to generate them. We also newly run these tests on f16 and f128 in const, and at runtime in Miri and for hosts where that works well enough. I didn't yet deduplicate any tests or port the existing `floats::f*` tests to the macro, that can happen in a future PR. try-job: x86_64-gnu-aux
2025-06-07Rollup merge of #137992 - its-the-shrimp:stabilise_os_string_pathbuf_leak, ↵Jacob Pratt-3/+2
r=dtolnay Stabilise `os_string_pathbuf_leak` This PR stabilises `#[feature(os_string_pathbuf_leak)]`, which defines 2 new methods in the std: ```rs impl OsString { pub fn leak<'a>(self) -> &'a mut OsStr; } impl PathBuf { pub fn leak<'a>(self) -> &'a mut Path; } ``` ACP: https://github.com/rust-lang/libs-team/issues/389 Tracking issue: https://github.com/rust-lang/rust/issues/125965 Implementation: https://github.com/rust-lang/rust/pull/125966
2025-06-06put feature attribute in exampleAmogh Shivaram-0/+2
2025-06-06Add `into_chunks`Amogh Shivaram-0/+52
2025-06-06fix testsJeremy Smart-4/+9
2025-06-06Rollup merge of #142114 - GuillaumeGomez:u128-const, r=UrgauGuillaume Gomez-2/+2
Compute number of digits instead of relying on constant value for u128 display code As discussed in https://github.com/rust-lang/rust/pull/142098/files#r2132084991, the code should reuse the same logic as the rest of file instead of using a constant value. r? `@tamird`
2025-06-06Rollup merge of #142105 - tshepang:basic-usage, r=workingjubileeGuillaume Gomez-39/+0
remove extraneous text
2025-06-06Rollup merge of #141471 - RalfJung:unsafe-fn-in-trait, r=traviscrossGuillaume Gomez-16/+11
unsafe keyword docs: emphasize that an unsafe fn in a trait does not get to choose its safety contract Inspired by discussion in https://github.com/rust-lang/rust/issues/139368. Cc `@hanna-kruppe`
2025-06-06Rollup merge of #140418 - tgross35:std-c-size_t, r=workingjubileeGuillaume Gomez-0/+2
Reexport types from `c_size_t` in `std` These are unstably available in `core` and should be in `std` too, but are not currently reexported. Resolve this here. Tracking issue: https://github.com/rust-lang/rust/issues/88345
2025-06-06unsafe keyword docs: emphasize that an unsafe fn in a trait does not get to ↵Ralf Jung-16/+11
choose its safety contract
2025-06-06Stabilised `os_string_pathbuf_leak`schvv31n-3/+2
2025-06-06Compute number of digits instead of relying on constant value for u128 ↵Guillaume Gomez-2/+2
display code
2025-06-06std: sys: random: uefi: Provide rdrand based fallbackAyush Singh-19/+150
Some UEFI systems based on American Megatrends Inc. v3.3 do not provide RNG support [1]. So fallback to rdrand in such cases. [1]: https://github.com/rust-lang/rust/issues/138252#issuecomment-2891270323 Signed-off-by: Ayush Singh <ayush@beagleboard.org>
2025-06-06remove extraneous textTshepang Mbambo-39/+0
"Basic usage" implies there is an example that shows advanced usage
2025-06-06Add new Tier-3 targets: `loongarch32-unknown-none*`WANG Rui-6/+17
MCP: https://github.com/rust-lang/compiler-team/issues/865
2025-06-06Rollup merge of #142091 - thaliaarchi:aix-getenv, r=workingjubileeMatthias Krüger-1/+1
Fix AIX build Fix rust-lang/rust#141543. `getenv` was moved out of this file to `sys::env::getenv` in rust-lang/rust#140143. Replace its usage with `std::env::var_os`, the publicly exposed version. This matches the other usages of the same function in this file.
2025-06-06Rollup merge of #125087 - tbu-:pr_file_stream_len, r=ChrisDentonMatthias Krüger-11/+90
Optimize `Seek::stream_len` impl for `File` It uses the file metadata on Unix with a fallback for files incorrectly reported as zero-sized. It uses `GetFileSizeEx` on Windows. This reduces the number of syscalls needed for determining the file size of an open file from 3 to 1.
2025-06-05Fix AIX buildThalia Archibald-1/+1
2025-06-05Auto merge of #142081 - matthiaskrgr:rollup-secpezz, r=matthiaskrgrbors-1177/+1414
Rollup of 7 pull requests Successful merges: - rust-lang/rust#141709 (jsondocck: Refactor directive handling) - rust-lang/rust#141974 (`tests/ui`: A New Order [4/N]) - rust-lang/rust#141989 (rustdoc-json-type: Depend on `serde` and `serde_derive` seperately) - rust-lang/rust#142015 (Report the actual item that evaluation failed for) - rust-lang/rust#142026 (bootstrap: Fix file permissions when dereferencing symlinks) - rust-lang/rust#142032 (Fix parsing of frontmatters with inner hyphens) - rust-lang/rust#142036 (Update the `compiler-builtins` subtree) r? `@ghost` `@rustbot` modify labels: rollup
2025-06-05Clarify description of `Seek::stream_len`Tobias Bucher-1/+1
It can only describe the inner workings of the default implementation, other implementations might not be implemented using seeks at all.
2025-06-05Optimize `Seek::stream_len` impl for `File`Tobias Bucher-10/+89
It uses the file metadata on Unix with a fallback for files incorrectly reported as zero-sized. It uses `GetFileSizeEx` on Windows. This reduces the number of syscalls needed for determining the file size of an open file from 3 to 1.
2025-06-05change tests to use fixed constants to let them pass with miriLorrensP-2158466-76/+41
2025-06-05Rollup merge of #142036 - tgross35:update-builtins, r=tgross35Matthias Krüger-1177/+1414
Update the `compiler-builtins` subtree Update the Josh subtree to https://github.com/rust-lang/compiler-builtins/commit/5c3d8f2753b8. r? ``@ghost``
2025-06-05Auto merge of #142070 - matthiaskrgr:rollup-e7lxtuo, r=matthiaskrgrbors-22/+11
Rollup of 6 pull requests Successful merges: - rust-lang/rust#140638 (UnsafePinned: also include the effects of UnsafeCell) - rust-lang/rust#141777 (Do not run PGO/BOLT in x64 Linux alt builds) - rust-lang/rust#141938 (update rust offload bootstrap) - rust-lang/rust#141962 (rustc-dev-guide subtree update) - rust-lang/rust#141965 (`tests/ui`: A New Order [3/N]) - rust-lang/rust#141970 (implement new `x` flag: `--skip-std-check-if-no-download-rustc`) r? `@ghost` `@rustbot` modify labels: rollup
2025-06-05Rollup merge of #140638 - RalfJung:unsafe-pinned-shared-aliased, ↵Matthias Krüger-22/+11
r=workingjubilee UnsafePinned: also include the effects of UnsafeCell This tackles https://github.com/rust-lang/rust/issues/137750 by including an `UnsafeCell` in `UnsafePinned`, thus imbuing it with all the usual properties of interior mutability (no `noalias` nor `dereferenceable` on shared refs, special treatment by Miri's aliasing model). The soundness issue is not fixed yet because coroutine lowering does not use `UnsafePinned`. The RFC said that `UnsafePinned` would not permit mutability on shared references, but since then, https://github.com/rust-lang/rust/issues/137750 has demonstrated that this is not tenable. In the face of those examples, I propose that we do the "obvious" thing and permit shared mutable state inside `UnsafePinned`. This seems loosely consistent with the fact that we allow going from `Pin<&mut T>` to `&T` (where the former can be aliased with other pointers that perform mutation, and hence the same goes for the latter) -- but the `as_ref` example shows that we in fact would need to add this `UnsafeCell` even if we didn't have a safe conversion to `&T`, since for the compiler and Miri, `&T` and `Pin<&T>` are basically the same type. To make this possible, I had to remove the `Copy` and `Clone` impls for `UnsafePinned`. Tracking issue: https://github.com/rust-lang/rust/issues/125735 Cc ``@rust-lang/lang`` ``@rust-lang/opsem`` ``@Sky9x`` I don't think this needs FCP since the type is still unstable -- we'll finally decide whether we like this approach when `UnsafePinned` is moved towards stabilization (IOW, this PR is reversible). However, I'd still like to make sure that the lang team is okay with the direction I am proposing here.
2025-06-05Auto merge of #135054 - cramertj:file-cstr, r=m-ou-sebors-16/+25
Add Location::file_with_nul This is useful for C/C++ APIs which expect the const char* returned from __FILE__ or std::source_location::file_name. ACP: https://github.com/rust-lang/libs-team/issues/466 Tracking issue: https://github.com/rust-lang/rust/issues/141727
2025-06-05Stabilize `const_eq_ignore_ascii_case`Paolo Barbolini-2/+2