10 releases
| 0.1.10 | Aug 5, 2025 |
|---|---|
| 0.1.9 | Apr 25, 2025 |
| 0.1.8 | Jan 2, 2025 |
| 0.1.6 | Dec 9, 2024 |
| 0.1.2 | Oct 31, 2024 |
#263 in Cargo plugins
555 downloads per month
93KB
2.5K
SLoC
๐งน cargo-kit
_ _ _
___ __ _ _ __ __ _ ___ | | __(_)| |_
/ __| / _` || '__| / _` | / _ \ | |/ /| || __|
| (__ | (_| || | | (_| || (_) | | < | || |_
\___| \__,_||_| \__, | \___/ |_|\_\|_| \__|
|___/
This tool automates that setup process, making configuration simpler and faster.
โจ Features
cargo-kit can create or modify Cargo profiles in your Cargo.toml manifest and RUSTFLAGS in
the .cargo/config.toml file, based on a
set of predefined templates:
fast-compile- minimizes compilation times- Disables debuginfo generation and uses a faster linker.
- In nightly mode, it also enables the Cranelift codegen backend and the parallel frontend.
fast-runtime- maximizes runtime performance- Enables LTO and other settings designed to maximize runtime performance.
min-size- minimizes binary size- Similar to
fast-runtime, but uses optimization flags designed for small binary size.
- Similar to
You can also modify these templates in the interactive mode to build your own custom template.
๐ Installation
To install cargo-kit, simply clone the repository and follow the instructions below:
git clone [email protected]:trinhminhtriet/cargo-kit.git
cd cargo-kit
cargo build --release
cp target/release/cargo-kit /usr/local/bin/cargo-kit
Alternatively, you can install the binary directly from the repository:
cargo install --path .
Running the below command will globally install the cargo-kit binary.
cargo install cargo-kit
Optionally, you can add ~/.cargo/bin to your PATH if it's not already there
echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
๐ก Usage
- Interactive mode (CLI dialog that guides you through the process):
$ cargo kit
- Non-interactive mode (directly apply a predefined template to your Cargo workspace):
$ cargo kit apply <template> <profile>
# For example, apply `fast-runtime` template to the `dist` profile
$ cargo kit apply fast-runtime dist
You can enable additional configuration options that require a nightly compiler by running cargo-kit with a
nightly Cargo (e.g. cargo +nightly kit) or by using the --nightly flag.
Note that you should be executing cargo kit inside a directory that is a part of a Cargo workspace. It will then
apply the configuration options to that workspace.
Caveats
- The configuration applied by this tool is quite opinionated and might not fit all use-cases
perfectly.
cargo-kitmostly serves to improve discoverability of possible Cargo profile and config options, to help you find the ideal settings for your use-cases. cargo-kitcurrently only modifiesCargo.tomlandconfig.toml. There are other things that can be configured to achieve e.g. even smaller binaries, but these are out of scope for this tool, at least at the moment.cargo-kitcurrently ignores Cargo settings that are not relevant to performance.- Cargo config (
config.toml) changes are applied to the globalbuild.hostflagssetting, because per-profile RUSTFLAGS are still unstable.
๐ค How to contribute
We welcome contributions!
- Fork this repository;
- Create a branch with your feature:
git checkout -b my-feature; - Commit your changes:
git commit -m "feat: my new feature"; - Push to your branch:
git push origin my-feature.
Once your pull request has been merged, you can delete your branch.
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
Dependencies
~9โ24MB
~299K SLoC