← board

Ada frontend — why the bare-metal target is the sane one

Track letter: L for Legacy (decided 2026-08-09, user)

Ada and COBOL share one lane, L — Legacy. Neither can have its initial: A is compiler core, C is the C frontend. The shared property is real rather than a convenience: both are ISO-standardised, both are conformance-suite-driven rather than reference-implementation-driven, and both are still in production in domains that outlive fashions.

The CLAUDE.md section is deliberately NOT added yet. Same rule Track W followed — a lane is declared when the lane actually starts, because a lane other agents cannot see does not exist, and a letter with no code behind it is exactly the inflation the "don't invent letters" bar exists to prevent. When the first adaparser.inc or COBOL equivalent lands, add the section then, and enumerate the languages in its scope line. Do not leave L's meaning to be inferred: meta-track-w-collision-windows-vs-website is what that costs.

"Historic" (Track H) was considered and rejected — Ada flies current avionics and COBOL runs current banking; the word would read as wrong to the people who use them.

Why Ada is the cheapest frontend on the list

It descends from Pascal. Packages map onto units, and subranges, enumerations, records, arrays and strong static typing are all shapes this compiler was built around. Of every candidate frontend, Ada asks the backend for the least that is new.

The constraint machinery already exists. Verified against the pinned compiler:

type Angle = 0..359;
var a: Angle; i: Integer;
begin
  i := 400;
  {$R+}
  a := i;        { Runtime error 201 (range check error), exit 201 }

That is Ada's type Angle is range 0 .. 359 raising Constraint_Error, with one difference: pxx makes the check opt-in per region and Ada mandates it. Inverting a default is not a new subsystem.

Why bare metal is the right first target, not a downgrade

The subset that is cheapest to implement is the same subset embedded Ada actually deploys:

So the honest framing is not "Ada, minus the hard parts". It is the profile the domain already uses, which is why Ada on an ESP32-class part is a coherent target rather than an exercise: it is what the language was designed for.

What is still not free

Generics, exception propagation, representation clauses (bit-level record layout — though packed record is a start), and 'Image/attribute machinery. Tasking should be explicitly out of scope in any first pass.

Corpus

ACATS, the Ada Conformity Assessment Test Suite, is the official conformance suite, and GNAT is available as a differential oracle — the same shape as the CPython oracle that drove Track N, and the same shape as tools/c_torture_harvest.sh (vendored corpus, cross-check against the reference, never auto-dismiss a candidate because the reference disagrees). Licensing and current packaging of ACATS are unverified — check before counting on it. Filed as [[chore-check-acats-and-nist-cobol85-corpus-availability]].

Log