cargo ./target fills with outdated artifacts as toolchains are updated/changed · Issue #5026 · rust-lang/cargo (original) (raw)

cargo has to recompile dependencies once a toolchain has updated/changed, this leaves all previous artifacts intact. However, this means when you're updating toolchains the target dir will just grow and grow.

Currently you can cargo clean and rebuild, but it would be nice to be able to clean only the dependencies that are not compatible for the current toolchain. Perhaps cargo clean --incompatible ?

For example building a small crate

cargo +nightly-2018-02-07 build; du -hd2 ./target

57M ./target/debug/deps 4.0K ./target/debug/examples 528K ./target/debug/.fingerprint 4.0K ./target/debug/native 18M ./target/debug/incremental 7.6M ./target/debug/build 82M ./target/debug 82M ./target

cargo +nightly-2018-02-08 build; du -hd2 ./target

113M ./target/debug/deps 4.0K ./target/debug/examples 1.1M ./target/debug/.fingerprint 4.0K ./target/debug/native 35M ./target/debug/incremental 16M ./target/debug/build 163M ./target/debug 163M ./target

cargo +nightly build; du -hd2 ./target

169M ./target/debug/deps 4.0K ./target/debug/examples 1.6M ./target/debug/.fingerprint 4.0K ./target/debug/native 52M ./target/debug/incremental 23M ./target/debug/build 245M ./target/debug 245M ./target

This can obviously be much more problematic on larger crates.