l0-v1.1.0
Immutable
release. Only release title and notes can be modified.
Dea/L0 1.1.0
Dea/L0 1.1.0 is a minor release focused on safer control flow, frontend recovery, self-hosting reliability, and clearer
source-language contracts. It keeps the existing command-line and library surface while making _ => the canonical
default arm for case.
Language and source contract
casenow uses_ =>as its canonical default arm, aligning scalar and string dispatch with wildcard arms in
match.- The old
case ... elsedefault remains accepted in 1.1.0 but emits thePAR-0242deprecation warning. - The source contract is now explicit: source files are UTF-8, while identifiers, keywords, literal prefixes, and escape
names use the ASCII language vocabulary. Unicode text remains supported in strings and comments.
Frontend recovery and diagnostics
- Lexer errors can carry a logical recovery token, allowing parsing to continue after invalid characters without losing
the surrounding construct. - Diagnostic columns now count Unicode code points consistently across compiler stages.
- Orphaned
elseandcleanupkeywords now receive precise diagnostics, and parser recovery avoids several duplicate
and cascading errors around blocks, loops, and end of file. - Duplicate
openimports warn once instead of flooding the output, and Stage 2 no longer reports a false shadowing
warning for the variable introduced by aforloop.
Control-flow and ownership safety
forheader parsing and flow analysis now agree across compiler stages, including correct liveness after loop control
statements and rejection of declarations in the update clause.withcleanup now runs correctly when control leaves inline header expressions, and return-flow analysis accounts for
cleanup blocks that return or override an earlier return.- Invalid loop-control statements no longer poison later unreachable-code analysis.
- Dropping a stale allocation now fails deterministically before cleanup can inspect or mutate related state.
Stage 2 and portability
- Stage 2 now surfaces compiler warnings in
--build,--run,--gen,--sym, and--typemodes. - C compiler options are emitted in a portable order so user flags, source inputs, linker options, and output selection
reach the host compiler correctly. - Dea environment activation is stackable, and nested test environments no longer leak into Stage 2 compiler runs.
- Windows handling is more reliable for Unicode test sources and environment-isolation tests.
- Triple-bootstrap normalization now handles Apple Silicon Mach-O UUID differences without hiding other binary changes.
Documentation and examples
- Shared contracts now document the compiler CLI, source encoding, ASCII language vocabulary, diagnostic recovery, and
code-point column semantics. - The project status and compiler architecture documentation have been refreshed to describe the current self-hosted
implementation. - Examples use current language idioms, include multilingual hello programs, and follow the new shared Dea code style
guide. - The Hamurabi example now reports its final result correctly.
Compatibility and migration
- Prefer
_ =>for everycasedefault. The deprecatedelseform still compiles in 1.1.0 but emitsPAR-0242. - Brace a
casevalue arm whose body containsif ... else, or use a_ =>default, when the trailingelsewould be
ambiguous; the compiler reportsPAR-0243for this case. - Replace a
letdeclaration in aforupdate clause with a permitted non-declaration simple statement. The compiler
now reportsPAR-0145for the declaration. - Rename non-ASCII identifiers to ASCII. Unicode strings and comments remain valid UTF-8 source text.
- Tools that consume diagnostics should treat columns as Unicode code-point positions. Improved recovery can also expose
additional genuine errors later in the same source file. - Stage 2 users may now see existing warnings in
--build,--run,--gen,--sym, and--typemodes where those
warnings were previously suppressed.
Unchanged public surface
No L0 standard-library implementation changed in this release. No CLI flags or modes were added or removed, and no
public L0 types were added or removed.
See the
full comparison between l0-v1.0.0 and l0-v1.1.0.
Release archives and generated API documentation are attached to this release. Use SHA256SUMS to verify downloaded
assets.