English {#english}
Sprint-Driven Roadmap: One Release per Sprint
How do you evolve a Pascal compiler without drowning in scope? CrabPascal uses a simple contract: one sprint, one release, one clear value proposition. The living document is roadmap/sprints-overview — a chronological map from diagnostics (v2.9.9) through parser hardening, RTL namespaces, and beyond.
The convention
1 sprint = 1 version tag = 1 review doc
Each sprint names:
- Valor — what Delphi pain point it removes
- Agentes — Parser, RTL Surface, Runtime, QA (logical ownership areas)
- Aceitação — commands and tests that must pass before tag approval
This beats a vague "v3 someday" roadmap because every merge request can answer: which sprint does this advance?
Example arc: Sprints 1–3
Sprint 1 (v2.9.9) — Real diagnostic spans. check reports line/column, not 1:1 placeholders. Golden tests in tests/check_diagnostics.rs.
Sprint 2 (v2.10.0) — System.* namespaces. Shims under rtl/sys/ so uses System.SysUtils resolves like Delphi:
uses System.SysUtils;
var
S: string;
begin
S := IntToStr(42);
WriteLn(Trim(S));
end.
Sprint 3 (v2.11.0) — System.Classes minimum: streams, TStringList, enough for libraries that depend on Classes.
Each sprint closes with a review markdown (sprint-N-review.md) and a release note (release-v2-XX-0.md).
Later sprints you may have missed
| Sprint | Version | Theme |
|---|---|---|
| 11 | v2.19.0 | Parser hardening (multi-fields, generics dot) |
| 12 | v2.20.0 | Method-based properties |
| 13 | v2.21.0 | Honest codegen for exceptions |
| 14+ | v2.22.0+ | Continued RTL and parity work |
Status table in the overview tracks closed, in-progress, and scheduled sprints — updated as tags ship.
Why sprints fit open source
Contributors do not need the entire compiler in their head. Pick a sprint goal, add a fixture, open a PR. Reviewers check acceptance criteria instead of debating philosophy.
cargo test
crab-pascal check examples/crud/crud.dpr
The PowerShell harness tests/test_exemplos_completo.ps1 remains an environment-level gate for Horse examples.
Drift and honesty
The overview notes version drift between binary, VS Code extension, and docs. Sprints make drift visible: if code ships without review doc, the roadmap lies. We fix the doc or cut the tag.
How to use this as a user
- Read the sprint review for your installed version.
- Check
doc_refsin blog posts — they point to Mintlify paths. - Upgrade when a sprint closes a gap you hit (properties, namespaces, parser).
How to use this as a contributor
- Open
roadmap/sprints-overview.md. - Find the active or next sprint.
- Claim an unchecked bullet; link your PR to that sprint number.
CrabPascal is MIT-licensed at bitbucket.org/alphatecnologia/crabpascal. The sprint roadmap turns compiler construction into a sequence of small, shippable wins — exactly what Delphi developers need to trust incremental adoption.
Português {#portugus}
Roadmap por sprint: uma release por sprint
Como evoluir um compilador Pascal sem afogar em escopo? O CrabPascal usa um contrato simples: um sprint, uma release, uma proposta de valor clara. O documento vivo é roadmap/sprints-overview — mapa cronológico desde diagnósticos (v2.9.9) até parser hardening, namespaces RTL e além.
A convenção
1 sprint = 1 tag de versão = 1 doc de review
Cada sprint nomeia:
- Valor — qual dor Delphi remove
- Agentes — Parser, RTL Surface, Runtime, QA (áreas lógicas de ownership)
- Aceitação — comandos e testes que devem passar antes da tag
Isso supera roadmap vago "v3 algum dia" porque todo merge request responde: qual sprint isso avança?
Exemplo: Sprints 1–3
Sprint 1 (v2.9.9) — Spans reais nos diagnósticos. check reporta linha/coluna, não placeholder 1:1. Golden tests em tests/check_diagnostics.rs.
Sprint 2 (v2.10.0) — Namespaces System.*. Shims em rtl/sys/ para uses System.SysUtils resolver como no Delphi:
uses System.SysUtils;
var
S: string;
begin
S := IntToStr(42);
WriteLn(Trim(S));
end.
Sprint 3 (v2.11.0) — Mínimo de System.Classes: streams, TStringList, suficiente para bibliotecas que dependem de Classes.
Cada sprint fecha com review markdown (sprint-N-review.md) e release note (release-v2-XX-0.md).
Sprints posteriores
| Sprint | Versão | Tema |
|---|---|---|
| 11 | v2.19.0 | Parser hardening (multi-fields, ponto em genéricos) |
| 12 | v2.20.0 | Properties por método |
| 13 | v2.21.0 | Codegen honesto para exceptions |
| 14+ | v2.22.0+ | RTL e paridade contínuas |
A tabela de status no overview rastreia sprints fechados, em andamento e programados — atualizada conforme tags saem.
Por que sprints funcionam em open source
Contribuidores não precisam do compilador inteiro na cabeça. Escolha um objetivo de sprint, adicione fixture, abra PR. Reviewers checam critérios de aceitação em vez de debater filosofia.
cargo test
crab-pascal check examples/crud/crud.dpr
O harness PowerShell tests/test_exemplos_completo.ps1 continua como gate de ambiente para exemplos Horse.
Drift e honestidade
O overview anota drift de versão entre binário, extensão VS Code e docs. Sprints tornam drift visível: se código shipa sem review doc, o roadmap mente. Corrigimos o doc ou cortamos a tag.
Como usuário
- Leia o sprint review da versão instalada.
- Veja
doc_refsnos posts do blog — apontam para paths Mintlify. - Atualize quando um sprint fechar uma lacuna que você encontrou (properties, namespaces, parser).
Como contribuidor
- Abra
roadmap/sprints-overview.md. - Ache sprint ativo ou próximo.
- Pegue bullet desmarcado; linke o PR ao número do sprint.
CrabPascal é MIT em bitbucket.org/alphatecnologia/crabpascal. O roadmap por sprint transforma construção de compilador em sequência de vitórias pequenas e entregáveis — exatamente o que desenvolvedores Delphi precisam para confiar em adoção incremental.
Published on dev.to/@crabpascal · Código em CrabPascal
Top comments (0)