Skip to content

Releases: valkyoth/elderheim

Elderheim 0.50.0

06 Jun 18:50
Immutable release. Only release title and notes can be modified.
v0.50.0
32553d1

Choose a tag to compare

Elderheim 0.50.0 Pre-release
Pre-release

elderheim 0.50.0

Status

Released. This is the Dartmouth BASIC First Edition checkpoint for the
v0.50.0 tag. Local checks, the 0.50 pentest pass, and GitHub CI were clean
before tagging.

Highlights

  • dartmouth-basic-1 now covers the local First Edition scan plus the
    Dartmouth command summary for the early statement set: numbered
    instructions, formulas, LET, implicit assignment, PRINT, FOR / NEXT,
    GO TO / GOTO, IF ... THEN, DEF FN, READ / DATA, STOP, and
    final END.
  • REM, DIM, one- and two-dimensional numeric arrays, and numeric array
    assignment are now implemented. First Edition array subscripts default to
    zero.
  • PRINT now uses 15-character comma zones, preserves semicolon behavior, and
    keeps trailing separators compatible with executable fixtures that continue
    output across BASIC lines.
  • GOSUB / RETURN now compile through a bounded generated return stack, with
    nonzero exits for return-stack overflow and underflow.
  • Source lines execute in ascending instruction-number order, matching the
    Dartmouth time-sharing model.
  • First Edition profile validation now enforces instruction numbers from 1
    through 99999, one numeric instruction number per statement, final END,
    single-letter loop variables, 9-digit numeric mantissas, and a 200-value
    numeric DATA limit.
  • First Edition numeric functions are available in generated executables:
    SIN, COS, TAN, ATN, EXP, LOG, SQR, ABS, INT, and RND.
  • Numeric output now follows Dartmouth-style formatting for the active
    fixtures, including trailing decimal points for integer values and no leading
    zero for fractional values. INT truncates toward zero.
  • DEF FN calls preserve caller variables around function parameter binding.
  • Runtime hardening returns nonzero from generated executables for READ data
    exhaustion and runtime division by zero.
  • First pentest hardening covers parser/semantic expression-depth DoS,
    generated array index conversion, temporary C linker flags, runtime RND,
    linker timeout cleanup, and hard-link-aware output/source detection.
  • Later or unsourced syntax fails closed: reserved Dartmouth selectors are
    rejected until their release stop. Matrix behavior remains out of scope until
    a primary source-backed profile requires it.

Compatibility

0.50.0 is not yet the final standalone 1.0 compiler. It is the current
manual-backed Dartmouth First Edition workstream.

The temporary host C compiler linker path remains. The final supported release
path is still one downloadable elderheim binary per OS/architecture, with no
Rust, rustc, Cargo, C compiler, or external linker requirement where platform
constraints allow it.

Elderheim 0.40.0

06 Jun 14:37
Immutable release. Only release title and notes can be modified.
v0.40.0
8510f30

Choose a tag to compare

Elderheim 0.40.0 Pre-release
Pre-release

elderheim 0.40.0

Status

This is the Dartmouth BASIC execution-core and profile-routing stop.

Highlights

  • Native codegen for Dartmouth BASIC variables and assignments.
  • Executable GOTO, IF ... THEN, and END behavior.
  • Runtime storage for numeric and string variables.
  • PRINT can now read string and numeric variables in the executable path.
  • CLI and AST now expose explicit Dartmouth profiles including:
    • dartmouth-basic-1
    • dartmouth-basic-2
    • cardbasic
    • dartmouth-basic-4
    • reserved Dartmouth selectors such as sbasic and dartmouth-basic-ansi
  • 1.0.0 scope is fixed to the local-manual-backed Dartmouth set:
    • dartmouth-basic-1
    • dartmouth-basic-2
    • cardbasic
    • dartmouth-basic-4
  • Future BASIC manuals are now mapped to explicit dialect names instead of generic BASIC claims.
  • Pentest follow-ups hardened codegen invariants, linker timeout behavior, private runtime temp files, required audit tooling, signed tag verification, and internal debug emit warnings.

Compatibility

0.40.0 is still not a full Dartmouth BASIC compiler. It expands the executable subset from constant PRINT output to variables and control-flow execution.

The temporary host C compiler linker path remains from 0.30.0. The final supported release goal is still one downloadable elderheim binary per OS/architecture, with no Rust, rustc, Cargo, C compiler, or external linker requirement where platform
constraints allow it.

Elderheim 0.30.0

06 Jun 08:04
Immutable release. Only release title and notes can be modified.
v0.30.0
1fb0f83

Choose a tag to compare

Elderheim 0.30.0 Pre-release
Pre-release

elderheim 0.30.0 Release Notes

Status

This is the text-runtime stop for elderheim.

Highlights

  • Text runtime ABI for printing strings, signed integers, and floating-point
    values.
  • Cranelift object generation for supported PRINT expressions.
  • Temporary Linux/macOS executable linking through the host C compiler.
  • CLI --emit executable mode for the current text-output subset.
  • Checked constant arithmetic for emitted PRINT expressions, including
    division-by-zero and integer-overflow rejection before object emission.
  • Hardened temporary linker behavior: absolute compiler path resolution,
    bundled runtime C source, and live temporary object files through link.
  • --emit ast and --emit semantic now require --allow-internal-emit.
  • Unsupported executable semantics such as assignments and control flow still
    fail closed in codegen.

Compatibility

0.30.0 is still not a full BASIC compiler. It adds the first linked
text-output path while assignments, control-flow execution, and broad dialect
compatibility remain later stop points.

The host C compiler linker path is temporary. The final supported release path
is still one downloadable elderheim binary per OS/architecture, with no Rust,
rustc, Cargo, C compiler, or external linker requirement where platform
constraints allow it.

Elderheim 0.20.0

05 Jun 20:15
Immutable release. Only release title and notes can be modified.
v0.20.0
1f72eb1

Choose a tag to compare

Elderheim 0.20.0 Pre-release
Pre-release

elderheim 0.20.0 Release Notes

Status

This is the BASIC semantic-core stop for elderheim.

Highlights

  • BASIC semantic resolver output for labels, assignments, PRINT, GOTO,
    IF ... THEN, remarks, and END.
  • Resolved control-flow target table for GOTO and IF ... THEN statements.
  • BASIC type-suffix validation for string and numeric assignments.
  • Expression validation for numeric arithmetic, string concatenation, equality,
    and conditional expressions.
  • Version-aware release metadata validation.

Compatibility

0.20.0 is still not a full BASIC compiler. It hardens semantic checking before
the runtime and native executable work planned for later stop points.

Elderheim 0.10.0

05 Jun 20:09
Immutable release. Only release title and notes can be modified.
v0.10.0
2e10bae

Choose a tag to compare

Elderheim 0.10.0 Pre-release
Pre-release

elderheim 0.10.0 Release Notes

Status

This is the foundation release for elderheim.

Highlights

  • Multi-crate Rust workspace.
  • BASIC parser core.
  • BASIC semantic validation groundwork for labels, variable suffixes, and
    source-location diagnostics.
  • Cranelift object backend foundation.
  • CLI dialect routing.
  • Security policy, CI, release checklist, and dependency policy.

Compatibility

0.10.0 is not a full QuickBASIC compiler. Unsupported codegen paths fail
closed with explicit errors.