Skip to content

chore(dylint): upgrade the Dylint stack to 6.0.1 #1155

Description

@zackees

Context

The Dylint gate on current main still carries the pre-6.0 compatibility stack:

  • .github/workflows/dylint.yml installs cargo-dylint and dylint-link 5.0.0.
  • The lint crates pin dylint_linting / dylint_testing to trailofbits/dylint revision 4bd91ce7729b74c7ee5664bbb588f7baf30b4a09.
  • ci/build_dylint_driver.py clones that revision and builds a custom driver for nightly-2026-03-26.
  • The workflow contains an alias-and-retry loop for the old <name>@<toolchain> library naming behavior.

Dylint 6.0.1 is now released and is already in use in sibling repositories. Keeping the old mixed version/git-revision stack preserves expensive bespoke setup and leaves this gate exposed to already-solved rustc-private API drift.

Proposal

Move the entire repository to one documented Dylint 6.0.1 stack:

  1. Pin cargo-dylint and dylint-link to 6.0.1.
  2. Replace every git-revision dylint_linting / dylint_testing dependency with the 6.0.1 crates.io release.
  3. Select one nightly compatible with 6.0.1 and update every Dylint rust-toolchain.toml, workflow reference, and test command together.
  4. Remove ci/build_dylint_driver.py, DYLINT_DRIVER_PATH plumbing, and the library alias/retry loop when the 6.0.1-provided driver path makes them unnecessary.
  5. Preserve the existing lint implementations, allowlists, stale-allowlist validation, and required status-check behavior.

Acceptance criteria

  • Every fbuild Dylint crate uses dylint_linting = "6.0.1" and, where present, dylint_testing = "6.0.1"; revision 4bd91ce... is absent from active configuration.
  • CI installs cargo-dylint and dylint-link 6.0.1 explicitly.
  • One compatible nightly is pinned consistently across workflow and lint crates.
  • The custom cloned-driver build and alias/retry workaround are removed, or a remaining upstream requirement is demonstrated and narrowly documented.
  • All Dylint-library formatting/tests pass.
  • A single workspace Dylint invocation checks --workspace --all-targets and the required Dylint check is green.
  • No lint is disabled and no unrelated allowlist entries are added.

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions