Saltearse al contenido

Contribuir

Desarrollamos en abierto. Esta página es el espejo público de CONTRIBUTING.md en el repo del motor.

TL;DR

  1. Leé los RFCsdocs/rfc/. Son la fuente canónica de decisiones de diseño sobre el storage engine, query engine y los subsistemas que los rodean.
  2. Abrí issues para discutir antes de mandar PRs grandes.
  3. PRs chicos son bienvenidos en cualquier momento — fixes de typos, mejoras a docs, ajustes de perf, agregados de tests.

Workflow

  • main es la branch de desarrollo. Las releases van con tag.
  • Cada PR corre cargo fmt --check, cargo clippy --workspace --all-targets -- -D warnings y cargo test --workspace.
  • Los commits deben ir firmados (git commit -S).
  • Los títulos de PR siguen Conventional Commits: feat:, fix:, docs:, refactor:, test:, bench:, chore:.

Estándares de código

  • Rust edition 2021, MSRV 1.85 (mantenido al día).
  • unsafe sólo en hot paths con invariantes documentados y comentarios // SAFETY:.
  • Todas las APIs públicas documentadas (cargo doc --workspace --no-deps debe pasar).
  • Errores vía thiserror; evitar anyhow en crates de librería (OK en binarios / tests).
  • Instrumentación de tracing en funciones pub async (#[tracing::instrument]).
  • Los tests viven al lado del código (#[cfg(test)] mod tests) para los unitarios; los tests de integración van en el directorio tests/ del crate.

Testing

  • Tests de propiedad con proptest para invariantes.
  • Loom para code paths críticos de concurrencia donde corresponda.
  • Integración local contra un endpoint compatible con S3 vía docker compose -f tests/docker-compose.s3.yml up (LocalStack).
  • Benchmarks con criterion; se espera que los resultados sean reproducibles.

Comunicación

Ver también