-
Notifications
You must be signed in to change notification settings - Fork 13k
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
Rollup of 10 pull requests #134108
Rollup of 10 pull requests #134108
Conversation
- Add test for issue 47446 - Implement the new lint lint_builtin_mixed_export_name_and_no_mangle - Add suggestion how to fix it
When upgrading [Zed](zed-industries/zed#19349) to Rust 1.82 I've encountered a test failure in our test suite. Specifically, one of our extension tests started hanging. I've tracked it down to a call to std::fs::remove_dir_all not returning when an extension is compiled with Rust 1.82 Our extension system uses WASM components, thus I've looked at the diff between 1.81 and 1.82 with respect to WASI and found 736f773 As it turned out, calling remove_dir_all from extension returned io::ErrorKind::NotFound in 1.81; the underlying issue is that the ReadDir iterator never actually terminates iteration, however since it loops around, with 1.81 we'd come across an entry second time and fail to remove it, since it would've been removed previously. With 1.82 and 736f773 it is no longer the case, thus we're seeing the hang. This commit makes ReadDir::next adhere to readdir contract, namely it will no longer call readdir once the returned # of bytes is smaller than the size of a passed-in buffer. Previously we'd only terminate the loop if readdir returned 0.
The target has support for pthreads and allows registration of TLS destructors.
Signed-off-by: onur-ozkan <work@onurozkan.dev>
Signed-off-by: onur-ozkan <work@onurozkan.dev>
Signed-off-by: onur-ozkan <work@onurozkan.dev>
This query (`coverage_ids_info`) already determines which counter/expression IDs are unused, so it only takes a little extra effort to also determine which counters/expressions must have a value of zero.
The information that was being collected by this builder type is now collected by the `coverage_ids_info` query instead.
commit suggestion of not always pretty printing Co-authored-by: Urgau <3616612+Urgau@users.noreply.github.com>
this makes it so files in `src/nix-dev-shell` are *not* ignored, as they should not be. note that `flake.lock` is still ignored globally.
this is no longer needed as `.gitignore` contains both `/.envrc` and `flake.lock` (and also `/.direnv/`)
`libz.so.1` is needed for some (?) things... i personally found myself in need of it when running `x t linkchecker`, which failed when running cargo build script or something. although there are also mentions of rustc itself needing it: <NixOS/nixpkgs#92946>
…together-with-export-name, r=Urgau Lint on combining `#[no_mangle]` and `#[export_name]` This is my very first contribution to the compiler, even though I read the [chapter about lints](https://rustc-dev-guide.rust-lang.org/diagnostics.html) I'm not very certain that this ~~new lint is done right as a builtin lint~~ PR is right. I appreciate any guidance on how to improve the code. - Add test for issue rust-lang#47446 - ~~Implement the new lint `mixed_export_name_and_no_mangle` as a builtin lint (not sure if that is the right way to go)~~ Extend `unused_attributes` lint - Add suggestion how to fix it <details> <summary>Old proposed new lint</summary> > The `mixed_export_name_and_no_mangle` lint detects usage of both `#[export_name]` and `#[no_mangle]` on the same item which results on `#[no_mangle]` being ignored. > > *warn-by-default* > > ### Example > > ```rust > #[no_mangle] // ignored > #[export_name = "foo"] // takes precedences > pub fn bar() {} > ``` > > ### Explanation > > The compiler will not respect the `#[no_mangle]` attribute when generating the symbol name for the function, as the `#[export_name]` attribute takes precedence. This can lead to confusion and is unnecessary. </details>
…-remove-dir-all, r=Noratrieb wasi/fs: Improve stopping condition for <ReadDir as Iterator>::next When upgrading [Zed](zed-industries/zed#19349) to Rust 1.82 I've encountered a test failure in our test suite. Specifically, one of our extension tests started hanging. I've tracked it down to a call to std::fs::remove_dir_all not returning when an extension is compiled with Rust 1.82 Our extension system uses WASM components, thus I've looked at the diff between 1.81 and 1.82 with respect to WASI and found 736f773 As it turned out, calling remove_dir_all from extension returned io::ErrorKind::NotFound in 1.81; the underlying issue is that the ReadDir iterator never actually terminates iteration, however since it loops around, with 1.81 we'd come across an entry second time and fail to remove it, since it would've been removed previously. With 1.82 and 736f773 it is no longer the case, thus we're seeing the hang. The tests do pass when everything but the extensions is compiled with 1.82. This commit makes ReadDir::next adhere to readdir contract, namely it will no longer call readdir once the returned # of bytes is smaller than the size of a passed-in buffer. Previously we'd only terminate the loop if readdir returned 0.
Add licenses + Run `cargo update` Replaces rust-lang#131311 try-job: dist-x86_64-linux License changes: - `unicode_ident` 1.0.14 introduces `(MIT OR Apache-2.0) AND Unicode-3.0`, but `unicode_ident` 1.0.12 (`(MIT OR Apache-2.0) AND Unicode-DFS-2016`) is still in tree - `instant` and its license exception are no longer used ``` compiler & tools dependencies: Updating allocator-api2 v0.2.18 -> v0.2.20 Updating anyhow v1.0.92 -> v1.0.93 Removing bitflags v1.3.2 Updating blake3 v1.5.4 -> v1.5.5 Updating bstr v1.10.0 -> v1.11.0 Updating bytes v1.8.0 -> v1.9.0 Updating cargo-platform v0.1.8 -> v0.1.9 Updating cc v1.2.0 -> v1.2.2 Updating clap v4.5.20 -> v4.5.21 Updating clap_builder v4.5.20 -> v4.5.21 Updating clap_complete v4.5.36 -> v4.5.38 Updating clap_lex v0.7.2 -> v0.7.3 Updating color-print v0.3.6 -> v0.3.7 Updating color-print-proc-macro v0.3.6 -> v0.3.7 Updating cpufeatures v0.2.14 -> v0.2.16 Updating curl-sys v0.4.77+curl-8.10.1 -> v0.4.78+curl-8.11.0 Updating errno v0.3.9 -> v0.3.10 Updating fastrand v2.1.1 -> v2.2.0 Updating flate2 v1.0.34 -> v1.0.35 Updating handlebars v5.1.2 -> v6.2.0 Adding icu_collections v1.5.0 Adding icu_normalizer v1.5.0 Adding icu_normalizer_data v1.5.0 Adding icu_properties v1.5.1 Adding icu_properties_data v1.5.0 Updating idna v0.5.0 -> v1.0.3 Adding idna_adapter v1.2.0 Updating indexmap v2.6.0 -> v2.7.0 Updating indicatif v0.17.8 -> v0.17.9 Removing instant v0.1.13 Updating itoa v1.0.11 -> v1.0.14 Updating js-sys v0.3.72 -> v0.3.74 Updating libc v0.2.164 -> v0.2.167 Updating libloading v0.8.5 -> v0.8.6 Updating litemap v0.7.3 -> v0.7.4 Updating mdbook v0.4.40 -> v0.4.43 Adding num-modular v0.6.1 Adding num-order v1.2.0 Updating pathdiff v0.2.2 -> v0.2.3 Updating portable-atomic v1.9.0 -> v1.10.0 Updating proc-macro2 v1.0.89 -> v1.0.92 Updating regex-automata v0.4.8 -> v0.4.9 Updating rustc-hash v2.0.0 -> v2.1.0 Updating rustc_apfloat v0.2.1+llvm-462a31f5a5ab -> v0.2.2+llvm-462a31f5a5ab Updating rustix v0.38.38 -> v0.38.41 Updating schannel v0.1.26 -> v0.1.27 Updating serde v1.0.214 -> v1.0.215 Updating serde_derive v1.0.214 -> v1.0.215 Updating serde_json v1.0.132 -> v1.0.133 Updating socket2 v0.5.7 -> v0.5.8 Updating spdx v0.10.6 -> v0.10.7 Updating syn v2.0.87 -> v2.0.90 Updating tempfile v3.13.0 -> v3.14.0 Updating terminal_size v0.4.0 -> v0.4.1 Updating thiserror v1.0.66 -> v1.0.69 (available: v2.0.3) Updating thiserror-impl v1.0.66 -> v1.0.69 Updating tokio v1.41.0 -> v1.41.1 Updating tracing-attributes v0.1.27 -> v0.1.28 Updating tracing-error v0.2.0 -> v0.2.1 Removing unicode-bidi v0.3.17 Updating unicode-ident v1.0.13 -> v1.0.14 Updating url v2.5.2 -> v2.5.4 Adding utf16_iter v1.0.5 Adding utf8_iter v1.0.4 Updating wasm-bindgen v0.2.95 -> v0.2.97 Updating wasm-bindgen-backend v0.2.95 -> v0.2.97 Updating wasm-bindgen-macro v0.2.95 -> v0.2.97 Updating wasm-bindgen-macro-support v0.2.95 -> v0.2.97 Updating wasm-bindgen-shared v0.2.95 -> v0.2.97 Updating wasm-encoder v0.220.0 -> v0.221.0 Adding wasmparser v0.221.0 Updating wast v219.0.1 -> v221.0.0 Updating wat v1.219.1 -> v1.221.0 Adding web-time v1.1.0 Adding write16 v1.0.0 Updating yoke v0.7.4 -> v0.7.5 Updating yoke-derive v0.7.4 -> v0.7.5 Updating zerofrom v0.1.4 -> v0.1.5 Updating zerofrom-derive v0.1.4 -> v0.1.5 library dependencies: Updating allocator-api2 v0.2.18 -> v0.2.20 Updating cc v1.2.0 -> v1.2.2 Updating libc v0.2.162 -> v0.2.164 Updating unwinding v0.2.3 -> v0.2.4 rustbook dependencies: Updating anstream v0.6.17 -> v0.6.18 Updating anyhow v1.0.92 -> v1.0.93 Updating bstr v1.10.0 -> v1.11.0 Updating cc v1.2.0 -> v1.2.2 Updating clap v4.5.20 -> v4.5.21 Updating clap_builder v4.5.20 -> v4.5.21 Updating clap_complete v4.5.36 -> v4.5.38 Updating clap_lex v0.7.2 -> v0.7.3 Updating cpufeatures v0.2.14 -> v0.2.16 Adding displaydoc v0.2.5 Updating errno v0.3.9 -> v0.3.10 Updating fastrand v2.1.1 -> v2.2.0 Updating flate2 v1.0.34 -> v1.0.35 Updating hashbrown v0.15.0 -> v0.15.2 Adding icu_collections v1.5.0 Adding icu_locid v1.5.0 Adding icu_locid_transform v1.5.0 Adding icu_locid_transform_data v1.5.0 Adding icu_normalizer v1.5.0 Adding icu_normalizer_data v1.5.0 Adding icu_properties v1.5.1 Adding icu_properties_data v1.5.0 Adding icu_provider v1.5.0 Adding icu_provider_macros v1.5.0 Updating idna v0.5.0 -> v1.0.3 Adding idna_adapter v1.2.0 Updating indexmap v2.6.0 -> v2.7.0 Updating itoa v1.0.11 -> v1.0.14 Updating js-sys v0.3.72 -> v0.3.74 Updating libc v0.2.161 -> v0.2.167 Adding litemap v0.7.4 Updating mdbook v0.4.42 -> v0.4.43 Updating pathdiff v0.2.2 -> v0.2.3 Updating proc-macro2 v1.0.89 -> v1.0.92 Updating regex-automata v0.4.8 -> v0.4.9 Updating rustix v0.38.38 -> v0.38.41 Updating serde v1.0.214 -> v1.0.215 Updating serde_derive v1.0.214 -> v1.0.215 Updating serde_json v1.0.132 -> v1.0.133 Adding stable_deref_trait v1.2.0 Updating syn v2.0.87 -> v2.0.90 Adding synstructure v0.13.1 Updating tempfile v3.13.0 -> v3.14.0 Updating terminal_size v0.4.0 -> v0.4.1 Updating thiserror v1.0.66 -> v1.0.69 Updating thiserror-impl v1.0.66 -> v1.0.69 Adding tinystr v0.7.6 Removing tinyvec v1.8.0 Removing tinyvec_macros v0.1.1 Removing unicode-bidi v0.3.17 Updating unicode-ident v1.0.13 -> v1.0.14 Removing unicode-normalization v0.1.24 Updating url v2.5.2 -> v2.5.4 Adding utf16_iter v1.0.5 Adding utf8_iter v1.0.4 Updating wasm-bindgen v0.2.95 -> v0.2.97 Updating wasm-bindgen-backend v0.2.95 -> v0.2.97 Updating wasm-bindgen-macro v0.2.95 -> v0.2.97 Updating wasm-bindgen-macro-support v0.2.95 -> v0.2.97 Updating wasm-bindgen-shared v0.2.95 -> v0.2.97 Adding write16 v1.0.0 Adding writeable v0.5.5 Adding yoke v0.7.5 Adding yoke-derive v0.7.5 Adding zerofrom v0.1.5 Adding zerofrom-derive v0.1.5 Adding zerovec v0.10.4 Adding zerovec-derive v0.10.3 ```
Run TLS destructors for wasm32-wasip1-threads The target wasm32-wasip1-threads has support for pthreads and allows registration of TLS destructors. For spawned threads, this registers Rust TLS destructors by creating a pthreads key with an attached destructor function. For the main thread, this registers an `atexit` handler to run the TLS destructors. try-job: test-various
…-dist-build, r=Kobzol use vendor sources by default on dist tarballs Tarball sources are distributed with vendor sources along with the `.cargo/config.toml` file configured for vendor sources. This means we can use vendor sources by default unless explicitly disabled with `build.vendor=false` by the user. So, let's do that.
coverage: Prefer to visit nodes whose predecessors have been visited In coverage instrumentation, we need to traverse the control-flow graph and decide what kind of counter (physical counter or counter-expression) should be used for each node that needs a counter. The existing traversal order is complex and hard to tweak. This new traversal order tries to be a bit more principled, by always preferring to visit nodes whose predecessors have already been visited, which is a good match for how the counter-creation code ends up dealing with a node's in-edges and out-edges. For several of the coverage tests, this ends up being a strict improvement in reducing the size of the coverage metadata, and also reducing the number of physical counters needed. (The new traversal should hopefully also allow some further code simplifications in the future.) --- This is made possible by the separate simplification pass introduced by rust-lang#133849. Without that, almost any change to the traversal order ends up increasing the size of the expression table or the number of physical counters.
@bors r+ rollup=never p=5 |
☀️ Test successful - checks-actions |
📌 Perf builds for each rolled up PR:
previous master: b597d2a099 In the case of a perf regression, run the following command for each PR you suspect might be the cause: |
Finished benchmarking commit (4996052): comparison URL. Overall result: ❌✅ regressions and improvements - please read the text belowOur benchmarks found a performance regression caused by this PR. Next Steps:
@rustbot label: +perf-regression Instruction countThis is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.
Max RSS (memory usage)Results (primary -1.8%, secondary -1.8%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResults (primary 6.6%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeResults (secondary -0.0%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Bootstrap: 767.346s -> 768.862s (0.20%) |
@rust-timer build 7a5a821 |
This comment has been minimized.
This comment has been minimized.
Finished benchmarking commit (7a5a821): comparison URL. Overall result: ❌ regressions - no action neededInstruction countThis is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.
Max RSS (memory usage)Results (primary 4.5%, secondary 2.4%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
CyclesResults (primary 6.8%, secondary 2.2%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Binary sizeResults (secondary -0.0%)This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.
Bootstrap: 767.346s -> 766.807s (-0.07%) |
Started a perf. run in #131558. |
The most obvious candidates did not show any regressions, and the regression is small enough that I think that this does not need further investigation. @rustbot label: +perf-regression-triaged |
Successful merges:
#[no_mangle]
and#[export_name]
#131558 (Lint on combining#[no_mangle]
and#[export_name]
)cargo update
#133456 (Add licenses + Runcargo update
)r? @ghost
@rustbot modify labels: rollup
Create a similar rollup