DEV Community

CrabPascal
CrabPascal

Posted on

Sprint-Driven Roadmap: One Release per Sprint | Roadmap por sprint: uma release por sprint

Bilingual post · Post bilíngue

Jump to: English · Português


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
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

  1. Read the sprint review for your installed version.
  2. Check doc_refs in blog posts — they point to Mintlify paths.
  3. Upgrade when a sprint closes a gap you hit (properties, namespaces, parser).

How to use this as a contributor

  1. Open roadmap/sprints-overview.md.
  2. Find the active or next sprint.
  3. 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
Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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

  1. Leia o sprint review da versão instalada.
  2. Veja doc_refs nos posts do blog — apontam para paths Mintlify.
  3. Atualize quando um sprint fechar uma lacuna que você encontrou (properties, namespaces, parser).

Como contribuidor

  1. Abra roadmap/sprints-overview.md.
  2. Ache sprint ativo ou próximo.
  3. 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)