about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2025-07-16Auto merge of #144019 - RalfJung:miri-sync, r=RalfJungbors-590/+1149
Miri subtree update r? `@ghost`
2025-07-16use `codegen_instance_attrs` where an instance is (easily) availableFolkert de Vries-2/+2
2025-07-16set S-waiting-on labels on new PRsRalf Jung-0/+6
2025-07-16triagebot: tweak welcome messageRalf Jung-9/+4
2025-07-16go over invariants again :3lcnr-33/+48
Co-authored-by: Boxy <rust@boxyuwu.dev>
2025-07-17Add tailexpr & -> &mut for generate_mut_trait_implA4-Tacks-5/+20
2025-07-16Merge pull request #19917 from A4-Tacks/ext-generate-mutShoyu Vanilla (Flint)-28/+93
Add AsRef and Borrow for generate_mut_trait_impl
2025-07-16Rollup merge of #143968 - Stypox:tracing-FnAbiOf, r=RalfJungSamuel Tardieu-1/+1
Add tracing to `InterpCx::fn_abi_of_instance/fn_abi_of_fn_ptr` This PR adds tracing to the `InterpCx::fn_abi_of_instance`/`::fn_abi_of_fn_ptr` functions by shadowing `FnAbiOf`'s trait methods with inherent methods on `InterpCx`, like done in rust-lang/rust#142721. The reason why I am targeting these two functions is because they are used for Miri interpretation, and they make a `layout_of` query down the line without passing through the `layout_of` that was traced in rust-lang/rust#142721. There are other places where `layout_of` is called without being traced (see the analysis below), but that's because the `Machine` used there is not `MiriMachine` but rather `CompileTimeMachine` which does not implement `enter_trace_span()`. But after discussing with ```````@RalfJung``````` we agreed that the const-eval part should not be traced together with Miri, that's why I am ignoring the other places where `layout_of` is called. r? ```````@RalfJung``````` <details><summary>Analysis of the places where <code>layout_of</code> is called</summary> I did some analysis for https://github.com/rust-lang/rust/pull/142721#discussion_r2171494841, and these are all the places where the query `tcx.layout_of` is called (directly or indirectly) outside of a traced `InterpCx::layout_of` while a program is being interpreted by Miri: ``` adjust_for_rust_scalar at ./compiler/rustc_ty_utils/src/abi.rs:302:35 {closure#2} at ./compiler/rustc_ty_utils/src/abi.rs:522:25 eval_body_using_ecx<> at ./compiler/rustc_const_eval/src/const_eval/eval_queries.rs:49:22 {closure#1}<> at ./compiler/rustc_const_eval/src/interpret/operand.rs:851:76 {closure#0}<> at ./compiler/rustc_const_eval/src/interpret/stack.rs:612:18 size_and_align at ./compiler/rustc_middle/src/mir/interpret/mod.rs:387:38 ``` I got these by: - patching rustc with this patch that adds a span to the `layout_of` query which prints the backtrace: [layout_of_other_places.diff.txt](https://github.com/user-attachments/files/21235523/layout_of_other_places.diff.txt) - adding this to my bootstrap.toml to have debug symbols inside the Miri binary: `rust.debuginfo-level = "line-tables-only"` and also `build.tool.miri.features = ["tracing"]` - obtaining a trace file with `MIRI_TRACING=1 ./x.py run miri --stage 1 --warnings warn --args src/tools/miri/tests/pass/hello.rs` (note: maybe using a file different than "src/tools/miri/tests/pass/hello.rs" would lead to more places where layout_of is called?) - running this query in Perfetto to select all `layout_of` spans that have as a direct parent a span named "frame" (as opposed to the parent being `InterpCx::layout_of`) and extract their backtrace: `select args.string_value from slice left join args on slice.arg_set_id = args.id where slice.name = "tcx.layout_of" and slice.parent_id in (select slice2.id from slice as slice2 where slice2.name = "frame") group by args.string_value` - exporting the data as `.tsv` and processing that file through this Python script. It finds the first path in the backtraces where "layout" isn't mentioned, which imo is a good heuristic to not consider `layout_of` wrappers/friends as call places, but rather go down the backtrace until an actual call place is reached. [layout_of_other_places.py.txt](https://github.com/user-attachments/files/21235529/layout_of_other_places.py.txt) </details>
2025-07-16Rollup merge of #143957 - samueltardieu:tidy-filenames, r=KobzolSamuel Tardieu-0/+43
tidy: check for invalid file names Check for file names added to git with: - non-UTF8 filenames (this would fail "fmt check" with a decoding error for the moment, but maybe we should not count on it as it is an accidental failure) - control characters (such as "\n" or "\r" in file names) - ":" (which is a special character on Windows, made rust-lang/rust#142936 fail in bors while it could have be caught earlier) It only checks files known by git as a developer might want to have "strange" file names alongside their local repository as long as they don't check them in. r? jieyouxu as he stumbled upon such a file in rust-lang/rust#142936
2025-07-16Rollup merge of #143948 - ehuss:update-mdbook, r=Mark-SimulacrumSamuel Tardieu-3/+3
Update mdbook to 0.4.52 Changelog: https://github.com/rust-lang/mdBook/blob/master/CHANGELOG.md#mdbook-0452 This primarily picks up a few fixes.
2025-07-16Rollup merge of #143939 - he32:netbsd-maintainers, r=jieyouxuSamuel Tardieu-1/+2
Add 0323pin as maintainer of NetBSD targets, fix link to pkgsrc-wip and explain.
2025-07-16Rollup merge of #143692 - RalfJung:miri-oob, r=oli-obkSamuel Tardieu-0/+53
miri: fix out-of-bounds error for ptrs with negative offsets r? ```````@oli-obk```````
2025-07-16Rollup merge of #143448 - Enselic:remote-test-client-signals, r=Mark-SimulacrumSamuel Tardieu-1/+3
remote-test-client: Exit code `128 + <signal-number>` instead of `3` If the remote process is terminated by a signal, make `remote-test-client` exit with the code `128 + <signal-number>` instead of always `3`. This follows common practice among tools such as bash [^1]: > When a command terminates on a fatal signal whose number is N, Bash uses the > value 128+N as the exit status. It also allows us to differentiate between `run-pass` and `run-crash` ui tests without special case code in compiletest for that when `remote-test-client` is used. See https://github.com/rust-lang/rust/pull/143002 and in particular https://github.com/rust-lang/rust/pull/143002#issuecomment-3037061667. Exiting with code `3` has been done from the start (see https://github.com/rust-lang/rust/pull/39400) and seems arbitrary rather than a deliberate design decision, so changing it does not seem like an extraordinarily big deal. ### Regression testing Note that https://github.com/rust-lang/rust/pull/143002 will act as a regression test once it is rebased on this PR. ### Why a separate PR I think it is comforting to know that CI does not break with just this change. But if my reviewer prefers, we can move this commit to be part of https://github.com/rust-lang/rust/pull/143002 instead. [^1]: https://www.gnu.org/software/bash/manual/html_node/Exit-Status.html
2025-07-16Rollup merge of #142936 - aDotInTheVoid:rdj-shatts-forrealthistime, ↵Samuel Tardieu-65/+212
r=GuillaumeGomez rustdoc-json: Structured attributes Implements and closes rust-lang/rust#141358. This has 2 primary benefits. 1. For rustdoc-json consumers, they no longer need to parse strings of attributes, but it's there in a structured and normalized way. CC ```@obi1kenobi``` 2. For rustc conributors, the output of HIR pretty printing is no longer a versioned thing in the output. People can work on rust-lang/rust#131229 without needing to bump `FORMAT_VERSION`. CC ```@jdonszelmann``` ```@JonathanBrouwer.``` (Over time, as the attribute refractor continues, I expect we'll add new things to `rustdoc_json_types::Attribute`. But this can be done separately to the rustc changes). Todo before being mergable: - [x] Update test assertions. - [x] Fix modeling of `#[repr]`. - [ ] ~~Add tests of `#[doc(hidden)]` in `Item::attrs` (probably in a seperate PR).~~ I'm gonna punt this to a future PR - [x] Documentation.
2025-07-16Add AsMut to minicore prelude::v1A4-Tacks-0/+1
2025-07-16Update rustdoc search tester to new alias outputGuillaume Gomez-25/+46
2025-07-16Make aliases search support partial matchingGuillaume Gomez-74/+83
2025-07-16triagebot welcome message for new usersRalf Jung-1/+12
2025-07-16Use hir::Trait in parameterA4-Tacks-37/+24
2025-07-16Merge pull request #4459 from ibraheemdev/ibraheem/global-ctorRalf Jung-30/+216
Add support for global constructors (i.e. life before main)
2025-07-16minor tweaks and commentsRalf Jung-25/+35
2025-07-16Remove redundant type parametersA4-Tacks-4/+4
2025-07-16Add AsRef and Borrow for generate_mut_trait_implA4-Tacks-18/+96
- AsRef -> AsMut - Borrow -> BorrowMut Example ==================== ```rust //- minicore: as_ref struct Foo(i32); impl<T> core::convert::AsRef$0<i32> for Foo { fn as_ref(&self) -> &i32 { &self.0 } } ``` -> ```rust struct Foo(i32); $0impl<T> core::convert::AsMut<i32> for Foo { fn as_mut(&mut self) -> &mut i32 { &self.0 } } impl<T> core::convert::AsRef<i32> for Foo { fn as_ref(&self) -> &i32 { &self.0 } } ```
2025-07-16Merge pull request #4456 from nia-e/trace-incorporate-eventsRalf Jung-25/+314
trace: incorporate events
2025-07-16update comment to reference legacy `.ctors` sectionIbraheem Ahmed-1/+1
Co-authored-by: Ralf Jung <post@ralfj.de>
2025-07-16hook up native-lib bitsNia Espera-25/+314
2025-07-16Make frame spans appear on a separate trace lineStypox-21/+51
This was done by making the tracing_chrome tracing layer check if "tracing_separate_line" was in the arguments of a span, and act accordingly.
2025-07-16Boostrap: add warning on `optimize = false`Edoardo Marangoni-0/+8
2025-07-15Update cargoEric Huss-0/+0
2025-07-15add test for global constructorsIbraheem Ahmed-0/+43
2025-07-15add support for global constructors (i.e. life before main)Ibraheem Ahmed-32/+165
2025-07-15ci cleanup: rustdoc-gui-test now installs browser-ui-testbinarycat-100/+44
this removes the need for --unsafe-perm in the Dockerfile.
2025-07-15Clarify commentsJakub Beránek-2/+3
2025-07-15rustdoc-json: Structured attributesAlona Enraght-Moony-65/+212
Implements https://www.github.com/rust-lang/rust/issues/141358. This has 2 primary benefits: 1. For rustdoc-json consumers, they no longer need to parse strings of attributes, but it's there in a structured and normalized way. 2. For rustc contributors, the output of HIR pretty printing is no longer a versioned thing in the output. People can work on https://github.com/rust-lang/rust/issues/131229 without needing to bump `FORMAT_VERSION`. (Over time, as the attribute refractor continues, I expect we'll add new things to `rustdoc_json_types::Attribute`. But this can be done separately to the rustc changes).
2025-07-15update change tracking with warning on removal of fields.bit-aloo-0/+5
2025-07-15remove ccache from llvmbit-aloo-17/+3
2025-07-15remove description from rust toml structbit-aloo-21/+3
2025-07-15Merge pull request #20178 from ShoyuVanilla/cargo-config-cleanupShoyu Vanilla (Flint)-374/+419
chore: Cleanup cargo config queries
2025-07-15Consider outlives assumptions when proving auto traits for coroutine interiorsMichael Goulet-2/+0
2025-07-15Add `0323pin` as target maintainer, and fix link to pkgsrc-wip and explain.Havard Eidnes-1/+2
2025-07-15Format and bump rustc cratesLaurențiu Nicola-32/+30
2025-07-15Merge pull request #4469 from Patrick-6/add-spinloop-hintsRalf Jung-15/+31
Add std::hint::spin_loop() to tests
2025-07-15Merge from rust-lang/rustLaurențiu Nicola-4626/+10421
2025-07-15Preparing for merge from rust-lang/rustLaurențiu Nicola-1/+1
2025-07-15Fix handling of SCRIPT_ARG in docker imagesNikita Popov-41/+32
Instead of making this a build parameter, pass the SCRIPT as an environment variable. To this purpose, normalize on always referring to a script in `/scripts`. For i686-gnu-nopt-2 I had to create a separate script, because Docker seems to be really terrible at command line argument parsing, so it's not possible to pass an environment variable that contains whitespace.
2025-07-15Make spin function naming more consistentPatrick-6-17/+17
2025-07-15Further decrease number of `cargo metadata` invokesShoyu Vanilla-243/+270
2025-07-15chore: Cleanup cargo config queriesShoyu Vanilla-133/+151
2025-07-15Implement other logicstiif-1/+2
2025-07-15Merge pull request #4452 from Stypox/trace-borrow-trackerRalf Jung-1/+62
Add tracing spans to borrow tracker functions