Lyric v3.0.0

Lyric

A statically typed application language with a bytecode VM — standalone, and embeddable in a host with a capability-based sandbox.

What changed in v3.0.0 — 2026-08-23

The major. Everything the 2.x line had deferred, in one release: heterogeneous arithmetic, throwability that survives being stored, overloading, and a compiler that turns hot functions into machine code. The .lyrbc format is unchanged at 3.6 — a 3.0.0 module loads in a 2.12 runtime and the other way round, as far as the language allows.

Migrating from 2.x, in the order the compiler will tell you:

  1. every Add<T> / Sub<T> / Mul<T> / Div<T> gains a second type argument, the RESULT: Add<Vec2, Vec2>. The compiler names the count (LYR-SEM0026);
  2. a coroutine whose body may throw is a different TYPE now — Coroutine<int> throws Exception — and a field or optional holding one says so;
  3. the eleven forms whose @Deprecated promised removal at 3.0 are gone: readText, readBytes, readLines and the eight free iterator adapters. Their replacements have been there since 2.14 and 2.17.

Nothing else in a 2.x program changes meaning.

Changed — breaking

Added


Fixed


The full changelog →