Contribuindo com o B-FAST¶
Obrigado pelo seu interesse em contribuir com o B-FAST! Apoiamos e incentivamos contribuições de toda a comunidade e estamos animados para ver o que você trará para o projeto.
🌟 Filosofia¶
"O conhecimento é a única riqueza que cresce quando a compartilhamos"
O B-FAST foi construído sobre o princípio do compartilhamento aberto de conhecimento. Toda contribuição, não importa o tamanho, ajuda a tornar a serialização de alta performance acessível a mais desenvolvedores.
🚀 Começando¶
Pré-requisitos¶
- Rust 1.70+ (para o core da biblioteca)
- Python 3.8+ com
uvoupip - Node.js 18+ (para o cliente TypeScript)
- Git para controle de versão
Configuração do Ambiente de Desenvolvimento¶
-
Faça um Fork e clone o repositório:
-
Configure o ambiente Python:
-
Instale as dependências do TypeScript:
-
Execute os testes para verificar o ambiente:
🛠️ Fluxo de Trabalho de Desenvolvimento¶
Fazendo Alterações¶
- Crie uma branch de feature:
Convenções de nomenclatura de branches:
- feat/* - Novas funcionalidades ou melhorias (ex: feat/streamable-http)
- fix/* - Correções de bugs (ex: fix/memory-leak)
- docs/* - Alterações exclusivas de documentação (ex: docs/contributing)
Nota: A esteira de CI roda automaticamente em branches feat/* e fix/*.
-
Faça suas alterações seguindo nossos padrões de código.
-
Execute a suíte completa de testes:
-
Faça commits com mensagens descritivas:
📝 Tipos de Contribuição¶
🐛 Relatórios de Bugs (Bug Reports)¶
- Use o template de bug report no GitHub
- Inclua um exemplo mínimo reproduzível
- Especifique as versões do Python, Node.js e Rust utilizadas
- Inclua mensagens de erro e stack traces completos
✨ Sugestões de Recursos (Feature Requests)¶
- Abra uma issue ou discussão explicando o recurso
- Explique o caso de uso e os benefícios reais
- Considere compatibilidade com versões anteriores e impacto em performance
🔧 Contribuições de Código¶
- Biblioteca Core em Rust:
src/lib.rs,src/errors.rs - Bindings em Python:
python/b_fast/ - Cliente TypeScript:
client-ts/ - Documentação:
docs/,zensical.toml,README.md - Testes:
tests/
📚 Documentação¶
- Melhorias na documentação da API
- Exemplos de uso e tutoriais práticos
- Guias de otimização de performance
- Tradução e revisão de conteúdos
🎯 Padrões de Código¶
Python¶
- Formatação & Linter: Ruff com a configuração do projeto
- Type hints: Obrigatório para APIs públicas
- Testes:
pytestcom nomes descritivos
Rust¶
- Formatação:
cargo fmt - Linter:
cargo clippy - Documentação: Comentários Rustdoc para APIs públicas
- Segurança: Minimizar uso de código
unsafe, documentando quando estritamente necessário
TypeScript¶
- Formatação: Prettier (via scripts npm)
- Linter: Configuração ESLint do projeto
- Tipagem: TypeScript estrito, evite
anyem APIs públicas - Compatibilidade: ES2020+ para ambientes modernos
🏷️ Versionamento (Single Source of Truth)¶
- A versão do projeto é definida exclusivamente em
Cargo.toml([package].version). - O
pyproject.tomlutilizadynamic = ["version"]e deriva a versão do wheel Python automaticamente via Maturin. - A versão em runtime Python
b_fast.__version__é exposta diretamente pela extensão Rust compilada viaenv!("CARGO_PKG_VERSION"). - Para sincronizar a versão com o
client-ts/package.json, execute:
🧪 Diretrizes de Testes¶
Categorias de Testes¶
- Testes unitários: Teste de funções e métodos individuais
- Testes de integração: Teste de interação entre componentes e serialização
- Testes de performance: Benchmarks em rotas críticas (Guia de Performance)
- Testes de compatibilidade: Validação cruzada entre Python e TypeScript
Requisitos para Testes¶
- Todas as novas funcionalidades devem incluir testes
- Correções de bugs devem incluir testes de regressão
- Mudanças focadas em performance devem incluir dados comparativos de benchmarks
- Mudanças com quebra de compatibilidade exigem notas de migração
📋 Processo de Pull Request¶
- Certifique-se de que sua PR:
- Possui um título claro e descritivo
- Referencia issues relacionadas (
Fixes #123) - Inclui testes para o novo código
- Atualiza a documentação quando aplicável
-
Passa em todas as checagens do CI
-
Revisão:
- Os mantenedores revisarão em até 48 horas
- Responda aos comentários e sugestões de forma construtiva
-
Mantenha o tom sempre respeitoso
-
Requisitos para Merge:
- Todos os testes passando
- Aprovação na revisão de código
- Sem conflitos de merge
- Documentação sincronizada
🤝 Diretrizes da Comunidade¶
- Seja Respeitoso: Use linguagem inclusiva e respeite diferentes pontos de vista.
- Seja Colaborativo: Compartilhe conhecimento, dê crédito ao trabalho de outros e ajude recém-chegados.
- Seja Profissional: Mantenha discussões construtivas e siga o Código de Conduta.
🆘 Onde Obter Ajuda¶
- Discussões: GitHub Discussions
- Issues: GitHub Issues
- Documentação: https://marcelomarkus.github.io/b-fast/pt/
Muito obrigado por contribuir com o B-FAST! Juntos tornamos a serialização de altíssima performance acessível para todos. 🚀