¡Primero que nada, gracias por considerar contribuir a Zen C! Son personas como tú las que hacen grande a este proyecto.
Damos la bienvenida a todas las contribuciones, ya sea arreglando bugs, añadiendo documentación, proponiendo nuevas características, o simplemente reportando problemas.
El flujo de trabajo general para contribuir es:
- Haz un Fork del Repositorio: Usa el flujo de trabajo estándar de GitHub para hacer un fork del repositorio a tu propia cuenta.
- Crea una Rama de Característica: Crea una nueva rama para tu característica o corrección de errores. Esto mantiene tus cambios organizados y separados de la rama principal.
git checkout -b feature/NuevaCosa
- Haz Cambios: Escribe tu código o cambios de documentación.
- Verifica: Asegúrate de que tus cambios funcionen como se espera y no rompan la funcionalidad existente (ver Ejecutando Pruebas).
- Envía un Pull Request: Empuja tu rama a tu fork y envía un Pull Request (PR) al repositorio principal de Zen C.
Usamos GitHub Issues y Pull Requests para rastrear errores y características. Para ayudarnos a mantener la calidad:
- Use Plantillas: Al abrir un Issue o PR, use las plantillas proporcionadas.
- Reporte de Error: Para reportar errores.
- Solicitud de Función: Para sugerir nuevas características.
- Solicitud de Extracción: Para enviar cambios de código.
- Sea Descriptivo: Proporcione tantos detalles como sea posible.
- Comprobaciones Automatizadas: Tenemos un flujo de trabajo automatizado que verifica la longitud de la descripción de nuevos Issues y PRs. Si la descripción es demasiado corta (< 50 caracteres), se cerrará automáticamente. Esto es para asegurar que tenemos suficiente información para ayudarle.
- Sigue el estilo de C existente que se encuentra en el código base. La consistencia es clave.
- Puedes usar el archivo
.clang-formatproporcionado para formatear tu código. - Mantén el código limpio y legible.
Si estás buscando extender el compilador, aquí hay un mapa rápido del código base:
- Parser:
src/parser/- Contiene la implementación del parser de descenso recursivo. - Codegen:
src/codegen/- Contiene la lógica del transpilador que convierte Zen C a GNU C/C11. - Biblioteca Estándar:
std/- Los módulos de la biblioteca estándar, escritos en el propio Zen C.
La suite de pruebas es tu mejor amiga al desarrollar. Por favor, asegúrate de que todas las pruebas pasen antes de enviar un PR.
Para ejecutar la suite de pruebas completa usando el compilador por defecto (usualmente GCC):
make testPara ejecutar un solo archivo de prueba para ahorrar tiempo durante el desarrollo:
./zc run tests/test_match.zcZen C soporta múltiples compiladores de C como backends. Puedes ejecutar pruebas contra ellos específicamente:
Clang:
./tests/run_tests.sh --cc clangZig (cc):
./tests/run_tests.sh --cc zigTCC (Tiny C Compiler):
./tests/run_tests.sh --cc tcc- Asegúrate de haber añadido pruebas para cualquier nueva funcionalidad.
- Asegúrate de que todas las pruebas existentes pasen.
- Actualiza la documentación (archivos Markdown en
docs/,translations/oREADME.md) si es apropiado. - Describe tus cambios claramente en la descripción del PR. Enlaza a cualquier issue relacionado.
¡Gracias por tu contribución!