Tya v0.54 Release Notes

Status: shipped. tya version reports 0.54.0 and ROADMAP.md carries the matching Released entry.

TL;DR

v0.54 finishes the diagnostics pipeline migration:

The language surface is unchanged from v0.53.

What’s new

Structured diagnostics for Parser / Codegen / Runner

$ tya check bad.tya
-- RETURN MUST BE INSIDE A FUNCTION ---- bad.tya:1:1

return must be inside a function near "return"

   1 | return 42
       ^

(TYA-E0120)

-- BREAK MUST BE INSIDE A LOOP -------- bad.tya:2:1
…

New code bands:

Multi-error parsing

block() and program() now run statement-level recovery: after recording a diagnostic, the parser skips to NEWLINE / DEDENT / EOF and resumes. Every diagnostic flows out as a *parser.ParserError{Diags: []diag.Diagnostic}.

The LSP server (internal/lsp/diagnostics.go) and CLI (cmd/tya/main.go) both errors.As-unwrap the wrapper and emit the full list.

did-you-mean hints

$ tya check typo.tya
typo.tya:2:7: undefined variable strng; did you mean "string"?

The new internal/util/strdist.go::Suggest returns up to three candidates with Levenshtein distance ≤ 2, drawing from the builtin function list and the current scope’s defined names.

Compatibility

Migration

Nothing required. Optional:

  1. Upgrade to v0.54 (brew install komagata/tap/tya).
  2. Re-run tya check on existing source — you’ll see every diagnostic in one pass instead of just the first.
  3. Consume the new [TYA-EXXXX] codes in your editor / CI lint rules.

Implementation notes

Tests

Looking ahead (v0.55+ candidates)

From ROADMAP.md § Future Work:

Self-host work (ROADMAP.md § Scheduled M8 / M9 / M10) remains deferred until the v1.0.0 prep window.