- Account for new
rustup show active-toolchain
format. 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, eithercd
to a directory containing arust-toolchain
file and typerustup toolchain install
, or typerustup toolchain install TOOLCHAIN
, whereTOOLCHAIN
is 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-dylint
4 does not work with Cargo 1.84.x and earlier, andcargo-dylint
3.x does not work with Cargo 1.85.0. If you need to use Cargo 1.84.x or earlier, please continue to usecargo-dylint
3.x. If you have a long term need to use Cargo 1.84.x or earlier, please open an issue. (#1534)
- Have
cargo metadata
andcargo fetch
use the samecargo
when building library packages. Using differentcargo
s 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-toolchain
files. (#1519)
- FEATURE: The
PATH
argument incargo dylint upgrade PATH
is now optional. When omitted,PATH
defaults 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-correct
option. Upgrading a lint's Rust toolchain often causes the lint to break because of changes to Rust APIs. When--auto-correct
is enabled,cargo-dylint
tries 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-schemas
to version 0.7 (#1394 and #1429) - Upgrade
cargo_metadata
to version 0.19 (8a7bc95) - Bump
dylint
's MSRV to 1.78 (c4c27d1) - Upgrade
thiserror
to version 2 (7398557) - Remove mention of
rustc_attr
from 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_rs
to version 0.11 indylint_testing
(145623a) - Add documentation on the example libraries' use of
dylint_linting
'sconstituent
feature (9625952) - Add documentation on suppressing rustc's
unexpected_cfg
lint warnings (#1243 and #1252) - FEATURE: Allow
pattern
s to be arrays when specifying workspace metadata entries (#1273) - Upgrade
cargo
to 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_test
andTest::src_base
now accept animpl AsRef<Path>
as opposed to a&Path
(be85b10)
- Extend rather than overwrite
RUSTFLAGS
when building drivers (7662d4c)
- Update
env_logger
to version 0.11 indylint_driver
anddylint_testing
(#1200) - Prepend the toolchain
bin
directory toPATH
on 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
--path
to--lib-path
. For the time being,--path
will continue to work as before when used to refer to a file as opposed to a directory. (e52da02) - FEATURE: Add options
--git
and--path
to allow naming library packages on the command line (883e521) - BREAKING CHANGE: Make
metadata
no longer a defaultdylint
package feature (#1052) (see also renaming ofmetadata
below) - BREAKING CHANGE: No longer pass
-D warnings
to rustc by default indylint_testing
. To retain the previous behavior, enable thedeny_warnings
feature. (#1053) - BREAKING CHANGE: Rename the following package features (42cb7a2):
cargo-dylint
package:metadata-cargo
->cargo-lib
(download library packages usingcargo
as a library)cargo-dylint
package:metadata-cli
->cargo-cli
(download library packages using thecargo
executable)dylint
package:metadata
->library_packages
(enable library-package-related functionality, e.g., building them)
- BREAKING CHANGE: Remove the following deprecated options and their associated
Dylint
struct fields (7fd2c4d):--allow-downgrade
(now part of theupgrade
subcommand)--bisect
(experimental and no longer deemed necessary)--force
(renamed to--allow-downgrade
)--isolate
(now part of thenew
subcommand)--list
(replaced with thelist
subcommand)--new
(replaced with thenew
subcommand)--rust-version
(now part of theupgrade
subcommand)--upgrade
(replaced with theupgrade
subcommand)
- Update
cargo-dylint
MSRV to 1.74 (965ebf5) - Eliminate reliance on
sedregex
(#1079) - Make
cargo-cli
the default method for building library packages (01aa9ba)
- Allow the
list
subcommand to accept--manifest-path
options (#951)
- Fix broken links in docs.rs documentation (0f04fcb)
- #858 made
curl-sys
a non-optional dependency of thedylint
package. 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
--lib
produce 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
cargo
to version 0.73.1 (#847)
- Update
cargo-dylint
anddylint
MSRVs (d42a7a0) - Specify MSRV policy (#835)
- Make
cargo dylint update
work whenclippy_utils
is 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-stderr
and--pipe-stdout
options (#822)—thanks @faculerena
- Add
constituent
feature 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-deps
option (#808)—thanks @EFanZh for the suggestion - Rerun lints when workspace metadata changes (#813)—thanks @maxammann for the bug report
- Update
cargo
to 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_testing
to fail to determinerustc
flags on Windows (730696a) - Eliminate last reference to
syn
1.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
openssl
to 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 foo
builds just libraryfoo
, whereas it used to build all available libraries. (#633)
- Use
home
crate to determineCARGO_HOME
(#604) - When
dylint.toml
cannot be parsed, show reason why (d6f9d5f) - Update
tempfile
to version 3.4.0 (#624)
- Address rust-lang/rust#106810 (#590)
- Set rust-analyzer's
rustc_private=true
indylint_linting
package metadata (#543)
- Rerun
cargo check
when library code changes (6235e99) - Clear
RUSTFLAGS
when 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_config
to fail when run on a build.rs file in the workspace root (#503)
- Allow libraries to be configured via a
dylint.toml
file 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_TOOLCHAIN
environment variable bug affecting Windows (f5cb5b7) - Update library package template (e59ac2f)
- Sort not found libraries (79a7171)
- Retry failing
git clone
s (#395) - Update template (#396)
- Make driver work with latest nightly (#381)
- Fix bug in how driver ordered arguments passed to rustc (#385)
- Clear
RUSTC
environment 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-template
to 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
rustfix
to not work with example tests (#341)
- Respect
linker
setting 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
--force
to--allow-downgrade
(#331 and #333)
- Make
--new
work 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_map
to list lints (1ad7da7)
- Use correct crate names (b728be3)
- Adjust message displayed when examples are rebuilt (e7ae412)
- BREAKING CHANGE: Build
name_toolchain_map
on 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_map
is 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_utils
versions 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--quiet
is passed or when not on a tty (#214)
- If an
--upgrade
would result in a downgrade, and--bisect
is 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
--bisect
option (#170)
- Add
--fix
option (#153) - Prevent
--upgrade
from 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/debug
andtarget/release
for libraries
- Add
ui_test_example
andui_test_examples
(#20)
- Use rust-toolchain to build drivers (c28639ee)
- Fetch remote
dylint_driver
indylint_testing
by default (#15)
- Initial release