Primeiramente, obrigado por considerar contribuir para o Zen C! São pessoas como você que tornam este projeto ótimo.
Nós damos boas-vindas a todas as contribuições, seja consertando bugs, adicionando documentação, propondo novas funcionalidades ou apenas reportando problemas.
O fluxo de trabalho geral para contribuir é:
- Fork do Repositório: Use o fluxo de trabalho padrão do GitHub para fazer um fork do repositório para sua própria conta.
- Crie um Feature Branch: Crie um novo branch para sua funcionalidade ou correção de bug. Isso mantém suas mudanças organizadas e separadas do branch principal.
git checkout -b feature/NewThing
- Faça Mudanças: Escreva seu código ou mudanças de documentação.
- Verifique: Garanta que suas mudanças funcionem como esperado e não quebrem funcionalidades existentes (veja Executando Testes).
- Submeta um Pull Request: Dê push do seu branch para seu fork e submeta um Pull Request (PR) para o repositório principal do Zen C.
Usamos GitHub Issues e Pull Requests para rastrear bugs e recursos. Para nos ajudar a manter a qualidade:
- Use Templates: Ao abrir uma Issue ou PR, use os templates fornecidos.
- Relatório de Bug: Para reportar erros.
- Solicitação de Recurso: Para sugerir novos recursos.
- Pull Request: Para enviar alterações de código.
- Seja Descritivo: Forneça o máximo de detalhes possível.
- Verificações Automatizadas: Temos um fluxo de trabalho automatizado que verifica o comprimento da descrição de novas Issues e PRs. Se a descrição for muito curta (< 50 caracteres), ela será fechada automaticamente. Isso é para garantir que tenhamos informações suficientes para ajudá-lo.
- Siga o estilo C existente encontrado na base de código. Consistência é chave.
- Você pode usar o arquivo
.clang-formatfornecido para formatar seu código. - Mantenha o código limpo e legível.
Se você está procurando estender o compilador, aqui está um mapa rápido da base de código:
- Parser:
src/parser/- Contém a implementação do parser de descida recursiva. - Codegen:
src/codegen/- Contém a lógica do transpilador que converte Zen C para GNU C/C11. - Biblioteca Padrão:
std/- Os módulos da biblioteca padrão, escritos no próprio Zen C.
A suíte de testes é sua melhor amiga ao desenvolver. Por favor, garanta que todos os testes passem antes de submeter um PR.
Para executar a suíte de testes completa usando o compilador padrão (geralmente GCC):
make testPara executar um único arquivo de teste para economizar tempo durante o desenvolvimento:
./zc run tests/test_match.zcZen C suporta múltiplos compiladores C como backends. Você pode executar testes contra eles especificamente:
Clang:
./tests/run_tests.sh --cc clangZig (cc):
./tests/run_tests.sh --cc zigTCC (Tiny C Compiler):
./tests/run_tests.sh --cc tcc- Garanta que você adicionou testes para qualquer nova funcionalidade.
- Garanta que todos os testes existentes passem.
- Atualize a documentação (arquivos Markdown em
docs/,translations/ouREADME.md) se apropriado. - Descreva suas mudanças claramente na descrição do PR. Link para qualquer issue relacionada.
Obrigado pela sua contribuição!