Skip to content

0.5.0-alpha

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Apr 23:24
· 17 commits to main since this release

Harbour Rust 0.5.0-alpha

English

Harbour Rust is an independent, community-led, open source compiler project written in Rust and designed for compatibility with CA-Clipper and Harbour.

This repository is maintained as a public, non-commercial contribution to the software community. It is not affiliated with, endorsed by, or sponsored by the Harbour Project, xHarbour, CA-Clipper, or any related trademark owner. Those names are used only to describe compatibility goals and historical context.

This release publishes the first 0.5.0-alpha line after the completion of phases 0 through 14 and the first release slice of phase 15.

Highlights

  • Curated phase 15 compatibility expansion focused on advanced preprocessor behavior.
  • Expanded PP corpus guided by harbour-core/tests/hbpp/, including DEFINE CLIPBOARD, RELEASE, SAVE, and the first LIST corridor.
  • Structural improvements in the PP matcher for compound restricted markers, including forms such as <prn:TO PRINTER>.
  • Per-item rendering for blockify result markers over lists, covering <{v}> in LIST.
  • Continued coverage for previously released compiler layers:
    • lexer
    • preprocessor
    • parser / AST
    • HIR / semantic analysis
    • runtime
    • IR
    • C code generation backend
  • Cross-platform release assets for Linux, macOS, and Windows.
  • Validation through local release preflight plus GitHub Actions quality and release workflows.

Release assets

This release publishes:

  • harbour-rust-cli-0.5.0-alpha-linux-x86_64.zip
  • harbour-rust-cli-0.5.0-alpha-macos-aarch64.zip
  • harbour-rust-cli-0.5.0-alpha-windows-x86_64.zip
  • benchmark-report.md
  • SHA256SUMS.txt

Scope

This alpha consolidates a focused post-0.4 compatibility slice. The main goal is to grow observable Harbour preprocessor compatibility through small, reversible, oracle-backed increments rather than broad unmeasured matcher expansion.

Current baseline areas:

  • parser and runtime remain usable for the currently implemented subset
  • C remains the primary executable backend
  • DBF/RDD support remains present as an initial foundation
  • public repository governance, bilingual documentation, issue templates, Pages deployment, CI, and release workflows are in place
  • advanced PP compatibility is broader than in 0.4.0-alpha, especially around selected command translations, list markers, and curated hbpptest / _pp_test slices

Known limitations

This is still alpha software.

Known limitations include:

  • partial rather than complete xBase dialect coverage
  • selected builtins implemented only for the currently tested subset of value kinds
  • no native backend yet; codegen-c is the primary executable backend
  • the preprocessor is not yet a complete token-based engine equivalent to Harbour ppcore.c
  • LIST REST, LIST ALL, and larger LIST variations remain outside this release slice
  • compatibility gaps remain in broader macro behavior, runtime fidelity, and extended RDD coverage
  • automatic comparison against Harbour may still depend on an external local runner in some workflows

Validation used for this release

cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace
cargo check --manifest-path fuzz/Cargo.toml
cargo run -p harbour-rust-tests --bin benchmark-suite -- --fixture examples/hello.prg --iterations 1
cargo build --release -p harbour-rust-cli

The release workflow also built and published CLI assets for Ubuntu/Linux, Windows, and macOS.

Project position

Harbour Rust is:

  • open source
  • community-oriented
  • non-commercial as a project initiative
  • independently maintained
  • intended as a respectful technical contribution to a historically important ecosystem

The project also has a personal origin: xBase was the maintainer's first serious programming environment and played an important role in his path as a developer. That background motivates the work, but the project is intended to remain technically rigorous, community-oriented, and professionally documented.

Documentation

Portugues do Brasil

Harbour Rust e um projeto independente, open source e orientado pela comunidade, escrito em Rust e voltado a compatibilidade com CA-Clipper e Harbour.

Este repositorio e mantido como uma contribuicao publica e sem fins lucrativos para a comunidade de software. Ele nao e afiliado, endossado ou patrocinado pelo Harbour Project, xHarbour, CA-Clipper ou por qualquer titular de marca relacionado. Esses nomes sao usados apenas para descrever objetivos de compatibilidade e contexto historico.

