Releases: valkyoth/elderheim
Elderheim 0.50.0
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-1now 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
finalEND.REM,DIM, one- and two-dimensional numeric arrays, and numeric array
assignment are now implemented. First Edition array subscripts default to
zero.PRINTnow uses 15-character comma zones, preserves semicolon behavior, and
keeps trailing separators compatible with executable fixtures that continue
output across BASIC lines.GOSUB/RETURNnow 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
through99999, one numeric instruction number per statement, finalEND,
single-letter loop variables, 9-digit numeric mantissas, and a 200-value
numericDATAlimit. - First Edition numeric functions are available in generated executables:
SIN,COS,TAN,ATN,EXP,LOG,SQR,ABS,INT, andRND. - 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.INTtruncates toward zero. DEF FNcalls preserve caller variables around function parameter binding.- Runtime hardening returns nonzero from generated executables for
READdata
exhaustion and runtime division by zero. - First pentest hardening covers parser/semantic expression-depth DoS,
generated array index conversion, temporary C linker flags, runtimeRND,
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
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, andENDbehavior. - Runtime storage for numeric and string variables.
PRINTcan now read string and numeric variables in the executable path.- CLI and AST now expose explicit Dartmouth profiles including:
dartmouth-basic-1dartmouth-basic-2cardbasicdartmouth-basic-4- reserved Dartmouth selectors such as
sbasicanddartmouth-basic-ansi
1.0.0scope is fixed to the local-manual-backed Dartmouth set:dartmouth-basic-1dartmouth-basic-2cardbasicdartmouth-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
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
PRINTexpressions. - Temporary Linux/macOS executable linking through the host C compiler.
- CLI
--emit executablemode for the current text-output subset. - Checked constant arithmetic for emitted
PRINTexpressions, 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 astand--emit semanticnow 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
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, andEND. - Resolved control-flow target table for
GOTOandIF ... THENstatements. - 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
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.