20083 Commits

Author SHA1 Message Date
Eric Huss
75d712a323 Add .git-blame-ignore-revs
This adds a file to ignore most formatting commits in `git blame`. These
commits usually are not interesting, and being able to skip them makes
it a little easier to traverse a blame history. This is a feature
natively supported by GitHub automatically to ignore these. When running
locally, you need to first configure git to use it.

I was a little on the fence on which PRs to include here. Many of these
are small and probably not too important. However, instead of trying to
figure out some threshold of "is this large enough", I decided to just
include all of them.

I checked these by visually looking at each commit and briefly checking
that it didn't seem to include any non-formatting changes.

I think it would be nice to try to keep commits a little cleaner in the
future, and avoid merging PRs that have things like this (unless it is
due to a change in rustfmt itself). I admit I don't always enforce it
since it can be a significant drag, though.
2025-05-30 07:50:37 -07:00
Eric Huss
bffece899e
refactor: separate "global" mode from CompileMode (#15601)
### What does this PR try to resolve?

This separates the concern of two different "mode".

- UserIntent: focus on the overall goal of the build
- CompileMode: the actual compile operation for each unit (I'd like to
rename it to something else in the future, such as CompileAction)

This is a preparation of adding `-Zno-link`/`-Zlink-only` support,
which we'll have `CompileMode::Link` but that doesn't make sense to
show up in `UserIntent`.

### How should we test and review this PR?

It should have no functional change.

### Additional information
2025-05-28 23:50:22 +00:00
Ed Page
36daa739ca
fix(doc): pass toolchain-shared-resources to get doc styled (#15605)
### What does this PR try to resolve?

Fixes #15604

rustdoc assumes to add static files only when the
toolchain-shared-resources emit-type is specified, or when no emit-type
is specified.

See
80c34983c6/src/librustdoc/html/render/write_shared.rs (L206-L213)

### How should we test and review this PR?

Not going to write a test because I don't think we want to inspect into
how rustdoc arranges static files.

See #15604 for how to reproduce/test.

### Additional information

cc #15370
2025-05-28 21:03:49 +00:00
Weihang Lo
6abe54c653
fix(rustdoc-depinfo): pass also toolchain-shared-resources to get doc styled
rustdoc assumes to add static files only when the
toolchain-shared-resources emit-type is specified,
or when no emit-type is specified.

See
80c34983c6/src/librustdoc/html/render/write_shared.rs (L206-L213)
2025-05-28 16:29:55 -04:00
Weihang Lo
c8d15a37e3
fix(embedded): Resolve multiple bugs in frontmatter parser (#15573)
### What does this PR try to resolve?

This pulls in the tests from rust-lang/rust#140035 and ensures we pass
them, including switching our parser to be more like the one from
rust-lang/rust#137193.

I've added comments specifying why our test results differ from rustcs.

This is part of #12207

### How should we test and review this PR?

### Additional information

We still have work to do to improve the quality of our error messages
2025-05-27 20:13:03 +00:00
Weihang Lo
310e4f36fc
chore: Upgrade schemars (#15602)
### What does this PR try to resolve?

0.9.0 may look like a downgrade but the maintainer has decided to go
  back to `0.x` versions rather than continuing to use pre-release
versions

### How should we test and review this PR?

### Additional information
2025-05-27 20:01:20 +00:00
Ed Page
92cb7b9a60 chore: Upgrade schemars
0.9.0 may look like a downgrade but the maintainer has decided to go
  back to `0.x` versions rather than continuing to use pre-release
versions
2025-05-27 12:34:14 -05:00
Weihang Lo
2fc7e6ed86
refactor: remove unsed Bench mode
The purpose of it was for indicating old "global mode".
There should be no difference between building a test or a bench,
as we already coerce Bench to Test:
https://github.com/rust-lang/cargo/blob/6ffc01f9fa7aa50d0/src/cargo/ops/cargo_compile/unit_generator.rs#L91-L99

The the removal of serialization for `CompileMode::Bench` affects
nothing because it was never really constructed.
2025-05-27 11:49:19 -04:00
Weihang Lo
2bab011078
refactor: separate "global" mode from CompileMode
This separates the concern of two different "mode".

- UserIntent: focus on the overall goal of the build
- CompileMode: the actual compile operation for each unit

This is a preparation of adding `-Zno-link`/`-Zlink-only` support,
which we'll have `CompileMode::Link` but that doesn't make sense to
show up in `UserIntent`.
2025-05-27 11:48:30 -04:00
Weihang Lo
a9e8aa2c65
Update gix & socket2 (#15600)
Closes #15442
Closes #15468
Closes #15469

r? @weihanglo

cc @jeremyd2019
2025-05-26 16:10:58 +00:00
王宇逸
bb62903ad7 Update gix & socket2 2025-05-26 21:42:47 +08:00
Weihang Lo
6ffc01f9fa
Add -Zfix-edition (#15596)
This adds a new `cargo fix -Zfix-edition` permanently unstable flag to
assist with edition migration testing, particularly with crater.

The commits and given documentation should explain how it works, but
there will be forthcoming edition documentation (on the forge) once all
the pieces with crater come together.
2025-05-26 11:57:32 +00:00
Eric Huss
21629670f4 Implement -Zfix-edition
This adds the implementation for the behavior of `cargo fix
-Zfix-edition`.
2025-05-25 08:24:09 -07:00
Eric Huss
331dcec02d Add EditionFixMode
This adds the `EditionFixMode` enum to control the behavior of
`cargo fix --edition`. The main intent is to provide a way to force
`cargo fix` to migrate to a specific edition, instead of just going to
the "next".

This will be needed for `-Zfix-edition` in order to force it to use the
"future" edition, which is never the "next" edition.

This requires being able to serialize and deserialize this setting as it
is conveyed through an environment variable to the recursive cargo
invocation.
2025-05-25 08:18:41 -07:00
Eric Huss
9d93b42c4c Add the -Zfix-edition flag
This adds support for parsing the `-Zfix-edition` flag.
2025-05-25 08:18:41 -07:00
Eric Huss
778ff6885a Factor out workspace reloading
This factors out the code to reload a workspace since I will be needing
to reuse this elsewhere.

There is some risk with this method not getting updated correctly in the
future as new fields are added to Workspace (and it may be missing some
things now), but that is an issue with the existing code.
2025-05-25 08:18:41 -07:00
Weihang Lo
8d17219da9
chore(toml): disable toml's default features, unless necessary (#15598)
### What does this PR try to resolve?

This reduces the build time of `cargo-util-schemas` by disabling the
unused `display` and `parse` features of `toml` (which are enabled by
default).

This is useful as `cargo-util-schemas` is intended to be reused outside
of Cargo.

### How should we test and review this PR?

As I believe these features only *feature-gate* items on `toml` (they do
not affect runtime behavior silently), the CI building successfully
should be enough to make sure this does not break anything. ~If this
does not build, I will try to tend to it today, otherwise feel free to
push to this branch.~
2025-05-25 14:46:55 +00:00
AudaciousAxiom
8362109b8e chore(toml): disable toml's default features, unless necessary
This reduces the build time of `cargo-util-schemas`.
2025-05-25 13:31:18 +02:00
Weihang Lo
4aa973480b
docs(README): fix the link to the changelog in the Cargo book (#15597)
<!--
Thanks for submitting a pull request 🎉! Here are some tips for you:

* If this is your first contribution, read "Cargo Contribution Guide"
first:
  https://doc.crates.io/contrib/
* Run `cargo fmt --all` to format your code changes.
* Small commits and pull requests are always preferable and easy to
review.
* If your idea is large and needs feedback from the community, read how:
  https://doc.crates.io/contrib/process/#working-on-large-features
* Cargo takes care of compatibility. Read our design principles:
  https://doc.crates.io/contrib/design.html
* When changing help text of cargo commands, follow the steps to
generate docs:

https://github.com/rust-lang/cargo/tree/master/src/doc#building-the-man-pages
* If your PR is not finished, set it as "draft" PR or add "WIP" in its
title.
* It's ok to use the CI resources to test your PR, but please don't
abuse them.

### What does this PR try to resolve?

Explain the motivation behind this change.
A clear overview along with an in-depth explanation are helpful.

You can use `Fixes #<issue number>` to associate this PR to an existing
issue.

### How should we test and review this PR?

Demonstrate how you test this change and guide reviewers through your
PR.
With a smooth review process, a pull request usually gets reviewed
quicker.

If you don't know how to write and run your tests, please read the
guide:
https://doc.crates.io/contrib/tests

### Additional information

Other information you want to mention in this PR, such as prior arts,
future extensions, an unresolved problem, or a TODO list.
-->
### What does this PR try to resolve?

When Cargo's changelog was moved into the book in #15123, it seems the
extension was left as `.md`, whereas the link should point to the
rendered version, which ends with `.html`.

### How should we test and review this PR?

Following the new link in the README's rendered view and observing that
it does indeed point to the changelog should be enough.
2025-05-25 10:42:48 +00:00
AudaciousAxiom
2243b6d5b6
docs(README): fix the link to the changelog in the Cargo book 2025-05-25 10:05:19 +00:00
Weihang Lo
f19321e343
Add the future edition (#15595)
This adds support for the "future" edition which was added to rustc in
https://github.com/rust-lang/rust/pull/137606.

To enable support for unstable editions, this introduces a new
`unstable-editions` cargo feature. The intent is that instead of having
a new feature for each edition that we reuse this feature for all new
editions. I don't see a particular reason we should have a separate one
for each edition, and this helps a bit with scalability and simplifies
some of the edition process.

This also includes a change to rework `supports_compat_lint` explained
in the comment.
2025-05-25 01:06:12 +00:00
Eric Huss
5f5ad05d80 Add the future edition
This adds support for the "future" edition which was added to rustc in
https://github.com/rust-lang/rust/pull/137606.

To enable support for unstable editions, this introduces a new
`unstable-editions` cargo feature. The intent is that instead of having
a new feature for each edition that we reuse this feature for all new
editions. I don't see a particular reason we should have a separate one
for each edition, and this helps a bit with scalability and simplifies
some of the edition process.

This also includes a change to rework `supports_compat_lint` explained
in the comment.
2025-05-24 17:36:32 -07:00
Weihang Lo
68db37499f
chore(gh): Add new-lint issue template (#15575)
### What does this PR try to resolve?

We aren't quite ready for writing lints (waiting on an annotate-snippets
release) but I wanted to start recording some lint ideas I had.

### How should we test and review this PR?

Based on clippy's which I assumed would be a good starting point. There
are more area we'll need to fill out during discussion, like the lint
name, what primary group the lint would be in, etc.

### Additional information
2025-05-22 14:27:15 +00:00
Ed Page
5661fb89c1 chore(gh): Add new-lint template
Based on clippy's
2025-05-22 08:42:14 -05:00
Weihang Lo
c2c636a6db
fix(toml): Remove workaround for rustc frontmatter support (#15570)
### What does this PR try to resolve?

With rust-lang/rust#140035 now merged, we can rely on that rather than
dirty hacks

This is part of #12207

### How should we test and review this PR?

### Additional information
2025-05-21 23:45:57 +00:00
Ed Page
58c2256588 fix(embedded): Match rustc's whitespace definition 2025-05-21 15:21:32 -05:00
Ed Page
70f09a012d fix(embedded): Disallow ambiguous multiple frontmatters
We could say that we delegate this to rustc but if they add support for
multiple frontmatters, we need to update to be able to know which we
should read, so its better to error on our side.
2025-05-21 15:16:01 -05:00
Ed Page
c3a9712524 test(embedded): Note rustc bug 2025-05-21 14:05:25 -05:00
Ed Page
ff0ed7276d test(embedded): Note our lack of rust grammar parsing 2025-05-21 14:03:12 -05:00
Ed Page
a8d714b403 fix(embedded): Allow empty frontmatter 2025-05-21 14:01:54 -05:00
Ed Page
5b6d5df49a test(embedded): Note our lack of infostring validator 2025-05-21 13:57:22 -05:00
Ed Page
b4c96847f2 refactor(embedded): Pull in parser from rust-lang/rust#137193 2025-05-21 13:56:12 -05:00
Ed Page
02bcb61da3 test(embedded): Copy frontmatter tests from rustc
I left out those dealing with proc-macros or `include`
2025-05-21 13:32:13 -05:00
Ed Page
f49d2fdbb4 fix(toml): Remove workaround for rustc frontmatter support
With rust-lang/rust#140035 now merged, we can rely on that rather than
dirty hacks
2025-05-21 12:48:56 -05:00
Ed Page
4b3f952307
fix(vendor)!: vendor files with .rej/.orig suffix (#15569)
### What does this PR try to resolve?

This is meant to fixes #13191

As git sources and registry sources are considered immutable.
I don't think there is any reason excluding those files.
There might be a little chance local Git repositories might have those,
though that is a rare use case.

Alternatively,
we could reject all `.rej`/`.orig` files but `Cargo.toml.orig`.

### How should we test and review this PR?

Test updates should be sufficient.

### Additional information

This is a follow-up of #15514
2025-05-21 17:48:12 +00:00
Weihang Lo
29ecb7f36a
fix(vendor)!: vendor files with .rej/.orig suffix
This is meant to fixes #13191

As git sources and registry sources are considered immutable.
I don't think there is any reason excluding those files.
There might be a little chance local Git repositories might have those,
though that is a rare use case.

Alternatively,
we could reject all `.rej`/`.orig` files but `Cargo.toml.orig`.
2025-05-21 13:17:16 -04:00
Weihang Lo
622d4c2506
test(vendor): make what to vendor clearer 2025-05-21 13:16:48 -04:00
Weihang Lo
dd4c8c0e2a
test(vendor): snapshot .cargo-checksum.json
So that it explicitly shows what we really vendor
2025-05-21 13:03:04 -04:00
Ed Page
ee08992ec9
fix(vendor)!: direct extraction for registry sources (#15514)
### What does this PR try to resolve?

`PathSource::list_files` has some heurstic rules for listing files.
Those rules are mainly designed for `cargo package`.

Previously, cargo-vendor relies on those rules to understand what files
to vendor. However, it shouldn't use those rules because:

* Package extracted from a `.crate` tarball isn't Git-controlled, some
rules may apply differently.
* The extracted package already went through `PathSource::list_files`
during packaging. It should be clean enough.
* Should keep crate sources from registry sources in a pristine state,
which is exactly what vendoring is meant for.

Instead, we switch to direct extraction into the vendor directory
to ensure source code is the same as in the `.crate` tarball.

### How should we test and review this PR?

There is already a test `vendor::package_exclude` for the fix of #9054,
though now I think it is not a good fix. The test change shows the
correct behavior change.

I am not sure if we want more tests.

Also, there are some caveats with this fix:

* The overwrite protection in `unpack_package` assumes the unpack
  directory is always `<pkg>-<version`>.
  We don't want to remove this,
  but for cargo-vendor supports vendoring without version suffix.
  For that case, we need a temporary staging area,
  and move the unpacked source then.
* The heurstic in `PathSource::list_files` did something "good" in
  general cases, like excluding hidden directories. That means
  common directories like `.github` or `.config` won't be vendored.
  After this, those get included. This is another round of churns.
  We might want to get other `cargo-vendor` changes along with this
  in one single release.

### Additional information

* Fixes #9054
* Fixes #9555
* Fixes #9575
* Fixes #11000
* Fixes #14034
* Fixes #15080
* Fixes #15090

This also opens a door for

* #10310
* #13191

Since we are changing vendored source (again), we might want to remove
the `.rej`/`.orig` special rules in cargo-vendor, as well as look into
the new source-dedup vendor dir layout.

<!-- TRIAGEBOT_START -->

<!-- TRIAGEBOT_SUMMARY_START -->

### Summary Notes

-
[benchmark-result](https://github.com/rust-lang/cargo/pull/15514#issuecomment-2870275766)
by [weihanglo](https://github.com/weihanglo)

Generated by triagebot, see
[help](https://forge.rust-lang.org/triagebot/note.html) for how to add
more
<!--
TRIAGEBOT_SUMMARY_DATA_START$${"entries_by_url":{"https://github.com/rust-lang/cargo/pull/15514#issuecomment-2870275766":{"title":"benchmark-result","comment_url":"https://github.com/rust-lang/cargo/pull/15514#issuecomment-2870275766","author":"weihanglo"}}}$$TRIAGEBOT_SUMMARY_DATA_END
-->

<!-- TRIAGEBOT_SUMMARY_END -->
<!-- TRIAGEBOT_END -->
2025-05-21 14:42:18 +00:00
Weihang Lo
c2d3bc48fc
fix(vendor): early Windows 10 versions cannot move dirs
Not sure if it is really needed,
though Cargo had better follow what platform support says.

> The behavior on Windows is the same on Windows 10 1607 and higher
> if `FileRenameInfoEx` is supported by the filesystem; otherwise,
> `from` can be anything, but `to` must *not* be a directory.

https://doc.rust-lang.org/1.86.0/src/std/fs.rs.html#2430-2435
2025-05-21 10:07:42 -04:00
Weihang Lo
dc304df0dc
fix(vendor): remove workaround for rust-lang/cargo#5956
By doing direct extractions, source code is kept in its original state
The old workaround is irrelevant now.
2025-05-21 10:07:42 -04:00
Weihang Lo
e8534d0bc2
fix(vendor)!: direct extraction for registry sources
`PathSource::list_files` has some heurstic rules for listing files.
Those rules are mainly designed for `cargo package`.

Previously, cargo-vendor relies on those rules to understand what
files to vendor. However, it shouldn't use those rules because:

* Package extracted from a `.crate` tarball isn't Git-controlled,
  some rules may apply differently.
* The extracted package already went through `PathSource::list_files`
  during packaging. It should be clean enough.
* Should keep crate sources from registry sources in a pristine state,
  which is exactly what vendoring is meant for.

Instead, we switch to direct extraction into the vendor directory
to ensure source code is the same as in the `.crate` tarball.

There are some caveats:

* The overwrite protection in `unpack_package` assumes the unpack
  directory is always `<pkg>-<version`>.
  We don't want to remove this,
  but for cargo-vendor supports vendoring without version suffix.
  For that case, we need a temporary staging area,
  and move the unpacked source then.
* The heurstic in `PathSource::list_files` did something "good" in
  general cases, like excluding hidden directories. That means
  common directorys like `.github` or `.config` won't be vendored.
  After this, those get included. This is another round of churns.
  We might want to get other `cargo-vendor` changes along with this
  in one single release.
2025-05-21 10:07:41 -04:00
Weihang Lo
060ab41ed8
refactor(vendor): extract vendor filter to a function 2025-05-21 10:07:41 -04:00
Weihang Lo
8fee50a9b8
refactor(vendor): name variables better 2025-05-21 10:07:41 -04:00
Weihang Lo
d760d6edf2
refactor(vendor): remove unnecessary allocations 2025-05-21 10:07:40 -04:00
Weihang Lo
a506cebfed
refactor(registry): extract the general unpack logic 2025-05-21 10:07:40 -04:00
Ed Page
2d662d919e
chore(deps): update msrv (1 version) to v1.87 (#15530)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [MSRV:1](https://redirect.github.com/rust-lang/rust) | minor | `1.86`
-> `1.87` |

---

### Release Notes

<details>
<summary>rust-lang/rust (MSRV:1)</summary>

###
[`v1.87`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1870-2025-05-15)

[Compare
Source](https://redirect.github.com/rust-lang/rust/compare/1.86.0...1.87.0)

\==========================

<a id="1.87.0-Language"></a>

## Language

- [Stabilize `asm_goto`
feature](https://redirect.github.com/rust-lang/rust/pull/133870)
- [Allow parsing open beginning ranges (`..EXPR`) after unary operators
`!`, `-`, and
`*`](https://redirect.github.com/rust-lang/rust/pull/134900).
- [Don't require method impls for methods with `Self: Sized` bounds in
`impl`s for unsized
types](https://redirect.github.com/rust-lang/rust/pull/135480)
- [Stabilize `feature(precise_capturing_in_traits)` allowing `use<...>`
bounds on return position `impl Trait` in
`trait`s](https://redirect.github.com/rust-lang/rust/pull/138128)

<a id="1.87.0-Compiler"></a>

## Compiler

- [x86: make SSE2 required for i686 targets and use it to pass SIMD
types](https://redirect.github.com/rust-lang/rust/pull/135408)

<a id="1.87.0-Platform-Support"></a>

## Platform Support

- [Remove `i586-pc-windows-msvc`
target](https://redirect.github.com/rust-lang/rust/pull/137957)

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html

<a id="1.87.0-Libraries"></a>

## Libraries

- [Stabilize the anonymous pipe
API](https://redirect.github.com/rust-lang/rust/issues/127154)
- [Add support for unbounded left/right shift
operations](https://redirect.github.com/rust-lang/rust/issues/129375)
- [Print pointer metadata in `Debug` impl of raw
pointers](https://redirect.github.com/rust-lang/rust/pull/135080)
- [`Vec::with_capacity` guarantees it allocates with the amount
requested, even if `Vec::capacity` returns a different
number.](https://redirect.github.com/rust-lang/rust/pull/135933)
- Most `std::arch` intrinsics which don't take pointer arguments can now
be called from safe code if the caller has the appropriate target
features already enabled
([https://github.com/rust-lang/stdarch/pull/1714](https://redirect.github.com/rust-lang/stdarch/pull/1714),
[https://github.com/rust-lang/stdarch/pull/1716](https://redirect.github.com/rust-lang/stdarch/pull/1716),
[https://github.com/rust-lang/stdarch/pull/1717](https://redirect.github.com/rust-lang/stdarch/pull/1717))
- [Undeprecate
`env::home_dir`](https://redirect.github.com/rust-lang/rust/pull/137327)
- [Denote `ControlFlow` as
`#[must_use]`](https://redirect.github.com/rust-lang/rust/pull/137449)
- [Macros such as `assert_eq!` and `vec!` now support `const {...}`
expressions](https://redirect.github.com/rust-lang/rust/pull/138162)

<a id="1.87.0-Stabilized-APIs"></a>

## Stabilized APIs

-
[`Vec::extract_if`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.extract_if)
-
[`vec::ExtractIf`](https://doc.rust-lang.org/stable/std/vec/struct.ExtractIf.html)
-
[`LinkedList::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.extract_if)
-
[`linked_list::ExtractIf`](https://doc.rust-lang.org/stable/std/collections/linked_list/struct.ExtractIf.html)
-
[`<[T]>::split_off`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off)
-
[`<[T]>::split_off_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut)
-
[`<[T]>::split_off_first`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first)
-
[`<[T]>::split_off_first_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut)
-
[`<[T]>::split_off_last`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last)
-
[`<[T]>::split_off_last_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last_mut)
-
[`String::extend_from_within`](https://doc.rust-lang.org/stable/alloc/string/struct.String.html#method.extend_from_within)
-
[`os_str::Display`](https://doc.rust-lang.org/stable/std/ffi/os_str/struct.Display.html)
-
[`OsString::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.display)
-
[`OsStr::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.display)
-   [`io::pipe`](https://doc.rust-lang.org/stable/std/io/fn.pipe.html)
-
[`io::PipeReader`](https://doc.rust-lang.org/stable/std/io/struct.PipeReader.html)
-
[`io::PipeWriter`](https://doc.rust-lang.org/stable/std/io/struct.PipeWriter.html)
- [`impl From<PipeReader> for
OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle)
- [`impl From<PipeWriter> for
OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle)
- [`impl From<PipeReader> for
Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html)
- [`impl From<PipeWriter> for
Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio)
- [`impl From<PipeReader> for
OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd)
- [`impl From<PipeWriter> for
OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd)
-
[`Box<MaybeUninit<T>>::write`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write)
- [`impl TryFrom<Vec<u8>> for
String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String)
- [`<*const
T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned)
- [`<*const
T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned)
- [`<*mut
T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1)
- [`<*mut
T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned-1)
-
[`NonNull::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from_unsigned)
-
[`NonNull::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from_unsigned)
-
[`<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed)
-
[`NonZero::<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5).
-
[`<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned).
-
[`NonZero::<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5).
-
[`<uN>::is_multiple_of`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of)
-
[`<uN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl)
-
[`<uN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr)
-
[`<iN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl)
-
[`<iN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr)
-
[`<iN>::midpoint`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint)
-
[`<str>::from_utf8`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8)
-
[`<str>::from_utf8_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_mut)
-
[`<str>::from_utf8_unchecked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_unchecked)
-
[`<str>::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_unchecked_mut)

These previously stable APIs are now stable in const contexts:

-
[`core::str::from_utf8_mut`](https://doc.rust-lang.org/stable/std/str/fn.from_utf8\_mut.html)
-
[`<[T]>::copy_from_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.copy_from_slice)
-
[`SocketAddr::set_ip`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_ip)
-
[`SocketAddr::set_port`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_port),
-
[`SocketAddrV4::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_ip)
-
[`SocketAddrV4::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_port),
-
[`SocketAddrV6::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_ip)
-
[`SocketAddrV6::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_port)
-
[`SocketAddrV6::set_flowinfo`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_flowinfo)
-
[`SocketAddrV6::set_scope_id`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_scope_id)
-
[`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit)
-
[`char::is_whitespace`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_whitespace)
- [`<[[T;
N]]>::as_flattened`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened)
- [`<[[T;
N]]>::as_flattened_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened_mut)
-
[`String::into_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_bytes)
-
[`String::as_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_str)
-
[`String::capacity`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.capacity)
-
[`String::as_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_bytes)
-
[`String::len`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.len)
-
[`String::is_empty`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.is_empty)
-
[`String::as_mut_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_str)
-
[`String::as_mut_vec`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_vec)
-
[`Vec::as_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_ptr)
-
[`Vec::as_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_slice)
-
[`Vec::capacity`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.capacity)
-
[`Vec::len`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.len)
-
[`Vec::is_empty`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.is_empty)
-
[`Vec::as_mut_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_slice)
-
[`Vec::as_mut_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_ptr)

<a id="1.87.0-Cargo"></a>

## Cargo

- [Add terminal integration via ANSI OSC 9;4
sequences](https://redirect.github.com/rust-lang/cargo/pull/14615/)
- [chore: bump openssl to
v3](https://redirect.github.com/rust-lang/cargo/pull/15232/)
- [feat(package): add --exclude-lockfile
flag](https://redirect.github.com/rust-lang/cargo/pull/15234/)

<a id="1.87.0-Compatibility-Notes"></a>

## Compatibility Notes

- [Rust now raises an error for macro invocations inside the
`#![crate_name]`
attribute](https://redirect.github.com/rust-lang/rust/pull/127581)
- [Unstable fields are now always considered to be
inhabited](https://redirect.github.com/rust-lang/rust/pull/133889)
- [Macro arguments of unary operators followed by open beginning ranges
may now be matched
differently](https://redirect.github.com/rust-lang/rust/pull/134900)
- [Make `Debug` impl of raw pointers print metadata if
present](https://redirect.github.com/rust-lang/rust/pull/135080)
- [Warn against function pointers using unsupported ABI strings in
dependencies](https://redirect.github.com/rust-lang/rust/pull/135767)
- [Associated types on `dyn` types are no longer
deduplicated](https://redirect.github.com/rust-lang/rust/pull/136458)
- [Forbid attributes on `..` inside of struct patterns (`let Struct {
#[attribute] .. })
=`](https://redirect.github.com/rust-lang/rust/pull/136490)
- [Make `ptr_cast_add_auto_to_object` lint into hard
error](https://redirect.github.com/rust-lang/rust/pull/136764)
- Many `std::arch` intrinsics are now safe to call in some contexts,
there may now be new `unused_unsafe` warnings in existing codebases.
- [Limit `width` and `precision` formatting options to 16 bits on all
targets](https://redirect.github.com/rust-lang/rust/pull/136932)
- [Turn order dependent trait objects future incompat warning into a
hard error](https://redirect.github.com/rust-lang/rust/pull/136968)
- [Denote `ControlFlow` as
`#[must_use]`](https://redirect.github.com/rust-lang/rust/pull/137449)
- [Windows: The standard library no longer links `advapi32`, except on
win7.](https://redirect.github.com/rust-lang/rust/pull/138233) Code such
as C libraries that were relying on this assumption may need to
explicitly link advapi32.
- [Proc macros can no longer observe expanded `cfg(true)`
attributes.](https://redirect.github.com/rust-lang/rust/pull/138844)
- [Start changing the internal representation of pasted
tokens](https://redirect.github.com/rust-lang/rust/pull/124141). Certain
invalid declarative macros that were previously accepted in obscure
circumstances are now correctly rejected by the compiler. Use of a `tt`
fragment specifier can often fix these macros.
- [Don't allow flattened format_args in
const.](https://redirect.github.com/rust-lang/rust/pull/139624)

<a id="1.87.0-Internal-Changes"></a>

## Internal Changes

These changes do not affect any public interfaces of Rust, but they
represent
significant improvements to the performance or internals of rustc and
related
tools.

- [Update to LLVM
20](https://redirect.github.com/rust-lang/rust/pull/135763)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/rust-lang/cargo).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xOCIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE4IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
2025-05-20 21:41:48 +00:00
Ed Page
31433a3094 chore: Bump package versions 2025-05-20 16:08:34 -05:00
Ed Page
62ba9df97a
Fix comment for cargo/core/compiler/fingerprint/mod.rs (#15565)
<!--
Thanks for submitting a pull request 🎉! Here are some tips for you:

* If this is your first contribution, read "Cargo Contribution Guide"
first:
  https://doc.crates.io/contrib/
* Run `cargo fmt --all` to format your code changes.
* Small commits and pull requests are always preferable and easy to
review.
* If your idea is large and needs feedback from the community, read how:
  https://doc.crates.io/contrib/process/#working-on-large-features
* Cargo takes care of compatibility. Read our design principles:
  https://doc.crates.io/contrib/design.html
* When changing help text of cargo commands, follow the steps to
generate docs:

https://github.com/rust-lang/cargo/tree/master/src/doc#building-the-man-pages
* If your PR is not finished, set it as "draft" PR or add "WIP" in its
title.
* It's ok to use the CI resources to test your PR, but please don't
abuse them.

### What does this PR try to resolve?

Fix comment for cargo/core/compiler/fingerprint/mod.rs

### How should we test and review this PR?

Demonstrate how you test this change and guide reviewers through your
PR.
With a smooth review process, a pull request usually gets reviewed
quicker.

If you don't know how to write and run your tests, please read the
guide:
https://doc.crates.io/contrib/tests

### Additional information

Other information you want to mention in this PR, such as prior arts,
future extensions, an unresolved problem, or a TODO list.
-->
2025-05-20 16:44:27 +00:00
Weihang Lo
c36e6f258e
fix: remove unnecessary workaround in standard_lib test (#15522)
### What does this PR try to resolve?

- As issue https://github.com/rust-lang/rust/issues/125246 has already
been fixed, there must be no need for commenting out `--sysroot` anymore
in the tests.

- The bug mentioned in `shared_std_dependency_rebuild()` looks to be
already solved and does not reproduce. So I guess it's safe to
un-comment those lines.
2025-05-20 11:45:38 +00:00