-
Notifications
You must be signed in to change notification settings - Fork 119
Rustc pull update #1614
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
Kobzol
wants to merge
9,548
commits into
rust-lang:main
Choose a base branch
from
Kobzol:josh
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Rustc pull update #1614
+26
−4
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Previously it was rather inconsistent which crates got the rust logo and which didn't and setting html_root_url was forgotten in many cases.
…=WaffleLapkin Move warning reporting from flag_to_backend_features to cfg_target_feature This way warnings are emitted even in a check build.
…trochenkov Deduplicate deprecation warning when using unit or tuple structs First commit adds a test that's broken currently, 2nd commit fixes it. Created with `@WaffleLapkin`
triagebot: Create Zulip topics for libs backports Take the configuration used by other teams to create Zulip topics for T-libs backports.
Remove no longer necessary lint allow
…meGomez Unify the configuration of the compiler docs Previously it was rather inconsistent which crates got the rust logo and which didn't and setting html_root_url was forgotten in many cases.
miri subtree update x86/rounding-error is causing spurious test failures. This sync fixes that. --- Subtree update of `miri` to rust-lang/miri@de2a63b. Created using https://github.com/rust-lang/josh-sync. r? ``@ghost``
Fix ICE from lit_to_mir_constant caused by type error Fixes rust-lang/rust#148515 we still need to mark that there were errors to prevent later phases (like MIR building) from proceeding.
…50_percent_more_mut, r=Amanieu
Merge `Vec::push{,_mut}_within_capacity`
Implements rust-lang/libs-team#689.
cc rust-lang/rust#135974, rust-lang/rust#100486
r? libs-api
Rollup of 8 pull requests Successful merges: - rust-lang/rust#147994 (Deduplicate deprecation warning when using unit or tuple structs) - rust-lang/rust#148440 ([rustdoc search] Simplify itemTypes and filter "dependencies") - rust-lang/rust#148501 (triagebot: Create Zulip topics for libs backports) - rust-lang/rust#148517 (Remove no longer necessary lint allow) - rust-lang/rust#148518 (Unify the configuration of the compiler docs) - rust-lang/rust#148523 (miri subtree update) - rust-lang/rust#148525 (Fix ICE from lit_to_mir_constant caused by type error) - rust-lang/rust#148534 (Merge `Vec::push{,_mut}_within_capacity`) r? `@ghost` `@rustbot` modify labels: rollup
Pull recent changes from https://github.com/rust-lang/rust via Josh. Upstream ref: 401ae55427522984e4a89c37cff6562a4ddcf6b7 Filtered ref: 1bd47ec470de5c7eab11a24bfee0e7f663cd56a2 Upstream diff: rust-lang/rust@5f9dd05...401ae55 This merge was created using https://github.com/rust-lang/josh-sync.
Automatic Rustup
slightly extend triagebot PR creation message
…, r=estebank feat: Use annotate-snippets by default on nightly This PR switches the default renderer to use `annotate-snippets` on nightly, but does not affect stable. This is part of the ongoing effort to use `annotate-snippets` to render all diagnostics. [MCP](rust-lang/compiler-team#937) Note: This contains the test change from rust-lang/rust#148004, without the change to the default emitter. rust-lang/rust#59346 rust-lang/rust-project-goals#123 r? `@davidtwco`
Use the dummy codegen backend
Liveness: Cache the set of string constants for suggestions. Even on a slow diagnostic path, listing all the constants in MIR can be expensive, so cache it.
ci: Switch back to default coreutils (uutils) after libffi-sys bump Now that Miri has updated to the latest `libffi-sys`, we should be able to remove the GNU coreutils workaround, and switch back to the default coreutils (uutils) in the runners using Ubuntu 25.10 images. If we encounter any other uutils compatibility problems in the future, they should hopefully be easier to trace back to specific changes. - rust-lang/rust#147581 - rust-lang/miri#4634 - rust-lang/rust#147744 Closes rust-lang/rust#147556.
Update memchr to 2.7.6 memchr 2.7.6 contains a bugfix for aarch64_be. Note: I'm not sure about how dependency updates are managed in rust.git. If something should go through another branch or will happen automatically, please let me know.
…rk-Simulacrum std_detect: Support run-time detection on OpenBSD using elf_aux_info
Implement SIMD funnel shifts in const-eval/Miri Split off from rust-lang/rust#147520 with just this change for easier review r? ```@RalfJung```
update isolate_highest_one for NonZero<T> ## Rationale Let `x = self` and `m = (((1 as $Int) << (<$Int>::BITS - 1)).wrapping_shr(self.leading_zeros()))` Then the previous code computed `NonZero::new_unchecked(x & m)`. Since `m` has exactly one bit set (the most significant 1-bit of `x`), `(x & m) == m`. Therefore, the masking step was redundant. The shift is safe and does not need wrapping because: * `self.leading_zeros() < $Int::BITS` because `self` is non-zero. * The result of `unchecked_shr` is non-zero, satisfying the `NonZero` invariant. if wrapping happens we would be violating `NonZero` invariants. why this micro optimization? the old code was suboptimal it duplicated `$Int`’s isolate_highest_one logic instead of delegating to it. Since the type already wraps `$Int`, either delegation should be used for clarity or, if keeping a custom implementation, it should be optimized as above.
…eGomez rustdoc: Properly highlight shebang, frontmatter & weak keywords in source code pages and code blocks Before | After ---|--- <img width="517" height="532" alt="Screenshot 2025-10-28 at 23-21-02 pre rs - source" src="https://github.com/user-attachments/assets/5026761f-c604-4bcc-a699-9e75eb73dff6" /> | <img width="499" height="531" alt="Screenshot 2025-10-28 at 23-21-51 pre rs - source" src="https://github.com/user-attachments/assets/cc8c65e7-e3ad-4e20-a2c3-2623cf799093" />
Fix rust-by-example spanish translation A spanish translation was added in rust-lang/rust-by-example#1910, but the upstream integration was never added. ```@marioidival,``` I assume you intended for this to go live?
Subtree sync for rustc_codegen_cranelift The highlights this time are 4 Cranelift updates, some refactorings and a couple of bugfixes.
mgca: Add ConstArg representation for const items tracking issue: rust-lang/rust#132980 fixes rust-lang/rust#131046 fixes rust-lang/rust#134641 As part of implementing `min_generic_const_args`, we need to distinguish const items that can be used in the type system, such as in associated const equality projections, from const items containing arbitrary const code, which must be kept out of the type system. Specifically, all "type consts" must be either concrete (no generics) or generic with a trivial expression like `N` or a path to another type const item. To syntactically distinguish these cases, we require, for now at least, that users annotate all type consts with the `#[type_const]` attribute. Then, we validate that the const's right-hand side is indeed eligible to be a type const and represent it differently in the HIR. We accomplish this representation using a new `ConstItemRhs` enum in the HIR, and a similar but simpler enum in the AST. When `#[type_const]` is **not** applied to a const (e.g. on stable), we represent const item right-hand sides (rhs's) as HIR bodies, like before. However, when the attribute is applied, we instead lower to a `hir::ConstArg`. This syntactically distinguishes between trivial const args (paths) and arbitrary expressions, which are represented using `AnonConst`s. Then in `generics_of`, we can take advantage of the existing machinery to bar the `AnonConst` rhs's from using parent generics.
Rollup of 10 pull requests Successful merges: - rust-lang/rust#145656 (Stabilize s390x `vector` target feature and `is_s390x_feature_detected!` macro) - rust-lang/rust#147024 (std_detect: Support run-time detection on OpenBSD using elf_aux_info) - rust-lang/rust#147534 (Implement SIMD funnel shifts in const-eval/Miri) - rust-lang/rust#147540 (Stabilise `as_array` in `[_]` and `*const [_]`; stabilise `as_mut_array` in `[_]` and `*mut [_]`.) - rust-lang/rust#147686 (update isolate_highest_one for NonZero<T>) - rust-lang/rust#148230 (rustdoc: Properly highlight shebang, frontmatter & weak keywords in source code pages and code blocks) - rust-lang/rust#148555 (Fix rust-by-example spanish translation) - rust-lang/rust#148556 (Fix suggestion for returning async closures) - rust-lang/rust#148585 ([rustdoc] Replace `print` methods with functions to improve code readability) - rust-lang/rust#148600 (re-use `self.get_all_attrs` result for pass indirectly attribute) r? `@ghost` `@rustbot` modify labels: rollup
Add `overflow_checks` intrinsic This adds an intrinsic which allows code in a pre-built library to inherit the overflow checks option from a crate depending on it. This enables code in the standard library to explicitly change behavior based on whether `overflow_checks` are enabled, regardless of the setting used when standard library was compiled. This is very similar to the `ub_checks` intrinsic, and refactors the two to use a common mechanism. The primary use case for this is to allow the new `RangeFrom` iterator to yield the maximum element before overflowing, as requested [here](rust-lang/rust#125687 (comment)). This PR includes a working `IterRangeFrom` implementation based on this new intrinsic that exhibits the desired behavior. [Prior discussion on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/219381-t-libs/topic/Ability.20to.20select.20code.20based.20on.20.60overflow_checks.60.3F)
…thanBrouwer
Add correct suggestion for multi-references for self type in method
Currently the suggestion for this code
```rust
fn main() {}
struct A {
field: i32,
}
impl A {
fn f(&&self) {}
}
```
looks like this, which is incorrect and missleading
```rust
Compiling playground v0.0.1 (/playground)
error: expected one of `!`, `(`, `...`, `..=`, `..`, `::`, `:`, `{`, or `|`, found `)`
--> src/main.rs:8:16
|
8 | fn f(&&self) {}
| ^ expected one of 9 possible tokens
|
= note: anonymous parameters are removed in the 2018 edition (see RFC 1685)
help: explicitly ignore the parameter name
|
8 | fn f(_: &&self) {}
| ++
```
So this fixes it and make more correct suggestions
```rust
error: expected one of `!`, `(`, `...`, `..=`, `..`, `::`, `:`, `{`, or `|`, found `)`
--> /home/gh-Kivooeo/test_/src/main.rs:8:16
|
8 | fn f(&&self) {}
| ^ expected one of 9 possible tokens
|
help: `self` should be `self`, `&self` or `&mut self`, please remove extra references
|
8 - fn f(&&self) {}
8 + fn f(&self) {}
```
Implementation is pretty self-documenting, but if you have suggestions on how to improve this (according to current test, which may be not fully covering all cases, this is works very well) or have some funny edge cases to show, I would appreciate it
r? compiler
Update books ## rust-lang/nomicon 1 commits in 9fe8fa599ad228dda74f240cc32b54bc5c1aa3e6..5b3a9d084cbc64e54da87e3eec7c7faae0e48ba9 2025-12-12 12:24:05 UTC to 2025-12-12 12:24:05 UTC - Update method lookup link in dot-operator.md (rust-lang/nomicon#513) ## rust-lang/reference 4 commits in 50c5de90487b68d429a30cc9466dc8f5b410128f..ec78de0ffe2f8344bd0e222b17ac7a7d32dc7a26 2025-12-15 16:17:43 UTC to 2025-12-15 16:15:06 UTC - tokens: clarify in escape tables that digits are hex (rust-lang/reference#2105) - tokens: remove misplaced ".token." within a word (rust-lang/reference#2106) - macros-by-example: add space in `macro.decl.repetition.fragment` example (rust-lang/reference#2107) - Fix restrictions of or-patterns (rust-lang/reference#2108)
…enkov assert impossible branch is impossible The second half of this boolean or expression should not be possible with the current visitation implementation. Reasoning: - Innermost res will always be the first candidate visited. - the first scopes visited are `derive_helper` candidates, followed by a single step at `derive_helper_compat`: https://github.com/rust-lang/rust/blob/ee447067/compiler/rustc_resolve/src/ident.rs#L180-L192 - if there are candidates for both kinds the derive_helper candidate will always be innermost - there can only be one derive_helper_compat candidate - The first branch handles cases where the first candidate is a `derive_helper_compat` - if the first candidate is not a `derive_helper_compat` (as enforced by the first branch) and it is not a `derive_helper` (as enforced by the end of the second boolean expression) then then the first candidate and all subsequent candidates must be from later scope types, res cannot possibly be a `derive_helper_compat` r? ``@petrochenkov``
do not add `I-prioritize` when `F-*` labels are present
Use the embeddable filename for coverage artifacts Like debuginfo, coverage artifacts should use the embeddable path (aka absolute path). Unfortunately due to `coverage-run` and `compiletest`, I'm unable to create a reproducer in our test-suite, but when manually invoking `rustc` with the reproducer (rust-lang/rust#150020 (comment)) I think the issue is fixed. Fixes rust-lang/rust#150020 r? Zalathar
Rollup of 13 pull requests Successful merges: - rust-lang/rust#148756 (Warn on codegen attributes on required trait methods) - rust-lang/rust#148790 (Add new Tier-3 target: riscv64im-unknown-none-elf) - rust-lang/rust#149271 (feat: dlopen Enzyme) - rust-lang/rust#149459 (std: sys: fs: uefi: Implement set_times and set_perm) - rust-lang/rust#149771 (bootstrap readme: make easy to read when editor wrapping is not enabled) - rust-lang/rust#149856 (Provide an extended framework for type visit, for use in rust-analyzer) - rust-lang/rust#149950 (Simplify how inline asm handles `MaybeUninit`) - rust-lang/rust#150014 (Metadata loader cleanups) - rust-lang/rust#150021 (document that mpmc channels deliver an item to (at most) one receiver) - rust-lang/rust#150029 (Update books) - rust-lang/rust#150031 (assert impossible branch is impossible) - rust-lang/rust#150034 (do not add `I-prioritize` when `F-*` labels are present) - rust-lang/rust#150036 (Use the embeddable filename for coverage artifacts) r? `@ghost` `@rustbot` modify labels: rollup
Stop applying `dereferenceable(n)` to return types It looks like the semantics of `dereferenceable(n)` on return types is "dereferenceable until the end of the program", which is not sound for how we were using it. See [dereferenceable on return type](https://rust-lang.zulipchat.com/#narrow/channel/136281-t-opsem/topic/LLVM.20dereferenceable.20on.20return.20type/with/563001493) zulip thread. cc `@rust-lang/opsem` `@nikic`
…r=estebank Fix span note for question mark expression Fixes rust-lang/rust#144304 Seems it's better to fix the note instead of modifying the span to cover the whole expression. r? `@estebank`
Expand `str_as_str` to more types Tracking issue: rust-lang/rust#130366 ACP: rust-lang/libs-team#643 This PR expands `str_from_str` feature and adds analogous methods to more types. Namely: - `&CStr` - `&[T]`, `&mut [T]` - `&OsStr` - `&Path` - `&ByteStr`, `&mut ByteStr` (tracking issue: rust-lang/rust#134915) (technically was not part of ACP)
…wiser Set -Cpanic=abort in windows-msvc stack protector tests I ran into a test failure with the 32-bit windows test on rust-lang/rust#117192, one of the tests has been incorrectly passing (until my change!) because it is picking up the stack protector from another function. I've tried to prevent that happening again by adding CHECK-DAGs for the start and end of each function. I've also done my best to correct the comments, some were based on the fact that we used to run these tests with unwinding panics, but LLVM doesn't add protectors to function with SEH funclets so it's must more straightforward for these tests to use `-Cpanic=abort`.
…enkov Support recursive delegation This PR adds support for recursive delegations and is a part of the delegation feature rust-lang/rust#118212. r? ``@petrochenkov``
std_detect: AArch64 Darwin: expose SME F16F16 and B16B16 features This synchronizes the list with the current state of `sysctl` on macOS “Tahoe” 26.2. r? ``@Amanieu``
Subtree sync for rustc_codegen_cranelift Nothing too exciting since the last sync. r? ``@ghost`` ``@rustbot`` label +A-codegen +A-cranelift +T-compiler
…uwer Rollup of 12 pull requests Successful merges: - rust-lang/rust#145933 (Expand `str_as_str` to more types) - rust-lang/rust#148849 (Set -Cpanic=abort in windows-msvc stack protector tests) - rust-lang/rust#149925 (`cfg_select!`: parse unused branches) - rust-lang/rust#149952 (Suggest struct pattern when destructuring Range with .. syntax) - rust-lang/rust#150022 (Generate macro expansion for rust compiler crates docs) - rust-lang/rust#150024 (Support recursive delegation) - rust-lang/rust#150048 (std_detect: AArch64 Darwin: expose SME F16F16 and B16B16 features) - rust-lang/rust#150083 (tests/run-make-cargo/same-crate-name-and-macro-name: New regression test) - rust-lang/rust#150102 (Fixed ICE for EII with multiple defaults due to duplicate definition in nameres) - rust-lang/rust#150124 (unstable.rs: fix typos in comments (implementatble -> implementable)) - rust-lang/rust#150125 (Port `#[rustc_lint_opt_deny_field_access]` to attribute parser) - rust-lang/rust#150126 (Subtree sync for rustc_codegen_cranelift) Failed merges: - rust-lang/rust#150127 (Port `#[rustc_lint_untracked_query_information]` and `#[rustc_lint_diagnostics]` to using attribute parsers) r? `@ghost` `@rustbot` modify labels: rollup
All usages of `memory_index` start by calling `invert_bijective_mapping`, so storing the inverted mapping directly saves some work and simplifies the code.
Remove Expressions (and just use a Vec) in coerce Let's see if this has much of a perf impact - would be nice to clean this up a bit r? ghost
Prefer remapping the relative `library/` and `compiler/` directories This is done to avoid leaking the relative paths to the standard library after the overall of filenames in rust-lang/rust#149709. Noted that the paths were already leaking before, but to a lesser extent since most (but not all) the paths embedded in the distributed `rlib` were absolute. In general Cargo compiles workspace members with relative paths, so it's better anyway to remap the relative path. In addition to our tests I have manually confirmed that it also works as expected for the printed diagnostics paths. cf. https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/remapping.20of.20the.20standard.20library/near/564093571
Perf regression fix The only thing changed from the previous PR is that I removed `output_is_inhabited` from hot path, and hide it behind condition, so now it will compute it less frequent follow up on rust-lang/rust#149664
Enable `outline-atomics` by default on AArch64 FreeBSD Many aarch64 targets without LSE in the baseline enable the `outline-atomics` feature, which uses runtime detection of LSE for its faster atomic ops. This provides nontrivial performance improvements on most hardware from the past decade, at a small cost to anything pre-LSE. This matches what Clang does [1]. Context: rust-lang/rust#144938 [1]: llvm/llvm-project@e24f901 try-job: dist-x86_64-freebsd
Move shared offload globals and define per-kernel globals once This PR moves the shared LLVM global variables logic out of the `offload` intrinsic codegen and generates kernel-specific variables only ont he first call of the intrinsic. r? `@ZuseZ4` tracking: - rust-lang/rust#131513
Improve filenames encoding and misc This PR is a follow-up to rust-lang/rust#149709, it aims at preventing a double encoding when there are no remapping, as well as making some small improvements to the code. Best reviewed commit by commit.
rustc_target: Add `efiapi` ABI support for LoongArch This commit adds basic `efiapi` ABI support for LoongArch by recognizing `extern "efiapi"` in the ABI map and inline asm clobber handling, and mapping it to the C calling convention. This change is intentionally submitted ahead of the full LoongArch UEFI target support. While UEFI binaries are ultimately produced as PE images, LoongArch UEFI applications can already be developed by building ELF objects, applying relocation fixups, and converting them to PE in a later step. For such workflows, having `efiapi` properly recognized by the compiler is a prerequisite, even without a dedicated UEFI target. Landing this ABI support early helps unblock LoongArch UEFI application and driver development, and allows the remaining UEFI-specific pieces to be introduced incrementally in follow-up patches. MCP: rust-lang/compiler-team#953
…ubilee layout: Store inverse memory index in `FieldsShape::Arbitrary` All usages of `memory_index` start by calling `invert_bijective_mapping`, so storing the inverted mapping directly saves some work and simplifies the code.
…uwer Split eii macro expansion code r? jonathanbrouwer (since you did the last one too, should be quite trivial) While investigating rust-lang/rust#149980 I decided this code deserved some splitting :)
Rollup of 6 pull requests Successful merges: - rust-lang/rust#149633 (Enable `outline-atomics` by default on AArch64 FreeBSD) - rust-lang/rust#149788 (Move shared offload globals and define per-kernel globals once) - rust-lang/rust#149989 (Improve filenames encoding and misc) - rust-lang/rust#150012 (rustc_target: Add `efiapi` ABI support for LoongArch) - rust-lang/rust#150116 (layout: Store inverse memory index in `FieldsShape::Arbitrary`) - rust-lang/rust#150159 (Split eii macro expansion code) r? `@ghost` `@rustbot` modify labels: rollup
Update cargo submodule 13 commits in e91b2baa632c0c7e84216c91ecfe107c37d887c1..3861f60f6b58f57524c0e7aab1f5c1ad83e35409 2025-12-13 16:29:21 +0000 to 2025-12-19 21:53:33 +0000 - fix(sbom): Don't set CARGO_SBOM_PATH when empty (like stable) (rust-lang/cargo#16419) - chore(ci): report-timings to upload HTML report (rust-lang/cargo#16416) - fix(report): get the same feature parity of `--timings` (rust-lang/cargo#16414) - fix(docs): Document the only possible values for DEBUG in build scripts (rust-lang/cargo#16413) - fix(log): emit fingeprint log also for no-rebuild unit (rust-lang/cargo#16408) - Fix link to `doc_cfg` docs in cargo book (rust-lang/cargo#16404) - Add best pratice for how to check in generated files (rust-lang/cargo#16405) - test: Use a larger default term width (rust-lang/cargo#16403) - Document more services and permissions of the cargo team (rust-lang/cargo#16402) - fix(new): Improve quality of package name error messages (rust-lang/cargo#16398) - feat(log): add more log events (rust-lang/cargo#16390) - chore: bump to 0.95.0; update changelog (rust-lang/cargo#16395) - Cache submodule into git db (rust-lang/cargo#16246) r? ghost
This updates the rust-version file to b53da9908134f77da3bb36e7009ac81f02ee48dc.
Pull recent changes from https://github.com/rust-lang/rust via Josh. Upstream ref: b53da9908134f77da3bb36e7009ac81f02ee48dc Filtered ref: a6fbc4d Upstream diff: rust-lang/rust@...b53da99 This merge was created using https://github.com/rust-lang/josh-sync.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Merge ref 'b53da9908134' from rust-lang/rust
Pull recent changes from https://github.com/rust-lang/rust via Josh.
Upstream ref: b53da9908134f77da3bb36e7009ac81f02ee48dc
Filtered ref: a6fbc4d
Upstream diff: rust-lang/rust@...b53da99
This merge was created using https://github.com/rust-lang/josh-sync.