Contributions are welcome! This document outlines how to contribute to CSVCoder.
-
Clone the repository:
git clone https://github.com/g-cqd/CSVCoder.git cd CSVCoder -
Build the package:
swift build
-
Run tests:
swift test --parallel -
Run benchmarks (must be
-c release, the benchmark harness refuses to run without optimizations):swift run -c release CSVCoderBenchmarks
- Swift 6.2+
- Xcode 26+ (Swift 6.2 toolchain)
- macOS 15+ / iOS 18+ / tvOS 18+ / watchOS 11+ / visionOS 2+
- Follow Swift API Design Guidelines
- All public types must be
Sendable - Use
nonisolatedfor pure functions - Prefer
async/awaitover callbacks - No force unwrapping in library code
This repo uses project-hooks
for pre-commit and pre-push validation. Configuration is in
.project-hooks.yml. To install the hooks locally after cloning:
project-hooks installThe hooks auto-detect swift-format and the SwiftPM test runner. The
config layered on top enforces Conventional Commits on pushed commits
and runs swift test --parallel on pre-push.
- Fork the repository and create a feature branch
- Install hooks:
project-hooks install - Ensure all tests pass:
swift test --parallel - Add tests for new functionality
- Update documentation if needed
- Submit a pull request with a clear description; commit messages
must follow Conventional Commits (
feat:,fix:,perf:, etc.)
Please use GitHub Issues to report bugs or request features. Include:
- Swift/Xcode version
- Platform and OS version
- Minimal reproduction case
- Expected vs. actual behavior