Migrate from generic_const_exprs to generic_const_args#698
Draft
nazar-pc wants to merge 9 commits into
Draft
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates the workspace to a newer Rust nightly and migrates a large portion of the codebase away from generic_const_exprs-driven patterns toward generic_const_args (plus related nightly features), including a number of mechanical syntax updates (const { ... }, const impl, etc.) and CI/build-flag adjustments needed for the new const-generic behavior.
Changes:
- Bump Rust toolchain to
nightly-2026-06-05and update CI/build configuration to pass required nightly-Zflags (notably-Znext-solver=globally). - Replace many
generic_const_exprsusages/hacks withgeneric_const_args-compatible forms (const { ... }array lengths, const items, removed workaround types). - Refactor/reshape tests and small utilities (move inline tests into modules/files; minor clippy-lint accommodations).
Reviewed changes
Copilot reviewed 218 out of 219 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| rust-toolchain.toml | Nightly toolchain bump |
| crates/shared/ab-proof-of-time/src/aes.rs | Move tests to module |
| crates/shared/ab-proof-of-space/src/shim/tests.rs | Extract shim tests file |
| crates/shared/ab-proof-of-space/src/shim.rs | GCA syntax + test module |
| crates/shared/ab-proof-of-space/src/lib.rs | Enable GCA-related features |
| crates/shared/ab-proof-of-space/src/chiapos/utils.rs | Remove old workaround type |
| crates/shared/ab-proof-of-space/src/chiapos/table/types.rs | Replace unconstrained-const workaround |
| crates/shared/ab-proof-of-space/src/chiapos/table/tests.rs | Update tests for new const sizes |
| crates/shared/ab-proof-of-space/src/chiapos/table/rmap.rs | Const-array length via const {} |
| crates/shared/ab-proof-of-space/src/chia/tests.rs | Extract chia tests file |
| crates/shared/ab-proof-of-space/src/chia.rs | Use external tests module |
| crates/shared/ab-networking/src/utils/piece_provider.rs | Avoid async fn state machine |
| crates/shared/ab-networking/src/utils/key_with_distance.rs | Hash impl signature tweak |
| crates/shared/ab-networking/src/protocols/reserved_peers/tests.rs | Where-clause formatting change |
| crates/shared/ab-networking/src/protocols/request_response/handlers/cached_piece_by_index.rs | Encode/Decode generic bounds formatting |
| crates/shared/ab-networking/src/node_runner.rs | Make handlers non-async |
| crates/shared/ab-networking/examples/random-walker.rs | Move consts to top of fn |
| crates/shared/ab-merkle-tree/tests/unbalanced.rs | Switch to generic_const_args |
| crates/shared/ab-merkle-tree/tests/sparse.rs | Switch to generic_const_args |
| crates/shared/ab-merkle-tree/src/sparse.rs | Const-generic refactor + compile-time asserts |
| crates/shared/ab-merkle-tree/src/lib.rs | Feature flags + const array length |
| crates/shared/ab-io-type/src/variable_elements.rs | Update TODO for GCA |
| crates/shared/ab-io-type/src/variable_bytes.rs | Update TODO for GCA |
| crates/shared/ab-io-type/src/unaligned.rs | const impl + bound formatting |
| crates/shared/ab-io-type/src/trivial_type.rs | Introduce generic const item for sizes |
| crates/shared/ab-io-type/src/metadata/type_details.rs | Const array sizes via const {} |
| crates/shared/ab-io-type/src/metadata.rs | const impl TryFrom |
| crates/shared/ab-io-type/src/maybe_data.rs | Remove outdated TODO |
| crates/shared/ab-io-type/src/lib.rs | Enable GCA-related features |
| crates/shared/ab-core-primitives/src/shard.rs | const impl + array size const {} |
| crates/shared/ab-core-primitives/src/segments/archival_history_segment.rs | Doc link cleanup |
| crates/shared/ab-core-primitives/src/sectors.rs | const impl + const {} sizes |
| crates/shared/ab-core-primitives/src/pos.rs | Work around const-eval issues for SIZE |
| crates/shared/ab-core-primitives/src/pieces/piece.rs | Encode/Decode generic bounds formatting |
| crates/shared/ab-core-primitives/src/pieces/flat_pieces.rs | const {} for array casts |
| crates/shared/ab-core-primitives/src/pieces/cow_bytes.rs | Hash impl signature tweak |
| crates/shared/ab-core-primitives/src/nano_u256/tests.rs | Move tests to file |
| crates/shared/ab-core-primitives/src/nano_u256.rs | Use external tests module |
| crates/shared/ab-core-primitives/src/lib.rs | Replace generic_const_exprs workaround |
| crates/shared/ab-core-primitives/src/hashes.rs | const impl + const {} sizes |
| crates/shared/ab-core-primitives/src/ed25519.rs | const {} sizes + defaults |
| crates/shared/ab-core-primitives/src/checksum.rs | Decode generic bounds formatting |
| crates/shared/ab-core-primitives/src/block.rs | const impl + const {} sizes |
| crates/shared/ab-core-primitives/src/balance.rs | const impl conversions |
| crates/shared/ab-core-primitives/src/address.rs | const {} array length |
| crates/shared/ab-archiving/tests/integration/archiver.rs | Generic bounds formatting |
| crates/shared/ab-archiving/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/shared/ab-archiving/src/archiver.rs | Encode/Decode generic bounds formatting |
| crates/node/ab-node/src/main.rs | Remove unused generic_const_exprs workaround |
| crates/node/ab-client-database/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/node/ab-client-consensus-common/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/node/ab-client-block-verification/src/beacon_chain.rs | Avoid async fns via ready() |
| crates/node/ab-client-block-import/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/node/ab-client-block-import/src/importing_blocks.rs | Clippy expect for inline module |
| crates/node/ab-client-block-builder/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/node/ab-client-archiving/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/node/ab-client-api/src/lib.rs | Replace hardcoded const generic with const item |
| crates/farmer/ab-proof-of-space-gpu/src/shader/u32n/u32_words_to_bytes.rs | Add const helper for byte sizing |
| crates/farmer/ab-proof-of-space-gpu/src/shader/u32n/tests.rs | Fix test import path |
| crates/farmer/ab-proof-of-space-gpu/src/shader/u32n.rs | Split host-only const sizing for tests |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_proofs/gpu_tests.rs | const {} in array sizes + clippy expect |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_proofs/cpu_tests.rs | const {} chunks + array sizes |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_proofs.rs | const {} sizes + SPIR-V gating |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_in_buckets/rmap.rs | SPIR-V gating + atomic_or path |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_in_buckets/gpu_tests.rs | Clippy expect for large asserts |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_in_buckets/cpu_tests.rs | const {} array sizes |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_in_buckets.rs | SPIR-V gating + const assertions |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_and_compute_fn/gpu_tests.rs | Clippy expect for large asserts |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_and_compute_fn.rs | SPIR-V gating for GCA incompat |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_and_compute_f7/gpu_tests.rs | Clippy expect for large asserts |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_and_compute_f7.rs | SPIR-V gating for GCA incompat |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_and_compute_f2/gpu_tests.rs | Clippy expect for large asserts |
| crates/farmer/ab-proof-of-space-gpu/src/shader/find_matches_and_compute_f2.rs | SPIR-V gating for GCA incompat |
| crates/farmer/ab-proof-of-space-gpu/src/shader/compute_f1/gpu_tests.rs | const {} for const generic arg |
| crates/farmer/ab-proof-of-space-gpu/src/shader/compute_f1/cpu_tests.rs | const {} for const generic arg |
| crates/farmer/ab-proof-of-space-gpu/src/shader/compute_f1.rs | SPIR-V gating for GCA incompat |
| crates/farmer/ab-proof-of-space-gpu/src/lib.rs | Feature gating for host vs SPIR-V |
| crates/farmer/ab-proof-of-space-gpu/src/host.rs | Adjust logging + const chunk sizes |
| crates/farmer/ab-farmer/src/single_disk_farm/plot_cache/tests.rs | Clippy expect for large asserts |
| crates/farmer/ab-farmer/src/single_disk_farm/identity.rs | Generic bounds formatting |
| crates/farmer/ab-farmer/src/farm.rs | Encode/Decode generic bounds formatting |
| crates/farmer/ab-farmer/src/cluster/nats_client.rs | Generic bounds formatting |
| crates/farmer/ab-farmer/src/cluster/farmer.rs | Encode/Decode generic bounds formatting |
| crates/farmer/ab-farmer/src/cluster/cache.rs | Encode/Decode generic bounds formatting |
| crates/farmer/ab-farmer-rpc-primitives/src/lib.rs | Encode/Decode generic bounds formatting |
| crates/farmer/ab-farmer-components/src/shard_commitment.rs | Use const-generic expr blocks |
| crates/farmer/ab-farmer-components/src/proving.rs | Use const-generic Record::NUM_S_BUCKETS |
| crates/farmer/ab-farmer-components/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/execution/ab-riscv-primitives/src/registers/general_purpose.rs | Replace phantom register impl + const impl |
| crates/execution/ab-riscv-primitives/src/lib.rs | Remove generic_const_exprs from features |
| crates/execution/ab-riscv-primitives/src/instructions/zicsr.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/zicond.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/widen_narrow.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/store.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/reduction.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/perm.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/muldiv.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/mask.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/load.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/fixed_point.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/config.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/carry.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x/arith.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/v/zve64x.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/utils.rs | const impl shift ops |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zk/zkn/zknh.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zk/zkn/zkne.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zk/zkn/zknd.rs | const impl conversions + Instruction impl |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zk/zkn.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zk/zbkx.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zk/zbkc.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zk/zbkb.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zce/zcmp.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/zce/zcb.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/m/zmmul.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/m.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/c/zca.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/b/zbs.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/b/zbc.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/b/zbb.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/b/zba.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64/b.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv64.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zk/zkn/zknh.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zk/zkn/zkne.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zk/zkn/zknd.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zk/zkn.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zk/zbkx.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zk/zbkc.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zk/zbkb.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zce/zcmp.rs | const unsafe impl + Instruction impl |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/zce/zcb.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/m/zmmul.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/m.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/c/zca.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/b/zbs.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/b/zbc.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/b/zbb.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/b/zba.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32/b.rs | Switch to const impl form |
| crates/execution/ab-riscv-primitives/src/instructions/rv32.rs | Switch to const impl form |
| crates/execution/ab-riscv-macros/src/lib.rs | Prune unused feature flags |
| crates/execution/ab-riscv-macros/src/build/state.rs | Update OccupiedError destructuring |
| crates/execution/ab-riscv-macros/src/build/enum_impl.rs | Ensure auto-derived attr ordering |
| crates/execution/ab-riscv-macros-common/src/code_utils.rs | Update preprocessing for const impl |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/widen_narrow/zve64x_widen_narrow_helpers.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/widen_narrow.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/store/zve64x_store_helpers.rs | const {} array sizes + remove bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/store.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/reduction/zve64x_reduction_helpers.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/reduction.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/perm/zve64x_perm_helpers.rs | Remove bounds + use VLENB_USIZE |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/perm.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/muldiv/zve64x_muldiv_helpers.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/muldiv.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/mask/zve64x_mask_helpers.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/mask.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/load/zve64x_load_helpers.rs | const {} sizes + remove bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/load.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/fixed_point/zve64x_fixed_point_helpers.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/fixed_point.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/config/zve64x_config_helpers.rs | Avoid ICE with map_or_default |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/config/tests.rs | const {} const generic args |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/config.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/carry/zve64x_carry_helpers.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/carry.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/arith/zve64x_arith_helpers.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/zve64x/arith.rs | Remove array-size bounds |
| crates/execution/ab-riscv-interpreter/src/v/vector_registers.rs | Change VLENB typing + helper consts |
| crates/execution/ab-riscv-interpreter/src/rv64/zk/zkn/zkne/rv64_zkne_helpers.rs | Inline-mod clippy expects |
| crates/execution/ab-riscv-interpreter/src/rv64/zk/zkn/zknd/rv64_zknd_helpers.rs | Inline-mod clippy expects |
| crates/execution/ab-riscv-interpreter/src/rv64/zk/zbkx/rv64_zbkx_helpers.rs | Replace simd_swizzle macro expansion |
| crates/execution/ab-riscv-interpreter/src/rv64/test_utils.rs | Update VectorRegisterFile const args |
| crates/execution/ab-riscv-interpreter/src/rv32/zk/zkn/zkne/rv32_zkne_helpers.rs | Inline-mod clippy expects |
| crates/execution/ab-riscv-interpreter/src/rv32/zk/zkn/zknd/rv32_zknd_helpers.rs | Inline-mod clippy expects |
| crates/execution/ab-riscv-interpreter/src/rv32/zk/zbkx/rv32_zbkx_helpers.rs | Replace simd_swizzle macro expansion |
| crates/execution/ab-riscv-interpreter/src/rv32/zk/zbkb/rv32_zbkb_helpers.rs | Minor reordering cleanup |
| crates/execution/ab-riscv-interpreter/src/lib.rs | Switch to GCA-related features |
| crates/execution/ab-riscv-interpreter/src/basic.rs | Remove array-size bound + const impl |
| crates/execution/ab-riscv-coremark-runner/src/time_csr.rs | Switch to const impl form |
| crates/execution/ab-riscv-coremark-runner/src/main.rs | Remove unused generic_const_exprs workaround |
| crates/execution/ab-riscv-coremark-runner/src/instruction.rs | Switch to const impl form |
| crates/execution/ab-riscv-benchmarks/tests/basic.rs | Remove unused generic_const_exprs workaround |
| crates/execution/ab-riscv-benchmarks/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/execution/ab-riscv-benchmarks/benches/riscv.rs | Remove unused generic_const_exprs workaround |
| crates/execution/ab-riscv-act4-runner/src/main.rs | Enable GCA features + ICE workarounds |
| crates/execution/ab-riscv-act4-runner/src/instruction.rs | Switch to const impl form |
| crates/execution/ab-riscv-act4-runner/src/abundance_rv64i_max/interpreter.rs | Update VectorRegisterFile const args |
| crates/execution/ab-riscv-act4-runner/src/abundance_rv64i_max/instruction.rs | Switch to const impl form |
| crates/execution/ab-riscv-act4-runner/src/abundance_rv32i_max/interpreter.rs | Update VectorRegisterFile const args |
| crates/execution/ab-riscv-act4-runner/src/abundance_rv32i_max/instruction.rs | Switch to const impl form |
| crates/contracts/system/ab-system-contract-simple-wallet-base/src/payload.rs | const impl TryFrom |
| crates/contracts/core/ab-contracts-tooling/src/build.rs | Add next-solver flags for builds |
| crates/contracts/core/ab-contracts-macros-impl/src/contract/method.rs | Clippy expect for inline modules |
| crates/contracts/core/ab-contracts-macros-impl/src/contract.rs | Clippy expect for inline modules |
| crates/contracts/core/ab-contracts-common/src/metadata.rs | const impl TryFrom |
| crates/contracts/core/ab-contract-file/src/lib.rs | Remove unused generic_const_exprs workaround |
| crates/contracts/core/ab-contract-file/src/instruction.rs | const impl + Instruction impl |
| Cargo.toml | Add crates-io patch + lint change |
| Cargo.lock | Lock patched derive crate source |
| .github/workflows/rust.yml | Add required -Z flags in CI |
| .github/workflows/gh-pages.yml | Add required -Z flags for docs |
| .cargo/config.toml | Global rustflags for next-solver |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
9425326 to
80530cd
Compare
Owner
Author
|
rustdoc support might be blocked by rust-lang/rust#156487 indefinitely 😕 |
80530cd to
ba71166
Compare
ba71166 to
ceab06c
Compare
ceab06c to
d0af684
Compare
d0af684 to
f895908
Compare
f895908 to
ebd20fc
Compare
ebd20fc to
c308094
Compare
Owner
Author
|
Fixed everything except: |
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.
A lot of churn + some new clippy lints, but we're finally back on the latest nightly 🎉
A bunch of hacks and a few concessions were needed, but we can live with it for now.