1
Fork 0
Commit graph

262009 commits

Author SHA1 Message Date
bors
1b51d80027 Auto merge of #127799 - Kobzol:bootstrap-cmd-refactor-7, r=onur-ozkan
Bootstrap command refactoring: make command output API more bulletproof (step 7)

Continuation of https://github.com/rust-lang/rust/pull/127680.

This PR modifies the API of running commands to make it more explicit when a command is expected to produce programmatically handled output. Now if you call just `run`, you cannot access the stdout/stderr by accident, because it will not be returned to the caller.

This API change might be seen as overkill, let me know what do you think. In any case, I'd like to land the second commit, to make it harder to accidentally read stdout/stderr of commands that did not capture output (now you'd get an empty string as a result, but you should probably get a panic instead, if you try to read uncaptured stdout/stderr).

Tracking issue: https://github.com/rust-lang/rust/issues/126819

r? `@onur-ozkan`

try-job: x86_64-msvc
2024-07-28 11:40:27 +00:00
Nilstrieb
6f662176e7 Add migration lint for 2024 prelude additions
This adds the migration lint for the newly ambiguous methods `poll` and
`into_future`. When these methods are used on types implementing the
respective traits, it will be ambiguous in the future, which can lead to
hard errors or behavior changes depending on the exact circumstances.
2024-07-28 11:44:03 +02:00
bors
3954398882 Auto merge of #128298 - matthiaskrgr:rollup-0wdu2wo, r=matthiaskrgr
Rollup of 5 pull requests

Successful merges:

 - #127853 (`#[naked]`: report incompatible attributes)
 - #128276 (Add a README to rustbook to explain its purpose)
 - #128279 (Stabilize `is_sorted`)
 - #128282 (bitwise and bytewise methods on `NonZero`)
 - #128285 (rustc book: document how the RUST_TARGET_PATH variable is used)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-07-28 09:18:53 +00:00
Matthias Krüger
b801fab003
Rollup merge of #128285 - lolbinarycat:rustc-custom-targets, r=jieyouxu
rustc book: document how the RUST_TARGET_PATH variable is used

based on the module comment in
rust/compiler/rustc_target/src/spec/mod.rs

Fixes #128280
2024-07-28 08:57:18 +02:00
Matthias Krüger
32f6534c91
Rollup merge of #128282 - pitaj:nonzero_bitwise, r=workingjubilee
bitwise and bytewise methods on `NonZero`

Implementation for `nonzero_bitwise`
Tracking issue #128281
ACP https://github.com/rust-lang/libs-team/issues/413
2024-07-28 08:57:18 +02:00
Matthias Krüger
99204047c9
Rollup merge of #128279 - slanterns:is_sorted, r=dtolnay
Stabilize `is_sorted`

Closes: https://github.com/rust-lang/rust/issues/53485.

~~Question: does~~ 8fe0c753f2/compiler/rustc_lint_defs/src/builtin.rs (L1986-L1994) ~~need a new example?~~
edit: It causes a test failure and needs to be changed anyway.

``@rustbot`` label: +T-libs-api

r? libs-api
2024-07-28 08:57:17 +02:00
Matthias Krüger
13b7c230d8
Rollup merge of #128276 - ehuss:rustbook-readme, r=Kobzol
Add a README to rustbook to explain its purpose

This adds a README to the rustbook tool to help explain what it is for and how to use it.
2024-07-28 08:57:17 +02:00
Matthias Krüger
a13f40dae6
Rollup merge of #127853 - folkertdev:naked-function-error-messages, r=bjorn3
`#[naked]`: report incompatible attributes

tracking issue: https://github.com/rust-lang/rust/issues/90957

this is a re-implementation of https://github.com/rust-lang/rust/pull/93809 by ``@bstrie`` which was closed 2 years ago due to inactivity.

This PR takes some of the final comments into account, specifically providing a little more context in error messages, and using an allow list to determine which attributes are compatible with `#[naked]`.

Notable attributes that are incompatible with `#[naked]` are:

  * `#[inline]`
  * `#[track_caller]`
  * ~~`#[target_feature]`~~ (this is now allowed, see PR discussion)
  * `#[test]`, `#[ignore]`, `#[should_panic]`

