| Age | Commit message (Collapse) | Author | Lines |
|
checktools.sh: fix bashism
Follow-up to https://github.com/rust-lang/rust/pull/140903. Turns out `tests/{pass,panic}` only properly expands in bash, not in dash. :/
r? `@WaffleLapkin`
|
|
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.
|
|
Add as_ascii_unchecked() methods to char, u8, and str
This PR adds the `as_ascii_unchecked()` method to `char`, `u8`, and `str`, allowing users to convert these types to `ascii::Char`s (see #110998) in an `unsafe` context without first checking for validity. This method was already available for `[u8]`, so this PR makes the API more consistent across other types.
|
|
Implement Display for ``rustc_target::callconv::Conv``
Follow up of https://github.com/rust-lang/rust/pull/133103#discussion_r1885552854
|
|
Rollup of 8 pull requests
Successful merges:
- #140208 (Make well-formedness predicates no longer coinductive)
- #140957 (Add `#[must_use]` to Array::map)
- #141031 (Async drop fix for dropee from another crate (#140858))
- #141036 (ci: split the dist-ohos job)
- #141051 (Remove some unnecessary erases)
- #141056 (Lowercase git url for rust-lang/enzyme.git)
- #141059 (HIR: explain in comment why `ExprKind::If` "then" is an `Expr`)
- #141070 (Do not emit help when shorthand from macro when suggest `?` or `expect`)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
Do not emit help when shorthand from macro when suggest `?` or `expect`
Fixes #140659
I didn't fully minimize the original bug, but I found a similar test case, and they have perhaps the same root cause. For the bug mentioned in #140659 , I also tested it locally and passed it.
Jieyou has worked on this part before, maybe r? `@jieyouxu`
|
|
HIR: explain in comment why `ExprKind::If` "then" is an `Expr`
One could be tempted to replace the "then" `hir::Expr` with kind `hir::ExprKind::Block` by a `hir::Block`. Explain why this would not be a good idea.
I've been there.
r? ``@compiler-errors``
|
|
Lowercase git url for rust-lang/enzyme.git
On Fuchsia, we have an internal Gerrit mirrors of the rust repositories to avoid excess load on the public github servers. Since rust uses submodules, we need to then use git's `url.<base>.insteadOf` to point our checkouts at our mirrors.
We'd prefer to be able to point all repositories under `https://github.com/rust-lang` to
`https://rust.googlesource.com/rust-lang`, but unfortunately it seems that when Rust mirrored Enzyme, the repository name was lower cased to `https://github.com/rust-lang/enzyme`, but kept the name capitalized in the .gitmodules file. This didn't cause a problem for Github, which seems to handle repository names in a case insensitive way, Gerrit is case sensitive, so we can't use a glob rule. Instead we have to setup `insteadOf` rules for each repository.
This renames the URL to match the case of the repository name, which should avoid the issue.
|
|
Remove some unnecessary erases
Some nits I pulled out of https://github.com/rust-lang/rust/pull/140814.
|
|
ci: split the dist-ohos job
try-job: `dist-ohos-*`
|
|
Async drop fix for dropee from another crate (#140858)
Fixes https://github.com/rust-lang/rust/issues/140858.
For `AsyncDestructor` impl def id was wrongly kept as a LocalDefId, which causes crash when dropee is declared in another crate.
Also, potential problem found:
when user crate drops type with async drop in dependency crate, and user crate doesn't enable `feature(async_drop)`, then sync drop version will be used.
Is it a problem? Do we need some notification about such situations?
|
|
Add `#[must_use]` to Array::map
The output of Array::map is intended to be an array of the same size, and does not modify the original in place nor is it intended for side-effects. Thus, under normal circumstances it should be consumed.
See [discussion](https://internals.rust-lang.org/t/array-map-annotate-with-must-use/22813/26).
Attaching to tracking issue #75243
|
|
Make well-formedness predicates no longer coinductive
This PR makes well-formedness no longer coinductive. It was made coinductive in https://github.com/rust-lang/rust/pull/98542, but AFAICT this was only to fix UI tests since we stopped lowering `where Ty:` to an empty-region outlives predicate but to a WF predicate instead.
Arguably it should lower to something completely different, something like a "type mentioned no-op predicate", but well-formedness serves this purpose fine today, and since no code (according to crater) relies on this coinductive behavior, we'd like to avoid having to emulate it in the new solver.
Fixes #123456 (I didn't want to add a test since it seems low-value to have a ICE test for a fuzzer minimization that is basically garbage code.)
Fixes #109764 (not sure if this behavior is emulatable w/o coinductive WF?)
Fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/169
r? lcnr
|
|
Revert "Fix linking statics on Arm64EC #140176"
This reverts PR #140176.
Unfortunately, this will reopen https://github.com/rust-lang/rust/issues/138541 (re-breaking the `arm64ec-pc-windows-msvc` target).
Unfortunately, multiple people are [reporting linker warnings related to `__rust_no_alloc_shim_is_unstable`](https://github.com/rust-lang/rust/pull/140176#issuecomment-2879715554) after this change in `x86_64-pc-windows-msvc` as well. The solution isn't quite clear yet, let's revert to avoid the linker warnings on the Tier 1 MSVC target for now[^timing], and try a reland with a determined solution for `__rust_no_alloc_shim_is_unstable`.
Judging from [people reporting that they are observing this also when bootstrapping w/ stage0 rustc](https://github.com/rust-lang/rust/pull/140176#issuecomment-2881867433), we may have to cut a new beta and then repoint stage0 against that newer beta?
cc `@dpaoliello` `@wesleywiser`
r? `@wesleywiser` (or compiler)
[^timing]: Note that it's still RustWeek this week, so most team members are N/A.
|
|
r=GuillaumeGomez
Subtree update GCC backend 2025 05 14
cc `@antoyo`
|
|
trait_sel: deep reject `match_normalize_trait_ref`
Spotted during an in-person review of #137944 at RustWeek: `match_normalize_trait_ref` could be using `DeepRejectCtxt` to exit early as an optimisation for projection candidates, like is done with param candidates.
r? `@lcnr`
cc `@oli-obk`
|
|
Weekly `cargo update`
Automation to keep dependencies in `Cargo.lock` current.
The following is the output from `cargo update`:
```txt
compiler & tools dependencies:
Locking 40 packages to latest compatible versions
Updating clap v4.5.37 -> v4.5.38
Updating clap_builder v4.5.37 -> v4.5.38
Updating ctrlc v3.4.6 -> v3.4.7
Updating derive_setters v0.1.6 -> v0.1.7
Updating getrandom v0.3.2 -> v0.3.3
Updating icu_collections v1.5.0 -> v2.0.0
Adding icu_locale_core v2.0.0
Updating icu_normalizer v1.5.0 -> v2.0.0
Updating icu_normalizer_data v1.5.1 -> v2.0.0
Updating icu_properties v1.5.1 -> v2.0.0
Updating icu_properties_data v1.5.1 -> v2.0.0
Adding icu_provider v2.0.0
Updating idna_adapter v1.2.0 -> v1.2.1
Updating jiff v0.2.12 -> v0.2.13
Updating jiff-static v0.2.12 -> v0.2.13
Updating libffi v4.0.0 -> v4.1.0
Updating libffi-sys v3.2.0 -> v3.3.1
Updating libloading v0.8.6 -> v0.8.7
Updating libm v0.2.13 -> v0.2.15
Adding litemap v0.8.0
Updating nix v0.29.0 -> v0.30.1
Adding potential_utf v0.1.2
Updating rustc-build-sysroot v0.5.4 -> v0.5.5
Adding tinystr v0.8.1
Updating tokio v1.44.2 -> v1.45.0
Updating unic-langid v0.9.5 -> v0.9.6
Updating unic-langid-impl v0.9.5 -> v0.9.6
Updating unic-langid-macros v0.9.5 -> v0.9.6
Updating unic-langid-macros-impl v0.9.5 -> v0.9.6
Removing utf16_iter v1.0.5
Adding wasm-encoder v0.230.0
Adding wasmparser v0.230.0
Updating wast v229.0.0 -> v230.0.0
Updating wat v1.229.0 -> v1.230.0
Updating winnow v0.7.9 -> v0.7.10
Removing write16 v1.0.0
Adding writeable v0.6.1
Adding yoke v0.8.0
Adding yoke-derive v0.8.0
Adding zerotrie v0.2.2
Adding zerovec v0.11.2
Adding zerovec-derive v0.11.1
note: pass `--verbose` to see 36 unchanged dependencies behind latest
library dependencies:
Locking 0 packages to latest compatible versions
note: pass `--verbose` to see 3 unchanged dependencies behind latest
rustbook dependencies:
Locking 26 packages to latest compatible versions
Updating cc v1.2.21 -> v1.2.22
Updating clap v4.5.37 -> v4.5.38
Updating clap_builder v4.5.37 -> v4.5.38
Updating clap_complete v4.5.48 -> v4.5.50
Updating getrandom v0.3.2 -> v0.3.3
Updating icu_collections v1.5.0 -> v2.0.0
Adding icu_locale_core v2.0.0
Removing icu_locid v1.5.0
Removing icu_locid_transform v1.5.0
Removing icu_locid_transform_data v1.5.1
Updating icu_normalizer v1.5.0 -> v2.0.0
Updating icu_normalizer_data v1.5.1 -> v2.0.0
Updating icu_properties v1.5.1 -> v2.0.0
Updating icu_properties_data v1.5.1 -> v2.0.0
Updating icu_provider v1.5.0 -> v2.0.0
Removing icu_provider_macros v1.5.0
Updating idna_adapter v1.2.0 -> v1.2.1
Updating jiff v0.2.12 -> v0.2.13
Updating jiff-static v0.2.12 -> v0.2.13
Updating litemap v0.7.5 -> v0.8.0
Adding potential_utf v0.1.2
Updating tinystr v0.7.6 -> v0.8.1
Removing utf16_iter v1.0.5
Updating web_atoms v0.1.1 -> v0.1.2
Updating winnow v0.7.9 -> v0.7.10
Removing write16 v1.0.0
Updating writeable v0.5.5 -> v0.6.1
Updating yoke v0.7.5 -> v0.8.0
Updating yoke-derive v0.7.5 -> v0.8.0
Adding zerotrie v0.2.2
Updating zerovec v0.10.4 -> v0.11.2
Updating zerovec-derive v0.10.3 -> v0.11.1
```
|
|
to it
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
|
|
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
|
|
Update cargo
5 commits in 056f5f4f3c100cb36b5e9aed2d20b9ea70aae295..47c911e9e6f6461f90ce19142031fe16876a3b95
2025-05-09 14:54:18 +0000 to 2025-05-14 17:53:17 +0000
- Stabilize doctest-xcompile (rust-lang/cargo#15462)
- feat: skip `publish=false` pkg when publishing entire workspace (rust-lang/cargo#15525)
- chore: bump to 0.90.0; update changelog (rust-lang/cargo#15520)
- chore(triagebot): add `[no-mentions]` and `[note]` (rust-lang/cargo#15517)
- add glob pattern support for known_hosts (rust-lang/cargo#15508)
r? ghost
|
|
|
|
Invoke a query only when it doesn't return immediately anyway
This should cause less query key caching and less dep graph data, hopefully resulting in some perf improvements
|
|
|
|
|
|
Signed-off-by: xizheyin <xizheyin@smail.nju.edu.cn>
|
|
Clippy subtree update
r? `@Manishearth`
Cargo.lock update due to Clippy version bump.
|
|
Rollup of 9 pull requests
Successful merges:
- #140791 (std: explain prefer `TryInto` over `TryFrom` when specifying traits bounds on generic function)
- #140834 (move (or remove) some impl Trait tests)
- #140910 (Remove `stable` attribute from wasi fs (read_exact|write_all)_at)
- #140984 (fix doc for UnixStream)
- #140997 (Add negative test coverage for `-Clink-self-contained` and `-Zlinker-features`)
- #141003 (Improve ternary operator recovery)
- #141009 (Migrate to modern datetime API)
- #141013 (Implement methods to set STARTUPINFO flags for Command API on Windows)
- #141026 (rustc-dev-guide subtree update)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
rustc-dev-guide subtree update
r? ``@ghost``
|
|
r=joboet
Implement methods to set STARTUPINFO flags for Command API on Windows
Implements https://github.com/rust-lang/rust/issues/141010
|
|
Migrate to modern datetime API
# PR Summary
This small PR resolves the `datetime` library warnings:
```python
DeprecationWarning: datetime.datetime.utcnow() is deprecated and scheduled for removal in a future version. Use timezone-aware objects to represent datetimes in UTC: datetime.datetime.now(datetime.UTC). or datetime.datetime.utcnow()
```
Note that `.replace(tzinfo=None)` allows to keep the original behavior where the time appears as a naive UTC timestamp (i.e., without any timezone offset). Comparision:
```python
# With .utcnow() or .now(datetime.timezone.utc).replace(tzinfo=None)
Time,Idle
2025-05-14T15:40:25.013414,98.73417721518987
# With .now(datetime.timezone.utc)
Time,Idle
2025-05-14T15:40:25.013414+00:00,98.73417721518987
```
|
|
Improve ternary operator recovery
This
- Improves the span of the error to not point at the next token
- Where possible, we use the span of the condition to further improve the span of the error to include the cond, and suggest a maybe-incorrect fix
Currently this works on free expressions, not let statements; some more refactoring would be needed to pass the span down, which I'm not sure is worth doing.
### Old

### New

|
|
Add negative test coverage for `-Clink-self-contained` and `-Zlinker-features`
Noticed while reviewing stabilization #140525 that we don't have any negative test coverage for these flags. Feel free to cherry-pick these tests into the stabilization PR, or we can land these before separately.
r? `@lqd`
|
|
fix doc for UnixStream
Doc example was using `UdpSocket` instead of `UnixStream`.
|
|
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.
|
|
move (or remove) some impl Trait tests
Probably not actually worth the effort, so I am stopping here :sweat_smile:
|
|
std: explain prefer `TryInto` over `TryFrom` when specifying traits bounds on generic function
Fixes #140761
This PR keeps the explanations of `Into` and `From` consistent and adds explanations for `TryInto` and `TryFrom`.
r? libs
|
|
Remove manual WF hack
We do not need this hack anymore since we fixed the candidate selection problems with `Sized` bounds. We prefer built-in sized bounds now since #138176, which fixes the only regression this hack was intended to fix.
While this theoretically is broken for some code, for example, when there a param-env bound that shadows an impl or built-in trait, we don't see it in practice and IMO it's not worth the burden of having to maintain this wart in `compare_method_predicate_entailment`.
The code that regresses is, for example:
```rust
trait Bar<'a> {}
trait Foo<'a, T> {
fn method(&self)
where
Self: Bar<'a>;
}
struct W<'a, T>(&'a T)
where
Self: Bar<'a>;
impl<'a, 'b, T> Bar<'a> for W<'b, T> {}
impl<'a, 'b, T> Foo<'a, T> for W<'b, T> {
fn method(&self) {}
}
```
Specifically, I don't believe this is really going to be encountered in practice. For this to fail, there must be a where clause in the *trait method* that would shadow an impl or built-in (non-`Sized`) candidate in the trait, and this shadowing would need to be encountered when solving a nested WF goal from the impl self type.
See #108544 for the original regression. Crater run is clean!
r? lcnr
|
|
Rollup of 7 pull requests
Successful merges:
- #139749 (docs(library/core/src/pin): fix typo "necessarily" -> "necessary")
- #140685 (Simplify `Vec::as_non_null` implementation and make it `const`)
- #140712 (normalization: avoid incompletely constraining GAT args)
- #140768 (Improve `dangerous_implicit_aurorefs` diagnostic output)
- #140947 (Flush errors before deep normalize in `dropck_outlives`)
- #140990 (VxWorks: updates from recent libc versions)
- #141027 (remove `RustfmtState` to reduce `initial_rustfmt` complexity)
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
One could be tempted to replace the "then" `hir::Expr` with kind
`hir::ExprKind::Block` by a `hir::Block`. Explain why this would not be
a good idea.
|
|
On Fuchsia, we have an internal Gerrit mirrors of the rust repositories
to avoid excess load on the public github servers. Since rust uses
submodules, we need to then use git's `url.<base>.insteadOf` to point
our checkouts at our mirrors.
We'd prefer to be able to point all repositories under
`https://github.com/rust-lang` to
`https://rust.googlesource.com/rust-lang`, but unfortunately it seems
that when Rust mirrored Enzyme, the repository name was lower cased to
`https://github.com/rust-lang/enzyme`, but kept the name capitalized in
the .gitmodules file. This didn't cause a problem for Github, which
seems to handle repository names in a case insensitive way, Gerrit is
case sensitive, so we can't use a glob rule. Instead we have to setup
`insteadOf` rules for each repository.
This renames the URL to match the case of the repository name, which
should avoid the issue.
|
|
r=albertlarsan68
remove `RustfmtState` to reduce `initial_rustfmt` complexity
The current use of `RustfmtState` doesn't serve its main purpose as it never does the lazy evaulation since `Build::build` forces it to be ready on the early stage. If we want rustfmt to be ready on the early stage, we don't need to have `RustfmtState` complexity at all.
|
|
VxWorks: updates from recent libc versions
Vxworks changes. Required changes were added to libc in pr https://github.com/rust-lang/libc/pull/4407 and https://github.com/rust-lang/libc/pull/4337
|
|
Flush errors before deep normalize in `dropck_outlives`
Deep normalization doesn't allow the ocx to have pending obligations, so process them before deeply normalizing.
Fixes https://github.com/rust-lang/rust/issues/140931
Fixes https://github.com/rust-lang/rust/issues/140462
|
|
Improve `dangerous_implicit_aurorefs` diagnostic output
This PR *greatly* improves the `dangerous_implicit_aurorefs` lint diagnostic output.
Kind of related to #140721.
r? ```@jieyouxu``` (maybe)
|
|
normalization: avoid incompletely constraining GAT args
We need to copy the behavior of #125214 in the new solver. This fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/202 which seems to be the cause of the regression in `deptypes`.
r? ```@compiler-errors```
|
|
Simplify `Vec::as_non_null` implementation and make it `const`
Tracking issue: #130364.
|
|
ruancomelli:docs/library/core/src/pin/fix-typo-necessarily-to-necessary, r=joboet
docs(library/core/src/pin): fix typo "necessarily" -> "necessary"
Fix a typo in [`library/core/src/pin.rs`](https://github.com/ruancomelli/rust/blob/14662fabeb69fe5ab6c6e68051bf9f80d4aaaa35/library/core/src/pin.rs), from
> As we'll see later, this is **necessarily** from the time the value is first pinned until the end of its lifespan.
to
> As we'll see later, this is **necessary** from the time the value is first pinned until the end of its lifespan.
(my emphasis).
|
|
Optimize `ToString` implementation for integers
Part of https://github.com/rust-lang/rust/issues/135543.
Follow-up of https://github.com/rust-lang/rust/pull/133247 and https://github.com/rust-lang/rust/pull/128204.
The benchmark results are:
| name| 1.87.0-nightly (3ea711f17 2025-03-09) | With this PR | diff |
|-|-|-|-|
| bench_i16 | 32.06 ns/iter (+/- 0.12) | 17.62 ns/iter (+/- 0.03) | -45% |
| bench_i32 | 31.61 ns/iter (+/- 0.04) | 15.10 ns/iter (+/- 0.06) | -52% |
| bench_i64 | 31.71 ns/iter (+/- 0.07) | 15.02 ns/iter (+/- 0.20) | -52% |
| bench_i8 | 13.21 ns/iter (+/- 0.14) | 14.93 ns/iter (+/- 0.16) | +13% |
| bench_u16 | 31.20 ns/iter (+/- 0.06) | 16.14 ns/iter (+/- 0.11) | -48% |
| bench_u32 | 33.27 ns/iter (+/- 0.05) | 16.18 ns/iter (+/- 0.10) | -51% |
| bench_u64 | 31.44 ns/iter (+/- 0.06) | 16.62 ns/iter (+/- 0.21) | -47% |
| bench_u8 | 10.57 ns/iter (+/- 0.30) | 13.00 ns/iter (+/- 0.43) | +22% |
More information about it in [the original comment](https://github.com/rust-lang/rust/pull/136264#discussion_r1987542954).
r? `@workingjubilee`
|
|
|
|
|