This file records user-facing changes to packages cargo_dylint, dylint, dylint_driver, dylint-link, dylint_linting, and dylint_testing. If a change to one of those packages is missing, please open an issue.
- Invalidate lints when
DYLINT_RUSTFLAGSchanges (c3c4467)—thanks @jfarmer - Correct 25c51a5's error reporting improvements, as they were incomplete (00aa20c and c384fa5)
- Fix UI test flag detection when
RUSTC_WRAPPERorRUSTC_WORKSPACE_WRAPPERis set indylint_testing(bca5466)—thanks @dcastro for reporting the bug and @CookieHCl for diagnosing it
- FEATURE: Allow users to supply a Dylint-exclusive Clippy clone via an absolute path in
DYLINT_CLIPPY_REPO(82da1fa, 25147ed, and a561444)—thanks @EricLiu2000 - Handle rename of Clippy's default branch from
mastertomain(f1ed836)
- Reject
--no-metadatawhen given with--gitor--pathon the command line (3b4c124)—thanks @HardMax71 - FEATURE: Allow
--patternto be given more than once on the command line; deprecatedylint::opts::LibrarySelection::patternin favor ofLibrarySelection::patterns(365fbd6)—thanks @HardMax71 - FEATURE: When a captured subprocess fails outside of CI, write its full command to a temporary file rather than to the console (25c51a5)
- Handle rename of
rustc_driver::run_compilertocompiler_entrypoint(0b495c3) - Import
declare_lint!, etc. fromrustc_lint_defs(rustc_sessionno longer re-exportsrustc_lint_defsmacros) (f5bc6bc) - Use
-C metadatato track the lint state inrustc, thereby eliminating use of the removed--env-setoption (271f467) - Update CI caching guidance (faba31e)
- FEATURE: Provide prebuilt binaries for Apple Silicon macOS (190b023)
- Fix a bug that caused Clippy versions to be compared as
Strings rather thanVersions. This bug affected theupgradeoperation. (8ba7fcb) - Make
dylint_lintingcompatible with newer nightly lint-registration APIs (92aec4d) - Fix
dylint.tomldependency tracking to preserve incremental compilation (2752c97)—thanks @rirze - Honor
RUSTCwhen detecting nightly indylint_internal(747f4ae)—thanks @dzbarsky - Invalidate lints when
dylint.tomlis created (4ab2cd7)—thanks @rirze - FEATURE: When building libraries from the
dylintpackage, copy them directly rather than withdylint-link(e504ebb) - Fix library discovery when the user changes the build directory location (136b95c and 016fb59)—thanks @DenisGorbachev
- Force
rustcinvocation when collecting UI test flags (df56652) - FEATURE: Add
--fail-on-no-librariesoption tocargo dylint#2077—thanks @humb1t - Dependency updates
nested_workspaceupgraded to version 3rewriterupgraded to version 2
- Allow
dylint_lintingto work with eitherrust-toolchainorrust-toolchain.tomlfiles. (c9ec563) - Allow
cargo dylint upgradeto work with eitherrust-toolchainorrust-toolchain.tomlfiles. (c340c08) - Dependency updates
nested_workspaceupgraded to version 1.0
- Invalidate rustc's incremental cache when the set of registered lints changes (4ca081a)
- Remove patch versions from template manifest (c9bea3b)
- Fix a bug causing published binaries to include invalid source paths (#2011). Reported in #1985 by @clabby, to whom we are sincerely grateful for the initial binary publishing implementation (#1972).
- Dependency upgrades
cargo-util-schemasupgraded to version 0.14git2upgraded to version 0.21nested_workspaceupgraded to version 0.8
- Update README.md to include examples of git revisions (#1802)—thanks @brannondorsey
- Remove
if_chaincrate (6e73a33)—thanks @brannondorsey - Remove unnecessary parenthesis in error.rs (30657a9)
- Fix nightly build (b861ff9)
- Bump MSRV to 1.91 (dda53fc)
- Update README.md toml example (c3225dc)
- BREAKING: Remove MSRV policy (#1967)
- Updated dependencies
cargo_metadataupgraded to version 0.23cargo-util-schemasupgraded to version 0.13ctorupgraded to version 1.0homeupgraded to version 0.5libloadingupgraded to version 0.9similar-assertsupgraded to version 2.0toml_editupgraded to version 0.25tomlupgraded to version 1.1
- Removed dependencies
if_chainremovedrustversionremoved
- Fix a bug causing
dylint_testingto make repeated failed attempts to build a driver (#1744) - BREAKING: Remove
cargo-libfeature and support for linking Cargo as a library (#1741) - Change "No paths matched" error to "No library packages found in" when a pattern is not used (#1748)
- BREAKING: Remove ability to refer to libraries with
--path(#1754) - Upgrade dependencies (#1728), including:
cargo_metadatato version 0.23cargo-util-schemato version 0.10git2to version 0.20
- Hot fix for a failed
cargo publish(#1737)
- Correct error messages associated with
Cargo.tomlandrust-toolchainbackups (#1606)—thanks @suratkhan - Fix typo in conditional compilation documentation (#1627)—thanks @markopiers
- Use
anstyleinstead ofansi_term(#1630) - Fix link in README.md (#1642)
- Use
tar-fs(#1639) - Correct instructions for using Rust Analyzer (#1658)—thanks @mondeja
- Ensure correct
cargois called when determining package metadata (#1671) - Fix typo in
dylint-linkdescription (#1700) - Upgrade dependencies (#1728), including:
cargo_metadatato version 0.22rewriterto version 0.2tomlto version 0.9toml_editto version 0.23
- Bump
dylint's MSRV to 1.81 (b371376) - Eliminate reliance on
dirs(6a3e936) - Eliminate uses of
once_cell::sync::Lazy(#1517) - Check for both
rust-toolchainandrust-toolchain.tomlfiles when determining Rust toolchain channel (9ac18a2)
- Account for new
rustup show active-toolchainformat. Rustup 1.28 had two changes affecting Dylint. One was a change inrustup show active-toolchain's output format; the other was the fact that Rustup no longer automatically installs uninstalled toolchains. This release addresses the former, but not the latter, i.e., you may need to manually install toolchains until the next release. To manually install a toolchain, eithercdto a directory containing arust-toolchainfile and typerustup toolchain install, or typerustup toolchain install TOOLCHAIN, whereTOOLCHAINis the toolchain you wish to install. (bda492f and 7e104fd)—thanks @ClSlaid for the fix
- BREAKING CHANGE: Work with Cargo's new hashing algorithm, introduced with Rust 1.85.0.
cargo-dylint4 does not work with Cargo 1.84.x and earlier, andcargo-dylint3.x does not work with Cargo 1.85.0. If you need to use Cargo 1.84.x or earlier, please continue to usecargo-dylint3.x. If you have a long term need to use Cargo 1.84.x or earlier, please open an issue. (#1534)
- Have
cargo metadataandcargo fetchuse the samecargowhen building library packages. Using differentcargos caused the two commands to refer to different subdirectories within the user'sCARGO_HOME, leading to "Could not determine accessed subdirectory" errors. This bug primarily affected projects withrust-toolchainfiles. (#1519)
- FEATURE: The
PATHargument incargo dylint upgrade PATHis now optional. When omitted,PATHdefaults to the current directory. (#1508)—thanks @YanVictorSN
- Account for rust-lang/rust#135880 (#1501)
- Eliminate reliance on
is-terminal(#1502)
- Add link to EuroRust 2024 video (#1447)
- FEATURE: Add experimental
--auto-correctoption. Upgrading a lint's Rust toolchain often causes the lint to break because of changes to Rust APIs. When--auto-correctis enabled,cargo-dylinttries to infer lint fixes from Clippy's commit history. (949cf8f, 625d3d3, c1edcfb, 2753a88, and c515601)
- Add EuroRust 2024 slides to README.md (#1370)
- Upgrade
cargo-util-schemasto version 0.7 (#1394 and #1429) - Upgrade
cargo_metadatato version 0.19 (8a7bc95) - Bump
dylint's MSRV to 1.78 (c4c27d1) - Upgrade
thiserrorto version 2 (7398557) - Remove mention of
rustc_attrfrom Dylint library template, as the crate was recently renamed (#1446)
- Enable drivers to be installed concurrently. Previously, an attempt to install a driver would fail if the existing driver was running. (4438f40 and 231974a)
- Fix capitalization in help messages (5a44c22)
- Upgrade
compiletest_rsto version 0.11 indylint_testing(145623a) - Add documentation on the example libraries' use of
dylint_linting'sconstituentfeature (9625952) - Add documentation on suppressing rustc's
unexpected_cfglint warnings (#1243 and #1252) - FEATURE: Allow
patterns to be arrays when specifying workspace metadata entries (#1273) - Upgrade
cargoto version 0.81 (#1280) - Add
#![feature(rustc_private)]todylint_driver's main.rs. This fixes a bug caused by rust-lang/rust#122362. (b691069) - Enable Dylint to use Cargo's checkouts directories concurrently. Previously, such concurrent use could cause Dylint to produce errors. (cb6299a)
- FEATURE: In
dylint_testing,ui_testandTest::src_basenow accept animpl AsRef<Path>as opposed to a&Path(be85b10)
- Extend rather than overwrite
RUSTFLAGSwhen building drivers (7662d4c)
- Update
env_loggerto version 0.11 indylint_driveranddylint_testing(#1200) - Prepend the toolchain
bindirectory toPATHon Windows (i.e., account for rust-lang/rustup#3703) (c222181)
- FEATURE: Allow library packages to be specified in a dylint.toml file instead of a Cargo.toml file. The syntax is exactly the same. Thus, users wishing to switch can simply cut-and-paste the
[workspace.metadata.dylint.libraries]declaration from their Cargo.toml file into a dylint.toml file. (#1143 and #1151)
- Address rust-lang/rust#122450 (9add993)
- Rename option
--pathto--lib-path. For the time being,--pathwill continue to work as before when used to refer to a file as opposed to a directory. (e52da02) - FEATURE: Add options
--gitand--pathto allow naming library packages on the command line (883e521) - BREAKING CHANGE: Make
metadatano longer a defaultdylintpackage feature (#1052) (see also renaming ofmetadatabelow) - BREAKING CHANGE: No longer pass
-D warningsto rustc by default indylint_testing. To retain the previous behavior, enable thedeny_warningsfeature. (#1053) - BREAKING CHANGE: Rename the following package features (42cb7a2):
cargo-dylintpackage:metadata-cargo->cargo-lib(download library packages usingcargoas a library)cargo-dylintpackage:metadata-cli->cargo-cli(download library packages using thecargoexecutable)dylintpackage:metadata->library_packages(enable library-package-related functionality, e.g., building them)
- BREAKING CHANGE: Remove the following deprecated options and their associated
Dylintstruct fields (7fd2c4d):--allow-downgrade(now part of theupgradesubcommand)--bisect(experimental and no longer deemed necessary)--force(renamed to--allow-downgrade)--isolate(now part of thenewsubcommand)--list(replaced with thelistsubcommand)--new(replaced with thenewsubcommand)--rust-version(now part of theupgradesubcommand)--upgrade(replaced with theupgradesubcommand)
- Update
cargo-dylintMSRV to 1.74 (965ebf5) - Eliminate reliance on
sedregex(#1079) - Make
cargo-clithe default method for building library packages (01aa9ba)
- Allow the
listsubcommand to accept--manifest-pathoptions (#951)
- Fix broken links in docs.rs documentation (0f04fcb)
- #858 made
curl-sysa non-optional dependency of thedylintpackage. This had unintended side effects, e.g., causing all of the example lints to transitively depend oncurl-sys. #867 corrects the situation. (#867) - Ensure that consecutive uses of
--libproduce the correct output, i.e., are not improperly cached (#866)—thanks @EFanZh for the bug report
- Work around curl/curl#11893 (#858)—thanks @tjade273 for the bug report
- Update dependencies, including
cargoto version 0.73.1 (#847)
- Update
cargo-dylintanddylintMSRVs (d42a7a0) - Specify MSRV policy (#835)
- Make
cargo dylint updatework whenclippy_utilsis a workspace dependency, as opposed to just when it is a package dependency (bugfix) (36d94ed) - Don't canonicalize paths passed to Cargo in
dylint_linting(bugfix) (d6b0356)
- Add
--pipe-stderrand--pipe-stdoutoptions (#822)—thanks @faculerena
- Add
constituentfeature to facilitate building a lint by itself, or as part of a larger library (#790 and #812) - When building metadata entries, ignore subdirectories that do not contain packages rather than generate errors (#809)
- Add
--no-depsoption (#808)—thanks @EFanZh for the suggestion - Rerun lints when workspace metadata changes (#813)—thanks @maxammann for the bug report
- Update
cargoto version 0.72.1 (#786)
- Address rust-lang/rust#112692 (f4094c8)
- Migrate away from
atty(#736)
- Address rust-lang/rust#111748 (#699)
- Fix a bug causing
dylint_testingto fail to determinerustcflags on Windows (730696a) - Eliminate last reference to
syn1.0 (#709)
- Address rust-lang/rust#111633 (#694)
- Allow libraries to use thread local storage (3db9dda)
- Treat unknown workspace metadata keys as errors (95b4bbc)
- Fix a bug causing false "invalid pattern" errors on Windows (49e0353)
- Don't treat unbuilt libraries as errors when listing libraries (75190fb)
- Update dependencies, including
opensslto version 0.10.48 (#652)
- Enable backtraces for stable builds (#630)
- Dylint now builds libraries only when they are needed to run. For example,
cargo dylint --lib foobuilds just libraryfoo, whereas it used to build all available libraries. (#633)
- Use
homecrate to determineCARGO_HOME(#604) - When
dylint.tomlcannot be parsed, show reason why (d6f9d5f) - Update
tempfileto version 3.4.0 (#624)
- Address rust-lang/rust#106810 (#590)
- Set rust-analyzer's
rustc_private=trueindylint_lintingpackage metadata (#543)
- Rerun
cargo checkwhen library code changes (6235e99) - Clear
RUSTFLAGSwhen building workspace metadata entries (a5f0d4f) - Fix help messages (cc10586 and 9d60366)
- Fix rust-analyzer configuration in VS Code integration section of README (#540)—thanks @fcasal
- Fix a bug that would cause
dylint_linting::init_configto fail when run on a build.rs file in the workspace root (#503)
- Allow libraries to be configured via a
dylint.tomlfile in a workspace's root directory (#484 and #496)—thanks @shepmaster for the suggestion
- Prevent patterns from escaping dependency directories (#486)—thanks @shepmaster for the bug report
- Support rust-lang/rust#101501 in
dylint_linting(06bdab3) - Update library package template (f119c03 and 256aa92)
- Strip current directory when listing libraries (7268b0a)
- Switch to subcommands (4b240bc)
- Clone with CLI by default (#434)
- Upgrade library packages using
toml_edit(#436) - Ensure dylint_driver_manifest_dir.rs is truncated in dylint/build.rs (524850b)
- Fix bug related to package cache locking (#421)
- Allow installation with
--debug(6b6e34e) - Fix missing
RUSTUP_TOOLCHAINenvironment variable bug affecting Windows (f5cb5b7) - Update library package template (e59ac2f)
- Sort not found libraries (79a7171)
- Retry failing
git clones (#395) - Update template (#396)
- Make driver work with latest nightly (#381)
- Fix bug in how driver ordered arguments passed to rustc (#385)
- Clear
RUSTCenvironment variable when building metadata entries and when runningcargo check/fix(#379)
- Report all not found libraries, not just the first one (#350)
- No longer use
dylint-templateto create new libraries (#355)
- If target triple cannot be determined from toolchain, default to host triple (ff4a069)
- Relax restriction that library be in its own workspace (167ce9e)
- Ensure library filename uses snake case (54f3fb6)
- Fix a bug that was causing
rustfixto not work with example tests (#341)
- Respect
linkersetting in$CARGO_HOME/config.toml(#339)
- Error when metadata entry names a nonexistent library (#317)
- Enable conditional compilation (#322)—idea due to @danielhenrymantilla (#28)
- Rename
--forceto--allow-downgrade(#331 and #333)
- Make
--newwork with new macros (#298)
- Add macros
declare_late_lint!, etc. todylint_linting. The new macros make it easier to write libraries containing just one lint (the current common case). (#284) - Don't iterate over
name_toolchain_mapto list lints (1ad7da7)
- Use correct crate names (b728be3)
- Adjust message displayed when examples are rebuilt (e7ae412)
- BREAKING CHANGE: Build
name_toolchain_mapon first use. For example, if all libraries are specified with--path, then there is no need to build the target's metadata entries. Thename_toolchain_mapis technically part of Dylint's public API. Hence, this is a breaking change. (#250)
- Add test "builder" to
dylint_testing(#222 and #237) - Determine
clippy_utilsversions using commit history rather than git tags (#236) - Ensure package cache is locked (#247)
- Verify build succeeded before considering bisect successful (#246)
- Eliminate redundant builds when using
dylint_testing(#216)
- Hide
cargo-bisect-rustc's progress bars when--quietis passed or when not on a tty (#214)
- If an
--upgradewould result in a downgrade, and--bisectis passed, the downgrade is skipped and the bisect proceeds instead of producing an error. (#183) - Be more explicit about what cargo is doing (#185)
- Add experimental
--bisectoption (#170)
- Add
--fixoption (#153) - Prevent
--upgradefrom downgrading toolchain (#164) - Expand circumstances under which drivers are rebuilt (#165)
- Update clap dependency (#152)
- Update clap dependency (#104)
- Improve build times when testing libraries (e5ce5b9) and when linting using workspace metadata (7204bce)
- Better handling of target directories (#77)
- Hide
dylint_version()in docs (#78)—thanks @MinerSebas
- Update clap dependency (#65)
- Link Dylint drivers using absolute paths (fixes #54)
- Windows support (thanks to @MinerSebas)
- Add support for workspace metadata
- BREAKING CHANGE: No longer search
target/debugandtarget/releasefor libraries
- Add
ui_test_exampleandui_test_examples(#20)
- Use rust-toolchain to build drivers (c28639ee)
- Fetch remote
dylint_driverindylint_testingby default (#15)
- Initial release