These attributes just directly conflict with what `#[naked]` should do.

Naked functions are still important for systems programming, embedded, and operating systems, so I'd like to move them forward.
2024-07-28 08:57:16 +02:00
bors
0bb6fec1c9 Auto merge of #128293 - aDotInTheVoid:github-pls-fix-🏳️‍⚧️, r=Noratrieb
trans her gender

CC https://github.com/rust-lang/team/pull/1511

r? `@Noratrieb`
2024-07-28 06:55:47 +00:00
bors
3148b35f6a Auto merge of #128079 - Oneirical:testiges-of-civilization, r=jieyouxu
Migrate `static-dylib-by-default`, `sanitizer-dylib-link`, `sanitizer-cdylib-link` and `sanitizer-staticlib-link` `run-make` tests to rmake

Part of #121876 and the associated [Google Summer of Code project](https://blog.rust-lang.org/2024/05/01/gsoc-2024-selected-projects.html).

Please try:

try-job: x86_64-msvc
try-job: armhf-gnu
try-job: test-various
try-job: i686-msvc
try-job: x86_64-mingw
try-job: x86_64-gnu-llvm-18
2024-07-28 04:16:12 +00:00
binarycat
5eea6d7542 rustc book: document how the RUST_TARGET_PATH variable is used
based on the module comment in
rust/compiler/rustc_target/src/spec/mod.rs

Fixes #128280
2024-07-27 23:25:13 -04:00
Alona Enraght-Moony
16fc1bbfaf trans her gender
CC https://github.com/rust-lang/team/pull/1511
2024-07-27 23:36:23 +00:00
bors
385a74f50f Auto merge of #128270 - weihanglo:update-cargo, r=weihanglo
Update cargo

