Rollup of 12 pull requests#158864
Conversation
Comments and doc links across std, core, and a process test referenced the older issue 7 (2018 edition) of the POSIX spec, with one link still on issue 6. Point them all at the current issue 8 (2024 edition, IEEE Std 1003.1-2024) under onlinepubs/9799919799, and normalize the `9799919799.2024edition` URL variant to the canonical path. Links that carry a section anchor were verified against the 2024 edition, since section numbering shifts between editions: - Pathname Resolution moved from 4.13 (tag_04_13) to 4.16 (tag_04_16) - Field Splitting moved from tag_18_06_05 to tag_19_06_05 - LC_CTYPE (tag_07_03_01) was unchanged CI's linkchecker only validates intra-doc links, not external URLs, so each page and anchor was checked by hand.
With comparing `sub_unification_table_root_var` you can have an arbitraty long chain of subtyping relatinships, i.e. a <: b :> c <: d :> e ..., where all a/b/c/d/e/... get the same sub root var. So it's not necessarily true that there exists a type that is directly sub/super of the types compared via `sub_unification_table_root_var`.
As per rust-lang#155114 (comment), this `From` impl no longer guarantees panicking for exhausted iterators. Instead, it only guarantees that the conversion will either panic or produce an empty range. This is done so that we can optimize the implementation of `legacy::RangeInclusive` in a way such that we cannot check if it has been exhausted in a generic context without a `Step` and/or `PartialOrd` bound.
… fails to satisfy an `impl Trait` bound
the old solver doesn't register `TypeOutlives` and `RegionOutlives` goals if `ignoring_regions` is set. The new solver always registers these requirements, so we instead ignore errors caused by these constraints.
Co-Authored-By: Clar Fon <15850505+clarfonthey@users.noreply.github.com>
Used to work around `Cursor` not being a fundamental type when implementing `Write` for `Cursor<Vec<u8>>` and other `alloc` types once `Cursor` and `Write` are both located in `core`.
* add regression test for deprecated note on inlined reexport chain * resolve deprecated-note links from the owning reexport * add a comment to regression test
…h726 enable eager `param_env` norm in new solver https://rust-lang.zulipchat.com/#narrow/channel/364551-t-types.2Ftrait-system-refactor/topic/goodbye.20proper.20param_env.20normalization/near/594260464 Slightly unfortunate that this is what we ended up with. but for now, this fixes issues and landing the new solver with this is certainly not worse than keeping the old impl. This PR only eagerly normalizes, it does not *yet* treat aliases in `param_env` candidates as rigid, which is the worse part of this change. fixes rust-lang/trait-system-refactor-initiative#265 fixes rust-lang#136661 r? @BoxyUwU
…_cursor, r=clarfonthey Add `std::io::cursor::WriteThroughCursor` ACP: rust-lang/libs-team#755 Tracking issue: rust-lang#154046 Split From: rust-lang#156527 ## Description Used to work around `Cursor` not being a fundamental type when implementing `Write` for `Cursor<Vec<u8>>` and other `alloc` types once `Cursor` and `Write` are both located in `core`. Please refer to rust-lang#156527 for further context. --- ## Notes * No AI tooling of any kind was used during the creation of this PR. * Please see rust-lang#154046 (comment) for a review order and broader context for this PR.
…fonthey Move `std::io::Seek` to `core::io` ACP: rust-lang/libs-team#755 Tracking issue: rust-lang#154046 Split From: rust-lang#156527 Blocked On: rust-lang#158539 ## Description Moves `std::io::Seek` and `SeekFrom` to `core::io`. This is a pretty simple migration, but it is blocked by rust-lang#158539. --- ## Notes * No AI tooling of any kind was used during the creation of this PR. * Please see rust-lang#154046 (comment) for a review order and broader context for this PR.
consider subtyping when checking if an infer var is sized That is, when checking if an inference variable (say `?0`) is sized, with this PR, we now check for obligations like `?1: Sized`, where `?0` and `?1` are transitively related via subtyping (previously we were checking for `?0 = ?1`). This is sound because subtyping cannot change sized-ness. This fixes the 4-th point/issue from rust-lang#155924. Specifically, it makes this code compile: ```rust fn blah(e: !) { let source = Box::new(e); let _: Box<dyn Send> = source; } ``` This also fixes `tests/ui/impl-trait/unsized_coercion.rs` on new solver, see rust-lang#157820 (comment). r? types
…on, r=Darksonn Update POSIX edition links Comments that reference https://pubs.opengroup.org point to issue 7 (the 2018 edition of IEEE Std 1003.1-2017), with one link still on the older issue 6. The latest issue is 8 (the 2024 edition, IEEE Std 1003.1-2024). From https://www.opengroup.org/austin/papers/posix_faq.html: > Q3. What is the latest version of POSIX.1? > > The 1003.1-2024 standard was published in June 2024. The standard is > formally known as: IEEE Std 1003.1-2024 The Open Group Technical > Standard Base Specifications, Issue 8 Issue 8 lives at https://pubs.opengroup.org/onlinepubs/9799919799/. This PR points all older-edition links to issue 8. Most links are a straight edition bump, but links with a section anchor needed their anchor rechecked, because section numbering shifts between editions. Verified against the 2024 edition: - Pathname Resolution moved from 4.13 (`tag_04_13`) to 4.16 (`tag_04_16`) - Field Splitting moved from `tag_18_06_05` to `tag_19_06_05` - LC_CTYPE (`tag_07_03_01`) was unchanged The Miri changes (`src/tools/miri/`) are kept in a separate commit since that's a synced subtree. I'm happy to move them to a `rust-lang/miri` PR if preferred.
…yukang Fix typo for link on nto-qnx.md Just a quick fix for a typo in nto-qnx.md that stopped the link from working.
Better error message when bare type in impl parameter list Fixes rust-lang#147889 Marking this PR ready for feedback on this problem. The approach I'm trying is to create a snapshot parser and attempt to re-parse the input in another way. If it succeeds, we successfully predicted the user's intention and emit the related help message. If it fails, we cancel the errors produced during the attempt and report the original error. The problem is that parse functions may internally recover from parse failures and emit errors directly, which means we can't cancel them later. I saw that we have a `recovery` field to control the recovery mechanism, but it seems there are (maybe) a lot of places in the parser that don't check the recovery field before doing their recovery logic. Should we always use `look_ahead` instead of using a snapshot parser and calling another parse function?
…estion-cast-never-type, r=davidtwco Emit a suggestion to cast the never type into a concrete type when it fails to satisfy an `impl Trait` bound Fixes rust-lang#157923
Expose debug scope of statement and terminator in rustc_public Currently, `scope` is exposed for variables, but it is a meaningless number since the boundary of each scope is not available. This PR changes `span` fields of statement and terminator to `source_info` which includes scope as well. Disclaimer: Written by LLM
…avidtwco rustc_target: Add ARMv8-M related target features This adds the following unstable target features to `feature(arm_target_feature)` (tracking issue: rust-lang#150246): - `acquire-release`: Armv8 atomic instructions - `v6m`: Armv6-M instructions (implies `v6`) - `v8m`: Armv8-M baseline instructions (implies `v6m`) - `v8m.main`: Armv8-M mainline instructions (implies `v7`) - `v8.1m.main`: Armv8.1-M mainline instructions (implies `v8m.main`) - `mve`: M-Profile Vector Extension (Helium) for integer ops (implies `v8.1m.main`, `dsp`, and `fpregs`) - `mve.fp`: MVE for integer & float ops (implies `mve`) The target feature names match with [definitions in LLVM](https://github.com/llvm/llvm-project/blob/llvmorg-22.1.8/llvm/lib/Target/ARM/ARMFeatures.td#L597-L741). The dependencies should also match those in LLVM, unless there is no corresponding feature in Rust. This also adds `mve` to vector ABI check and resolve this comment. https://github.com/rust-lang/rust/blob/973ad0d0ab149bde2e96422833c1265c7a5be217/compiler/rustc_target/src/target_features.rs#L1076-L1078 One of the motivations for adding this: In LLVM, the `v8` target feature is not enabled for ARMv8-M targets, and `v8m`/`v8m.main` is enabled instead, so currently there is no way to detect ARMv8-M from target features. ```console $ rustc +nightly --print cfg --target thumbv8m.main-none-eabihf | grep target_feature target_feature="fpregs" target_feature="mclass" target_feature="thumb-mode" target_feature="thumb2" target_feature="v5te" target_feature="v6" target_feature="v6k" target_feature="v6t2" target_feature="v7" ``` r? @davidtwco cc @jonathanpallant @rustbot label +O-arm +A-target-feature
…=JohnTitor Weaken guarantee for `From<legacy::RangeInclusive> for RangeInclusive` As per rust-lang#155114 (comment), this `From` impl no longer guarantees panicking for exhausted iterators. Instead, it only guarantees that the conversion will either panic or produce an empty range. This is done so that we can optimize the implementation of `legacy::RangeInclusive` in a way such that we cannot check if it has been exhausted in a generic context without a `Step` and/or `PartialOrd` bound. If this PR and/or rust-lang#155114 merges after the 1.98.0 beta branch promotion from the main branch, then this will need a beta backport, since this PR changes the stable guarantee previously made in rust-lang#155421. This PR conflicts with and/or blocks rust-lang#155114.
This comment has been minimized.
This comment has been minimized.
Rollup of 12 pull requests try-job: dist-various-1 try-job: test-various try-job: x86_64-gnu-aux try-job: x86_64-gnu-llvm-21-3 try-job: x86_64-msvc-1 try-job: aarch64-apple try-job: x86_64-mingw-1 try-job: i686-msvc-2
This comment has been minimized.
This comment has been minimized.
|
The job Click to see the possible cause of the failure (guessed by this bot) |
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing 3c00c96 (parent) -> 36714a9 (this PR) Test differencesShow 232 test diffsStage 1
Stage 2
Additionally, 198 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 36714a9983d6ba11203d8bb87a1b372247fbcf06 --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
📌 Perf builds for each rolled up PR:
previous master: 3c00c96d3a In the case of a perf regression, run the following command for each PR you suspect might be the cause: |
Successful merges:
param_envnorm in new solver #156976 (enable eagerparam_envnorm in new solver)std::io::cursor::WriteThroughCursor#158537 (Addstd::io::cursor::WriteThroughCursor)std::io::Seektocore::io#158540 (Movestd::io::Seektocore::io)impl Traitbound #157966 (Emit a suggestion to cast the never type into a concrete type when it fails to satisfy animpl Traitbound)From<legacy::RangeInclusive> for RangeInclusive#158770 (Weaken guarantee forFrom<legacy::RangeInclusive> for RangeInclusive)r? @ghost
Create a similar rollup