Repository navigation
chore: update rust to 1.88.0 - #6045
Merged
Merged
Conversation
Contributor
|
Run URL: https://github.com/dfinity/ic/actions/runs/16491669432 New container image: |
Contributor
|
Run URL: https://github.com/dfinity/ic/actions/runs/16492087374 New container image: |
…e2c8104697f863585ad0ce70aab41f Image tag: 81b0a98486c17991e211deda54c717bfff6427ff14924bf746d5f8fd6cfb9179
…edc2a273a700eabd0670dc489d809c Image tag: 16e06bf3c56bdcc50674a64be074337acee526d41ac785780ae4a9835a6a637b
kpop-dfinity
force-pushed
the
kpop/rust_1_88
branch
from
July 25, 2025 08:10
7ab3bb8 to
6267318
Compare
* Fix `//rs/execution_environment:execution_environment_misc_integration_tests/backtraces_test` tests * Fix `//publish/canisters:sns-governance-canister.wasm.gz_size_check` test * Update benchmark reults
dsarlis
approved these changes
Jul 25, 2025
blind-oracle
approved these changes
Jul 25, 2025
Bownairo
approved these changes
Jul 25, 2025
mraszyk
approved these changes
Jul 25, 2025
gregorydemay
approved these changes
Jul 28, 2025
altkdf
approved these changes
Jul 28, 2025
kpop-dfinity
dismissed
github-actions[bot]’s stale review
July 28, 2025 08:12
No canister behavior changes.
Sawchord
approved these changes
Jul 28, 2025
tojot-dfinity
approved these changes
Jul 28, 2025
mihailjianu1
approved these changes
Jul 29, 2025
daniel-wong-dfinity-org
approved these changes
Jul 31, 2025
valorjesson-commits
pushed a commit
to valorjesson-commits/ic
that referenced
this pull request
Oct 3, 2026
… 1.99.0 (dfinity#11734) `cargo clippy` fixes to prepare for upgrading to [rustc-1.99.0](https://blog.rust-lang.org/2026/10/01/Rust-1.99.0/). Clippy 0.1.99 and rustc 1.99.0 report diagnostics at **124 sites** that 1.98.1 does not, in 67 source files plus 5 tonic-generated ones. 107 of these sites are clippy false positives in macro-generated code; the other 17 are fixed in the code: | lint | sites | why it fires now | fix | | --- | --: | --- | --- | | [`double_must_use`](https://rust-lang.github.io/rust-clippy/rust-1.99.0/index.html#double_must_use) | 66 | [#16633](rust-lang/rust-clippy#16633) makes clippy use rustc's `#[must_use]` determination. Clippy now sees that the `Pin<Box<dyn Future>>` an `#[async_trait]` method returns is already `#[must_use]`, and flags the `#[must_use]` that async-trait adds to it. That hits every one of the 61 `#[async_trait]` traits in the workspace, plus 5 tonic-generated ones (141 diagnostics, one per async method) | `--allow` (see below) | | [`redundant_field_names`](https://rust-lang.github.io/rust-clippy/rust-1.99.0/index.html#redundant_field_names) | 41 | [#17294](rust-lang/rust-clippy#17294) moved the macro check from the struct expression to its fields. In derive output the fields' spans point at user code: thiserror's `From` impl for `#[from] source` fields (16) and `derive_new::new` (25, all in `ic_boundary`) | `--allow` (see below) | | `deprecated` (rustc) | 13 | [rust#148590](rust-lang/rust#148590) deprecates `Atomic*::fetch_update` in favour of its new name `try_update` (3). [rust#146882](rust-lang/rust#146882) fully deprecates the legacy `std::f32`/`std::f64` module constants, which `use std::f32;`/`use std::f64;` made `f32::NAN` etc. resolve to (10) | `fetch_update` → `try_update`; drop `use std::f64;` from `metrics_proxy` and `use std::f32;`/`use std::f64;` from `nan_canonicalized` (see below) | | [`nonstandard_macro_braces`](https://rust-lang.github.io/rust-clippy/rust-1.99.0/index.html#nonstandard_macro_braces) | 3 | [#16808](rust-lang/rust-clippy#16808) moved the lint from `nursery` to `style`, so `clippy::all` now enables it | `format! {..}` / `write! {..}` → `format!(..)` / `write!(..)` | | [`single_element_loop`](https://rust-lang.github.io/rust-clippy/rust-1.99.0/index.html#single_element_loop) | 1 | [#16513](rust-lang/rust-clippy#16513): now also fires when the loop body is a single expression | `for (flag, s) in [(sns, "sns")] { if flag.is_some() { .. } }` → `if sns.is_some() { .. }` | Three of these deserve a word: * **`double_must_use` and `redundant_field_names` are allowed globally** rather than at each site, both in `ci/scripts/rust-lint.sh` and in the second clippy gate, the PocketIC Windows lint (`.github/workflows/pocket-ic-tests-windows.yml`). Its `cargo clippy -p pocket-ic` also lints pocket-ic's workspace path dependencies, which include `#[async_trait]` traits. The lints flag code that the macros generate, not code anyone wrote. Per-site `#[allow]`s would touch 64 files across most teams: the 59 with flagged code plus the 5 that include tonic-generated code. Every new `#[async_trait]` trait, `#[from] source` field or `#[derive(new)]` struct would then need one too. - The trade-off: until the allows are removed, both lints also stop catching hand-written code. - Clippy has already fixed the first one ([#17547](rust-lang/rust-clippy#17547), merged after 1.99 branched, so it ships in 1.100). The second is still open as [#17525](rust-lang/rust-clippy#17525). - Upgrading the macros instead is not an option. async-trait 0.1.92 and thiserror 2.0.20 do suppress the lints in their output, but both require syn 3, which this repo deliberately avoids (`thiserror = "=2.0.18"`, dfinity#11016). derive-new has had no release since 0.7.0. - This is how the 1.88 upgrade (dfinity#6045) handled `uninlined_format_args`. The Windows workflow's path filter now also matches `rust-toolchain.toml`, so a toolchain bump (like the PR stacked on this one) runs the Windows lint and tests before it merges, rather than first in the next daily run on master. * **`use std::f32;` / `use std::f64;`** bring the *module* into scope. For names that exist in that module it shadows the primitive type. So `f64::INFINITY` resolved to the deprecated `std::f64::INFINITY` rather than the associated constant on `f64` (same value), while `f64::ln` and the like fell through to the primitive type. Without the imports every `f32::…`/`f64::…` path in those two files resolves to the primitive type. * **`try_update`** is `fetch_update` under its new name: same arguments, same result. It has been stable since 1.95, so it also builds on the currently pinned toolchain. Because this PR lands *before* the toolchain bump, it has to stay clean on 1.98.1 too. It does not name any lint that is new in 1.99: both allowed lints exist in Clippy 0.1.98, so there is no `unknown_lints` issue. It also uses no API that 1.98.1 lacks. The toolchain upgrade itself is the PR stacked on top of this one. ## Testing * `./ci/scripts/rust-lint.sh` exits 0 both on the currently pinned **1.98.1** and on **1.99.0**. * On 1.98.1, these pass: * `cargo check --all-targets --all-features` of the 7 touched crates * `bazel build` of the 8 directly affected targets * Of the 464 tests that depend on the touched files within two hops, 459 passed locally before the run was stopped in favour of CI, which passes on all targets (`CI_ALL_BAZEL_TARGETS`). The 3 local failures are environmental: * two golden-state tests: `golden_state_swap_upgrade_twice` cannot fetch its state over SSH from the dev environment, and `upgrade_canisters_with_golden_nns_state` needs `NNS_CANISTER_UPGRADE_SEQUENCE` * a cketh minter test timed out under full machine load 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes
pedanticin the cargo clippy, so the problem will eventually go away, but it is still an issue in this version of rust (1.88.0). See alsouninlined_format_argsshould have stayed inpedanticrust-lang/rust-clippy#15151rs/execution_environment/tests/backtraces.rsfile_size_checktestsBenchmarks updates
//rs/ledger_suite/icrc1/ledger:canbench_u256
Only significant changes:
ins = instructions, HI = heap_increase, SMI = stable_memory_increase, Δ% = percent change
//rs/ledger_suite/icrc1/ledger:canbench_u64
Only significant changes:
ins = instructions, HI = heap_increase, SMI = stable_memory_increase, Δ% = percent change
//rs/nns/governance:governance-canbench
Only significant changes:
ins = instructions, HI = heap_increase, SMI = stable_memory_increase, Δ% = percent change