Lyric
A statically typed application language with a bytecode VM — standalone, and embeddable in a host with a capability-based sandbox.
What changed in v2.9.0 — 2026-08-22
An editor can attach to a program a host is already running. The bytecode format stays 3.3 and the language gains nothing.
Added
DapServerserves a controller you already hold. A second constructor takes aDebugControllerand the directory the scripts were compiled from; the client sendsattachwhere it would otherwise sendlaunch, and everything after that is the protocol as it was. Nothing is compiled, nothing is started — the program is running, which is the point. A game has nomainto launch, and the bug worth stopping at is rarely the one at startup.One server per controller, which answers what a host with several scripts would otherwise have to invent: which program a
setBreakpointsis about is decided by the connection it arrived on. The transport stays the host's business — the constructor takes two streams, so a socket, a pipe or anything else works without the adapter knowing about it.lyrdbgis unchanged: it launches, and an attaching adapter lives in the host's own process.DebugController.Detach()— gives the program back: breakpoints go, a parked thread is released, and the event stream ends. It is what a session needs when it ends without the program ending, and the attaching server calls it ondisconnect. Without it a game whose editor crashed would stand at its breakpoint for good, and the breakpoints nobody reads any more would park it again on the next frame. A detached controller is spent; attaching again means a new one.A launched session is unaffected: there the process is the session, and ending it is the whole answer.