Thanks for considering contributing to minsql! We appreciate your interest in making this project better.
Keep things respectful and professional. We're all here to build something great together.
- Rust 1.82+
- GCC/Clang with C++20 support
- Linux environment (Ubuntu/Debian works best)
- Git
git clone https://github.com/notwaris/minsql.git
cd minsql
cargo buildcargo test
cargo test --package validation- Follow standard Rust conventions
- Run
cargo fmtbefore committing - Fix all
cargo clippywarnings - Keep functions small and focused
- Comment the "why", not the "what"
- 4 spaces for indentation
- Prefer stack allocation when possible
- Use RAII in C++ code
- Keep C code simple
- Avoid complex macros
Keep them clear and descriptive:
Add B-tree index split logic
Implements node splitting when capacity is exceeded.
Uses median-split strategy for balanced growth.
- Fork the repo
- Create a branch:
git checkout -b your-feature - Make your changes
- Run tests:
cargo test - Commit your work
- Push to your fork
- Open a PR
Keep PRs focused on one thing. Include tests for new features. Make sure everything passes before submitting.
- Storage engine optimizations
- Query optimizer improvements
- New index types
- Replication stability
- Performance benchmarks
- Usage examples
- Architecture docs
- Performance guides
- Troubleshooting tips
- Unit tests
- Integration tests
- Crash recovery tests
- Performance tests
- Rust: Safety-critical logic, orchestration
- C: Performance-critical deterministic code (WAL, pages)
- C++: Complex data structures (indexes, trees)
Don't mix these without good reason.
- Document all unsafe Rust code
- No memory leaks in C/C++
- Validate all FFI inputs
- Clean up resources properly
- Profile before you optimize
- Benchmark significant changes
- Think about cache effects
- Minimize allocations in hot paths
- Document performance-critical code
Open an issue or reach out to the maintainer. We're happy to help!
By contributing, you agree your code will be MIT licensed.