cargo-gc
cargo-gc copied to clipboard
Where is my space?
cargo gc
Cargo extension to recycle outdated build artifacts. And try the best to avoid recompilation.
Usage
Install it with cargo:
cargo install cargo-gc-bin
The executable is cargo-gc. You can invoke it with cargo gc command:
cargo gc
It will check and remove all outdated build artifacts in the current project. See cargo gc --help for more information.
Limitations / Known issues
- [ ] It needs to invoke
cargo buildthat takes lots of time. - [ ] Need to re-link after GC
- [ ]
cargo checkwill re-check from scratch
Explaination
cargo gc uses the output information from cargo build to help recognize build artifacts in use, and removes all others. In the current implementation, top-level arficats are not recognized and leads to re-link after GC.
Compare to other utils like cargo sweep, this one is based on the informations provided by cargo itself rather than filesystem timestamp. So it can be more accurate and still avoiding recompilation as much as possible.
Next steps
Technically, it's possible to implement a "perfect" GC that can remove all outdated artifacts without any recompilation. And done this in a totally static way (i.e., without invoking cargo build). As the tuple ("crate name", "fingreprint") can be computed outside of cargo.