Esta release publica a primeira linha 0.5.0-alpha apos a conclusao das fases 0 a 14 e o primeiro recorte publicavel da fase 15.

Destaques

  • Expansao curada de compatibilidade da fase 15 com foco em comportamento avancado do pre-processador.
  • Ampliacao do corpus PP guiado por harbour-core/tests/hbpp/, incluindo DEFINE CLIPBOARD, RELEASE, SAVE e o primeiro corredor LIST.
  • Melhorias estruturais no matcher do PP para restricted markers compostos, incluindo formas como <prn:TO PRINTER>.
  • Renderizacao por item para result markers blockify sobre listas, cobrindo <{v}> em LIST.
  • Continuidade da cobertura das camadas de compilador ja publicadas:
    • lexer
    • pre-processador
    • parser / AST
    • HIR / analise semantica
    • runtime
    • IR
    • backend C para geracao de codigo
  • Assets de release multiplataforma para Linux, macOS e Windows.
  • Validacao por preflight local de release e workflows de qualidade/release no GitHub Actions.

Assets da release

Esta release publica:

  • harbour-rust-cli-0.5.0-alpha-linux-x86_64.zip
  • harbour-rust-cli-0.5.0-alpha-macos-aarch64.zip
  • harbour-rust-cli-0.5.0-alpha-windows-x86_64.zip
  • benchmark-report.md
  • SHA256SUMS.txt

Escopo

Este alpha consolida um recorte focado de compatibilidade pos-0.4. O objetivo principal e ampliar a compatibilidade observavel do pre-processador Harbour por incrementos pequenos, reversiveis e ancorados em oraculo, em vez de expandir genericamente o matcher sem medicao.

Areas do baseline atual:

  • parser e runtime continuam utilizaveis para o subconjunto ja implementado
  • C continua sendo o backend executavel principal
  • suporte a DBF/RDD permanece presente como fundacao inicial
  • governanca publica do repositorio, documentacao bilingue, templates de issues, Pages deployment, CI e workflows de release ja estao disponiveis
  • a compatibilidade avancada de PP esta mais ampla que em 0.4.0-alpha, especialmente em traducoes selecionadas de comandos, markers de lista e recortes curados de hbpptest / _pp_test

Limitacoes conhecidas

Este ainda e um software em estagio alpha.

Limitacoes conhecidas incluem:

  • cobertura parcial, e nao completa, dos dialetos xBase
  • alguns builtins implementados apenas para o subconjunto de tipos atualmente coberto por testes
  • ainda nao existe backend nativo; codegen-c continua sendo o backend executavel principal
  • o pre-processador ainda nao e uma engine token-based completa equivalente ao ppcore.c do Harbour
  • LIST REST, LIST ALL e variacoes maiores de LIST permanecem fora deste recorte de release
  • ainda existem lacunas de compatibilidade em comportamento macro mais amplo, maior fidelidade de runtime e cobertura estendida de RDD
  • a comparacao automatica com Harbour ainda pode depender de runner externo/local em alguns fluxos

Validacao usada nesta release

cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace
cargo check --manifest-path fuzz/Cargo.toml
cargo run -p harbour-rust-tests --bin benchmark-suite -- --fixture examples/hello.prg --iterations 1
cargo build --release -p harbour-rust-cli

O workflow de release tambem compilou e publicou assets da CLI para Ubuntu/Linux, Windows e macOS.

Posicionamento do projeto

Harbour Rust e:

  • open source
  • orientado pela comunidade
  • sem fins lucrativos como iniciativa de projeto
  • mantido de forma independente
  • pensado como uma contribuicao tecnica respeitosa a um ecossistema historicamente importante

O projeto tambem tem uma origem pessoal: xBase foi o primeiro ambiente de programacao realmente importante na trajetoria do mantenedor. Esse contexto motiva o trabalho, mas o projeto busca permanecer tecnicamente rigoroso, orientado a comunidade e documentado de forma profissional.

Documentacao