Innanzitutto, grazie per aver preso in considerazione di contribuire a Zen C! Sono le persone come te che rendono grande questo progetto.
Accogliamo tutti i contributi, che siano fix di bug, miglioramenti alla documentazione, la proposta di nuove funzionalità, o semplicemente la segnalazione di problemi.
Il flusso di lavoro generale per contribuire è:
- Forka la repository: Usa il workflow standard di GitHub per fare il fork della repository sul tuo account.
- Crea un Branch per la funzionalità: Crea un nuovo branch per la tua funzionalità o fix di bug. Questo mantiene le tue modifiche organizzate e separate dal branch principale.
git checkout -b feature/NewThing
- Apporta Modifiche: Scrivi il tuo codice o le modifiche alla documentazione.
- Verifica: Assicurati che le tue modifiche funzionino come previsto e non rompano le funzionalità esistenti (vedi Eseguire i test).
- Crea una Pull Request: Pusha il tuo branch sul tuo fork e invia una Pull Request (PR) alla repository principale di Zen C.
Usiamo le GitHub Issues e le Pull Requests per tracciare bug e funzionalità. Per aiutarci a mantenere la qualità:
- Usa i Modelli: Quando apri una Issue o una PR, usa i modelli forniti.
- Segnalazione Bug: Per segnalare errori.
- Richiesta Funzionalità: Per suggerire nuove funzionalità.
- Richiesta di Pull: Per inviare modifiche al codice.
- Sii Descrittivo: Fornire quanti più dettagli possibile.
- Controlli Automatici: Abbiamo un flusso di lavoro automatizzato che controlla la lunghezza della descrizione delle nuove Issues e PR. Se la descrizione è troppo breve (< 50 caratteri), verrà chiusa automaticamente. Questo serve per assicurarci di avere abbastanza informazioni per aiutarti.
- Segui lo stile C esistente trovato nel codebase. La coerenza è fondamentale.
- Puoi usare il file
.clang-formatfornito per formattare il tuo codice. - Mantieni il codice pulito e leggibile.
Se stai cercando di estendere il compilatore, ecco una mappa rapida del codebase:
- Parser:
src/parser/- Contiene l'implementazione del parser a discesa ricorsiva. - Codegen:
src/codegen/- Contiene la logica del transpiler che converte Zen C a GNU C/C11. - Standard Library:
std/- I moduli della libreria standard, scritti nello stesso Zen C.
La suite di test è il tuo miglior amico durante lo sviluppo. Assicurati che passino tutti i test prima di inviare una PR.
Per eseguire l'intera suite di test usando il compilatore predefinito (solitamente GCC):
make testPer eseguire un singolo file di test per risparmiare tempo durante lo sviluppo:
./zc run tests/test_match.zcZen C supporta diversi compilatori C come backend. Puoi eseguire i test specificamente contro di essi:
Clang:
./tests/run_tests.sh --cc clangZig (cc):
./tests/run_tests.sh --cc zigTCC (Tiny C Compiler):
./tests/run_tests.sh --cc tcc- Assicurati di aver aggiunto test per qualsiasi nuova funzionalità.
- Assicurati che tutti i test esistenti passino.
- Aggiorna la documentazione (file Markdown in
docs/,translations/oREADME.md) se appropriato. - Descrivi chiaramente le tue modifiche nella descrizione della PR. Linka qualsiasi issue correlata.
Grazie per il tuo contributo!