Documentation
# Contributing to fast

Thank you for your interest in contributing to fast! This document provides guidelines for contributing to the project.

## Getting Started

1. Fork the repository
2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/fast.git`
3. Create a new branch: `git checkout -b feature/your-feature-name`
4. Make your changes
5. Run tests and ensure compilation: `cargo test && cargo check`
6. Commit your changes with a descriptive message
7. Push to your fork and submit a pull request

## Development Setup

### Requirements
- Rust nightly (for unstable features)
- Linux with io_uring support (kernel 5.1+)
- x86_64 or aarch64 architecture

### Building
```bash
cargo build
cargo test
```

## Code Guidelines

- **No external dependencies**: This is a core design principle
- **Safety first**: Unsafe code must be thoroughly documented and justified
- **Performance matters**: But not at the expense of correctness
- **Platform-specific code**: Use conditional compilation appropriately
- **Documentation**: Public APIs must be documented
- **Tests**: Add tests for new functionality

## Pull Request Process

1. **One feature per PR**: Keep changes focused and reviewable
2. **Update documentation**: Including inline comments and README if needed
3. **Add tests**: All new features should have corresponding tests
4. **Fix warnings**: Code must compile without warnings
5. **Describe changes**: Provide clear PR description and motivation

## Code Style

- Follow Rust standard formatting: `cargo fmt`
- Use descriptive variable names
- Keep functions focused and small
- Comment complex algorithms
- Use type annotations where helpful for clarity

## Testing

- Unit tests go in the same file as the code
- Integration tests go in `tests/`
- Use `#[cfg(test)]` for test modules
- Mock external dependencies when needed

## Areas Needing Help

- Completing `todo!()` implementations
- Performance benchmarking
- Documentation improvements
- Cross-platform compatibility research
- Security auditing of unsafe code

## Communication

- Open an issue for bugs or feature requests
- Discuss major changes before implementing
- Be respectful and constructive in all interactions

## License

By contributing, you agree that your contributions will be licensed under the MIT License.