Thanks for your interest in contributing to Gust!
- Rust 1.75+ (install via rustup)
- Swift 5.9+
- Git
$ git clone https://github.com/user/gust.git
$ cd gust
$ cargo build$ cargo run -- --help
$ cargo run -- new testpkg
$ cargo run -- build$ cargo test$ cargo build --release
$ ./target/release/gust --helpcrates/
├── gust/ # CLI and main binary
├── gust-types/ # Core data types (Package, Dependency, etc.)
├── gust-manifest/ # Gust.toml and Package.swift parsing
├── gust-resolver/ # Dependency resolution (PubGrub-based)
├── gust-fetch/ # Parallel package fetching
├── gust-build/ # Swift compilation orchestration
├── gust-cache/ # Content-addressable store
├── gust-binary-cache/ # Compiled artifact caching
├── gust-lockfile/ # Gust.lock handling
├── gust-registry/ # Swift Package Registry client
├── gust-platform/ # Platform/toolchain detection
└── gust-diagnostics/ # Error formatting
- Fork and clone the repository
- Create a branch for your changes:
git checkout -b my-feature - Make your changes with clear, focused commits
- Add tests for new functionality
- Run tests:
cargo test - Run clippy:
cargo clippy - Format code:
cargo fmt - Submit a PR with a clear description
- Run
cargo fmtbefore committing - Run
cargo clippyand fix warnings - Keep functions focused and small
- Add doc comments for public APIs
- Use meaningful variable names
Use clear, concise commit messages:
Add parallel dependency fetching
- Use tokio::spawn for concurrent git clones
- Add semaphore to limit concurrency
- Show progress bar during fetch
- Keep PRs focused on a single change
- Update documentation if needed
- Add tests for bug fixes and new features
- Ensure CI passes
- Improve error messages
- Add more tests
- Documentation improvements
- CLI help text enhancements
- Swift Package Registry support
- Workspace/monorepo support
- Plugin system
- Performance optimizations
- Linux packaging
$ cargo build --release
$ ./scripts/benchmark.shOpen an issue for questions, bug reports, or feature requests.
By contributing, you agree that your contributions will be licensed under the MIT License.