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.2 — 2026-08-23
Fixed
The build sometimes produced a
lyric packthat could not pack (#101). Intermittent on Linux, on an unchanged tree, and the message pointed at the packer — where nothing was wrong.The driver copies the tools into its own output directory so that "beside itself" means the same during development as after an install. It learned their directories by BUILDING them a second time (
<MSBuild Targets="Build">with its own set of global properties), then listing what came out. Two things were wrong with that. A second build under different properties is a second project INSTANCE, writing the same output directory as the first. And the listing was not ordered against the stub:lyrpackpublishes its single-file stub from anAfterTargets, which in the failing run landed 169 ms after the driver had finished building — into a directory the driver had already read.The directories are now derived by convention instead of asked for, which removes the second instance; the stub publish is invoked explicitly before the listing, which orders it; and the target now fails the build when the stub did not arrive, rather than leaving it to be discovered by a packing test half a minute later.
That last part earned itself immediately: the first derived path forgot that a publish FOR a platform writes to
bin/<config>/<tfm>/<rid>/, so the release build copied nothing — and said so, in the build, instead of shipping an archive whose driver could not pack.