Skip to content

Latest commit

 

History

History
115 lines (90 loc) · 4.54 KB

File metadata and controls

115 lines (90 loc) · 4.54 KB

Versioning Plan

elderheim starts at 0.10.0.

Each release stop has a matching local tag gate in Tag Stop Plan. Tags are intended to be local review and pentest checkpoints before pushing branch and tag.

Stop Points

0.10.0 Foundation

  • Rust workspace.
  • Shared AST.
  • BASIC parser core.
  • CLI dialect routing.
  • Cranelift object emission for the smallest supported program shape.
  • Security, CI, release-note, and dependency-policy files.

0.20.0 BASIC Semantic Core

  • Label table validation.
  • Variable table and type suffix model.
  • Diagnostics with line and column reporting.
  • Resolver for GOTO, IF THEN, assignments, and PRINT.
  • String-vs-numeric expression validation for assignments, conditions, arithmetic, concatenation, and equality.

0.30.0 Text Runtime

  • Runtime ABI for printing strings and numbers.
  • Cranelift calls into the runtime.
  • Temporary host C compiler linker integration for Linux and macOS.
  • CLI executable emit mode for the current text-output subset.
  • Clear documentation that the host C compiler requirement is not the final supported release path.

0.40.0 Dartmouth Execution Core And Profile Routing

  • Native execution for variables and assignments.
  • Executable GOTO, IF ... THEN, and END behavior.
  • Runtime storage for string and numeric variables.
  • Explicit Dartmouth BASIC profile names in the shared AST and CLI.
  • Codegen tests for supported control flow and variable reads/writes.
  • Manual-driven roadmap update: found BASIC manuals are mapped to explicit dialect names before implementation claims.

0.50.0 Dartmouth BASIC First Edition

  • Complete dartmouth-basic-1 parser, semantics, runtime, codegen, and fixtures against the available First Edition scan and Dartmouth-hosted command summary.
  • Include REM, DIM, zero-based numeric arrays, Dartmouth numeric output formatting, 15-character PRINT comma zones, semicolon separators, GOSUB, and RETURN.
  • Keep matrix behavior fail-closed until a primary source-backed profile requires it.

0.60.0 Dartmouth BASIC Second Edition And CARDBASIC

  • Complete dartmouth-basic-2.
  • Complete cardbasic.
  • dartmouth-basic-2 fixtures for October 1964 semicolon-separated PRINT packing behavior and any verified interactive array-bound differences.
  • cardbasic fixtures for card-workflow behavior and numerical MAT commands.
  • Negative fixtures proving CARDBASIC does not inherit interactive-only array bound rules.

0.70.0 Dartmouth BASIC Fourth Edition

  • Complete dartmouth-basic-4.
  • Manual-backed Fourth Edition additions such as INPUT, RESTORE, ON ... GOTO, advanced PRINT, strings, string vectors, CHANGE, MAT, RANDOMIZE, multiple-line DEF, nested GOSUB, and matrix behavior.

0.80.0 BASIC Manual Matrix

  • Compatibility matrix across manual-backed Dartmouth profiles.
  • Explicit documentation that dartmouth-basic-3, dartmouth-basic-5, dartmouth-basic-6, sbasic, dartmouth-basic-7, and dartmouth-basic-ansi are reserved until primary manuals are found.
  • Roadmap entries for ansi-basic, ecma-basic-1, and ecma-basic-2 based on the local ANSI X3.113-1987 and ECMA-116 standards.

0.90.0 First Stable Release Assets And Compatibility Hardening

  • Release binaries for Linux, macOS, and Windows.
  • Packaging work toward self-contained compiler binaries.
  • Full manual-backed profile compatibility matrix.
  • Reproducible local release checks.
  • SBOM generation.
  • Cross-platform behavior review.

1.0.0 First Compiler Release

  • Stable manual-backed Dartmouth BASIC compiler path using Rust and Cranelift.
  • 1.0.0 support is fixed to dartmouth-basic-1, dartmouth-basic-2, cardbasic, and dartmouth-basic-4.
  • Native executable output through elderheim itself.
  • One downloadable elderheim binary per supported OS/architecture.
  • No Rust, rustc, Cargo, C compiler, or external linker requirement for the supported release path, where platform constraints allow it.
  • Documented profile support boundaries for every implemented profile.
  • Stable CLI and release process.
  • Security gate, dependency audit, SBOM, release notes, and checksums required for release.

After 1.0.0

After 1.0.0, language and dialect releases follow the dedicated Language Release Plan. Later BASIC dialects, reserved Dartmouth profiles with newly found manuals, and other languages each get an explicit frontend, CLI selector, and compatibility boundary. The post-1.0.0 rule is one language or dialect profile to 100% before moving to the next one.