Projeto de compilador em Rust para compatibilidade com CA-Clipper/Harbour, com backend C executável e pragmático, CLI moderna e foco em modernização de sistemas xBase.
Release atual | Todas as releases | Documentação | Contribuição
Harbour Rust é um projeto de compilador open source, independente e orientado pela comunidade, escrito em Rust e voltado à compatibilidade com CA-Clipper e Harbour.
Este repositório é mantido como uma contribuição pública e sem fins lucrativos para a comunidade de software. Ele não é afiliado, endossado nem patrocinado pelo Harbour Project, xHarbour, CA-Clipper ou por titulares de marcas relacionadas a esses nomes. Esses nomes são usados apenas para descrever metas de compatibilidade e contexto histórico.
O projeto também tem uma origem pessoal: xBase foi o primeiro ambiente de programação estudado de forma mais séria pelo mantenedor e teve papel importante na sua trajetória como desenvolvedor. Esse contexto inspira o trabalho, mas o repositório foi pensado para permanecer tecnicamente rigoroso, orientado à comunidade e documentado de forma profissional.
- oferecer uma implementação moderna em Rust para uma família de linguagens xBase historicamente importante;
- priorizar compatibilidade observável antes de elegância interna nas fases iniciais;
- manter a arquitetura do compilador compreensível, testável e evolutiva;
- desenvolver o projeto em público com documentação, testes e governança adequados para colaboração de longo prazo.
O repositório concluiu as fases 0 a 16 do roadmap atual com a linha de release 0.7.0-alpha. O baseline atual de fidelidade de runtime adiciona slices pequenos de runtime/biblioteca Harbour ancorados em oráculo, sem alegar cobertura ampla e não medida de APIs.
Destaques atuais:
- pipelines de parser, HIR, sema, runtime, IR e backend C executável atual implementados;
- compatibilidade procedural, arrays,
STATIC, memvars, codeblocks e marcadores avançados selecionados do pré-processador disponíveis; - base inicial de DBF/RDD presente;
- slices focados de runtime para
hb_JsonDecode(), família zlib ehb_processRun(), incluindohb_ZCompressBound(),hb_ZError()e captura de stdout, cobertos por testes e limites documentados; - CLI, harnesses de regressão, benchmarks, scaffold de fuzzing, workflows de release e validação de CI multiplataforma configurados.
Direção de curto prazo:
- continuar fidelidade de runtime nas superfícies restantes de
hb_gzCompress()ehb_processRun()apenas com novos oráculos focados; - corredores adiados: sockets e threading, porque exigem design multiplataforma de IO e concorrência antes que qualquer alegação de compatibilidade seja útil.
- Pre-release atual: 0.7.0-alpha
- Todas as releases: github.com/arcostasi/harbour-rust/releases
- Assets da pre-release atual:
Comece por aqui:
- Roadmap
- Compatibilidade
- Contribuição
- Governança
- Segurança
- Suporte
- Política de Proveniência e Copyright
- Centro de Documentação
Guias técnicos:
cargo fmt --all
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace
cargo run -p harbour-rust-cli -- help
Harbour Rust é:
- open source;
- orientado à comunidade;
- sem fins lucrativos como iniciativa de projeto;
- mantido de forma independente;
- pensado como uma contribuição técnica respeitosa para um ecossistema clássico.
Contribuições são bem-vindas, mas todo material enviado precisa ser original ou legalmente reutilizável. Consulte PROVENANCE.pt-BR.md para ver a política do repositório sobre originalidade, referências ao upstream, tradução e uso de material de terceiros.
- Use GitHub Issues para bugs focados, problemas de compatibilidade e itens de trabalho com escopo claro.
- Use GitHub Discussions para dúvidas, ideias e conversas de design mais amplas quando Discussions estiver habilitado no repositório.
- Use pull requests para mudanças concretas e revisáveis, com testes e documentação sincronizada.
Os templates em .github/ foram pensados para atender contribuidores em Inglês e Português sem alterar a política canônica do projeto.
Este repositório é distribuído sob a Apache License 2.0.