14 commits in 5f6b9a92201d78af75dc24f14662c3e2dacbbbe1..b5d44db1daf0469b227a6211b987162a39a54730
2024-07-19 18:09:17 +0000 to 2024-07-26 21:27:12 +0000
- Package workspaces (rust-lang/cargo#13947)
- test: migrate messages to snapbox (rust-lang/cargo#14242)
- chore: Update dependencies (rust-lang/cargo#14299)
- fix: remove rustc probe for `--check-cfg` support (rust-lang/cargo#14302)
- Misc test clean up (rust-lang/cargo#14297)
- Don't downgrade on prerelease `VersionReq` when update with --breaking. (rust-lang/cargo#14250)
- test: Migrate some json tests to snapbox (rust-lang/cargo#14293)
- Revert "fix: Ensure dep/feature activates the dependency on 2024" (rust-lang/cargo#14295)
- chore: bump cargo-test-support to 0.4.0 (rust-lang/cargo#14286)
- Bump to 0.83.0; update changelog (rust-lang/cargo#14285)
- Improved error message when `update --breaking` invalid spec. (rust-lang/cargo#14279)
- docs(test): Expand documentation of cargo-test-support (rust-lang/cargo#14272)
- test: Fix some test based on rustc version (rust-lang/cargo#14282)
- Use `Rc` instead of `Arc` for storing rustflags (rust-lang/cargo#14273)

r? ghost
2024-07-27 23:36:10 +00:00
Ralf Jung
f8ebe8d783 improve dangling/oob errors and make them more uniform 2024-07-27 21:12:54 +02:00
Slanterns
ec0b354092
stabilize is_sorted 2024-07-28 03:11:54 +08:00
Peter Jaszkowiak
c9e408e3f8 bitwise and bytewise methods on NonZero 2024-07-27 13:06:03 -06:00
onur-ozkan
92ca0a6a04 improve check::{Std, Rustc} to handle clippy properly
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-27 21:46:16 +03:00
bors
fbccf50533 Auto merge of #128278 - tgross35:rollup-zv7q0h5, r=tgross35
Rollup of 8 pull requests

Successful merges:

 - #125897 (from_ref, from_mut: clarify documentation)
 - #128207 (improve error message when `global_asm!` uses `asm!` options)
 - #128241 (Remove logic to suggest clone of function output)
 - #128259 ([illumos/solaris] set MSG_NOSIGNAL while writing to sockets)
 - #128262 (Delete `SimplifyArmIdentity` and `SimplifyBranchSame` tests)
 - #128266 (update `rust.channel` default value documentation)
 - #128267 (Add rustdoc GUI test to check title with and without search)
 - #128271 (Disable jump threading of float equality)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-07-27 18:29:13 +00:00
Trevor Gross
f62ae7e120
Rollup merge of #128271 - Nilstrieb:jump-into-a-can-of-worms-called-float-equality, r=compiler-errors
Disable jump threading of float equality

Jump threading stores values as `u128` (`ScalarInt`) and does its comparisons for equality as integer comparisons.
This works great for integers. Sadly, not everything is an integer.

Floats famously have wonky equality semantcs, with `NaN!=NaN` and `0.0 == -0.0`. This does not match our beautiful integer bitpattern equality and therefore causes things to go horribly wrong.

While jump threading could be extended to support floats by remembering that they're floats in the value state and handling them properly, it's signficantly easier to just disable it for now.

fixes #128243
2024-07-27 13:33:00 -04:00
Trevor Gross
8dd94b870d
Rollup merge of #128267 - GuillaumeGomez:gui-test-title, r=notriddle
Add rustdoc GUI test to check title with and without search

Follow-up of https://github.com/rust-lang/rust/pull/128210.

r? `@notriddle`
2024-07-27 13:32:59 -04:00
Trevor Gross
5f3a6035e2
Rollup merge of #128266 - onur-ozkan:update-channel-doc, r=dtolnay
update `rust.channel` default value documentation

self-explanatory

Resolves #128258

r? dtolnay
2024-07-27 13:32:58 -04:00
Trevor Gross
356f190eed
Rollup merge of #128262 - DianQK:remove-unused-tests, r=saethlin
Delete `SimplifyArmIdentity` and `SimplifyBranchSame` tests

These two passes have already been deleted in #107256. I'm not sure why tidy didn't catch it.

As regression tests, I didn't delete `tests/ui/mir/issue-66851.rs` and `tests/ui/mir/simplify-branch-same.rs`.

r? compiler
2024-07-27 13:32:58 -04:00
Trevor Gross
2b58d8c08c
Rollup merge of #128259 - sunshowers:msg-nosignal, r=Mark-Simulacrum
[illumos/solaris] set MSG_NOSIGNAL while writing to sockets

Both these platforms have MSG_NOSIGNAL available, and we should set it for socket writes in the event that the SIGPIPE handler has been reset to SIG_DFL (i.e. terminate the process).

I've verified via a quick program at
https://github.com/sunshowers/msg-nosignal-test/ that even when the SIGPIPE handler is reset to SIG_DFL, writes to closed TCP sockets now error out with EPIPE. (Under ordinary circumstances UDP writes won't cause MSG_NOSIGNAL.)

However, I couldn't find any existing tests which verified the MSG_NOSIGNAL behavior.
2024-07-27 13:32:57 -04:00
Trevor Gross
ee25d99299
Rollup merge of #128241 - compiler-errors:clone-sugg, r=jieyouxu
Remove logic to suggest clone of function output

I can't exactly tell, but I believe that this suggestion is operating off of a heuristic that the lifetime of a function's input is correlated with the lifetime of a function's output in such a way that cloning would fix an error. I don't think that actually manages to hit the bar of "actually provides useful suggestions" most of the time.

Specifically, I've hit false-positives due to this suggestion *twice* when fixing ICEs in the compiler, so I don't think it's worthwhile having this logic around. Neither of the two affected UI tests are actually fixed by the suggestion.
2024-07-27 13:32:57 -04:00
Trevor Gross
9164dbd48c
Rollup merge of #128207 - folkertdev:asm-parser-generalize, r=Amanieu
improve error message when `global_asm!` uses `asm!` options

specifically, what was

    error: expected one of `)`, `att_syntax`, or `raw`, found `preserves_flags`
      --> $DIR/bad-options.rs:45:25
       |
    LL | global_asm!("", options(preserves_flags));
       |                         ^^^^^^^^^^^^^^^ expected one of `)`, `att_syntax`, or `raw`

is now

    error: the `preserves_flags` option cannot be used with `global_asm!`
      --> $DIR/bad-options.rs:45:25
       |
    LL | global_asm!("", options(preserves_flags));
       |                         ^^^^^^^^^^^^^^^ the `preserves_flags` option is not meaningful for global-scoped inline assembly

mirroring the phrasing of the [reference](https://doc.rust-lang.org/reference/inline-assembly.html#options).

This is also a bit of a refactor for a future `naked_asm!` macro (for use in `#[naked]` functions). Currently this sort of error can come up when switching from inline to global asm, or when a user just isn't that experienced with assembly. With  `naked_asm!` added to the mix hitting this error is more likely.
2024-07-27 13:32:56 -04:00
Trevor Gross
51734a8a6d
Rollup merge of #125897 - RalfJung:from-ref, r=Amanieu
from_ref, from_mut: clarify documentation

This was brought up [here](https://github.com/rust-lang/rust/issues/56604#issuecomment-2143193486). The domain of quantification is generally always constrained by the type in the type signature, and I am not sure it's always worth spelling that out explicitly as that makes things exceedingly verbose. But since this was explicitly brought up, let's clarify.
2024-07-27 13:32:56 -04:00
Folkert
33b5ca99b7
add needs-asm-support to tests/ui/asm/unsupported-option.rs 2024-07-27 19:27:20 +02:00
Folkert
c7e688eccd
fix tests/ui/asm/naked-functions.rs for aarch64 2024-07-27 19:18:11 +02:00
Folkert
3e4ddc39b8
update aarch64 asm tests 2024-07-27 19:08:59 +02:00
bors
d9e1dea75e Auto merge of #128091 - heiher:xz-only, r=Mark-Simulacrum
build-manifest: Allow building manifests for formats that only have xz compression
2024-07-27 16:05:22 +00:00
Eric Huss
bad25e3f2c Add a README to rustbook to explain its purpose 2024-07-27 08:54:04 -07:00
Ralf Jung
5b38b149dc miri: fix offset_from behavior on wildcard pointers 2024-07-27 17:18:35 +02:00
Eric Huss
1c98b8f922 Rename require_and_update_submodule to require_submodule
Just trying to be a little less verbose here.
2024-07-27 08:09:03 -07:00
Eric Huss
0f387eb39b Add clarifying documentation to require_and_update_submodule. 2024-07-27 08:06:20 -07:00
Eric Huss
78ee5d057b Change prebuilt_llvm_config to not be required.
I misread this one. It is only checking if LLVM needs to be rebuilt.
There is code below that handles the case where it is unable to compute
the stamp if the source is missing.
2024-07-27 08:06:04 -07:00
Eric Huss
686e27ef49 Change the blanket submodule update for library submodules to be required
These are required 100% of the time, but they are almost always required
for any command that runs Cargo in the main workspace.

Ideally, initializing these two standard library submodules would be
lazy and only initialized when required (see
https://github.com/rust-lang/rust/pull/82653). However, it would require
updating these in almost every Step (anything that runs `cargo` in the
main workspace).
2024-07-27 08:04:46 -07:00
Eric Huss
9b0115c743 Consistently use a string to represent a submodule.
This makes it easier to call these functions without needing to form a
Path.
2024-07-27 08:02:06 -07:00
Eric Huss
f76ab647d3 Add more descriptions to why submodules are required. 2024-07-27 07:59:37 -07:00
Eric Huss
5ebb821fa9 Fix mistake setting ONLY_HOSTS for Reference.
This was a copy/paste mistake.
2024-07-27 07:57:50 -07:00
Nilstrieb
f305e18804 Disable jump threading of float equality
Jump threading stores values as `u128` (`ScalarInt`) and does its
comparisons for equality as integer comparisons.
This works great for integers. Sadly, not everything is an integer.

Floats famously have wonky equality semantcs, with `NaN!=NaN` and
`0.0 == -0.0`. This does not match our beautiful integer bitpattern
equality and therefore causes things to go horribly wrong.

While jump threading could be extended to support floats by remembering
that they're floats in the value state and handling them properly,
it's signficantly easier to just disable it for now.
2024-07-27 15:11:59 +02:00
Weihang Lo
b9ec04da4d
Update cargo 2024-07-27 08:58:02 -04:00
bors
8fe0c753f2 Auto merge of #128006 - tgross35:missing-fragment-specifier-e2024, r=petrochenkov
Make `missing_fragment_specifier` an error in edition 2024

`missing_fragment_specifier` has been a future compatibility warning since 2017. Uplifting it to an unconditional hard error was attempted in 2020, but eventually reverted due to fallout.

Make it an error only in edition >= 2024, leaving the lint for older editions. This change will make it easier to support more macro syntax that relies on usage of `$`.

Fixes <https://github.com/rust-lang/rust/issues/40107>

---

It is rather late for the edition but since this change is relatively small, it seems worth at least bringing up. This follows a brief [Zulip discussion](https://rust-lang.zulipchat.com/#narrow/stream/268952-edition/topic/.60.20DBD.20-.3E.20hard.20error) (cc `@tmandry).`

Making this an edition-dependent lint has come up before but there was not a strong motivation. I am proposing it at this time because this would simplify the [named macro capture groups](https://github.com/rust-lang/rfcs/pull/3649) RFC, which has had mildly positive response, and makes use of new `$` syntax in the matcher. The proposed syntax currently parses as metavariables without a fragment specifier; this warning is raised, but there are no errors.

It is obviously not known that this specific RFC will eventually be accepted, but forbidding `missing_fragment_specifier` should make it easier to support any new syntax in the future that makes use of `$` in different ways. The syntax conflict is also not impossible to overcome, but making it clear that unnamed metavariables are rejected makes things more straightforward and should allow for better diagnostics.

`@Mark-Simulacrum` suggested making this forbid-by-default instead of an error at https://github.com/rust-lang/rust/issues/40107#issuecomment-761727885, but I don't think this would allow the same level of syntax flexibility.

It is also possible to reconsider making this an unconditional error since four years have elapsed since the previous attempt, but this seems likely to hit the same pitfalls. (Possibly worth a crater run?)

Tracking:

- https://github.com/rust-lang/rust/issues/128143
2024-07-27 12:35:18 +00:00
onur-ozkan
d94e7ff065 refactor cargo invocations with strongly-typed subcommand
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-27 15:22:25 +03:00
Folkert
a3bb0104ff
allow #[target_feature] on #[naked] functions 2024-07-27 12:56:20 +02:00
Folkert
c6a166bac2
switch to an allowlist approach
- merge error codes
- use attribute name that is incompatible in error message
- add test for conditional incompatible attribute
- add `linkage` to the allowlist
2024-07-27 12:55:39 +02:00
Guillaume Gomez
015f5d6f76 Add rustdoc GUI test to check title with and without search 2024-07-27 12:12:16 +02:00
bors
3942254d00 Auto merge of #124905 - reitermarkus:u32-from-char-opt, r=scottmcm
Allow optimizing `u32::from::<char>`.

Extracted from https://github.com/rust-lang/rust/pull/124307.

This allows optimizing the panicking branch in the `escape_unicode` function, see https://rust.godbolt.org/z/61YhKrhvP.
2024-07-27 09:34:26 +00:00
Trevor Gross
8c402f125c Make missing_fragment_specifier an error in edition 2024
`missing_fragment_specifier` has been a future compatibility warning
since 2017. Uplifting it to an unconditional hard error was attempted in
2020, but eventually reverted due to fallout.

Make it an error only in edition >= 2024, leaving the lint for older
editions. This change will make it easier to support more macro syntax
that relies on usage of `$`.

Fixes <https://github.com/rust-lang/rust/issues/40107>
2024-07-27 05:33:24 -04:00
onur-ozkan
139a713dc0 add change entry for rust.channel defaults
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-27 11:08:37 +03:00
onur-ozkan
1140750f6e update rust.channel documentation
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-07-27 11:08:29 +03:00