Releases: ghost-language/lumen
Releases · ghost-language/lumen
Release list
v0.2.1
Fix the macOS bundle and the cask push, and cut 0.2.1 (#20) * Stage the cask before testing whether it changed The guard against empty commits asked `git diff --quiet -- Casks/lumen.rb` before staging. git diff ignores untracked files, so on the release that first creates the cask it reports no difference, the step exits 0, and nothing is pushed. v0.2.0 published four archives and left the tap empty with a green run. Staging first and comparing against the index answers correctly for a new file, an unchanged one, and a modified one alike. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * Bundle SDL3 beside SDL2, and prove the bundle runs without Homebrew Homebrew's sdl2 is sdl2_compat: the SDL2 API reimplemented on top of SDL3, which it dlopen()s at runtime. There is no LC_LOAD_DYLIB entry for SDL3, so dylibbundler - which walks static link references - never saw it. The macOS archives came out looking self-contained and abort with "Failed loading SDL3 library" on any machine without Homebrew. v0.2.0 shipped that way on both darwin architectures. libSDL2 searches @loader_path before anything else, so SDL3 is copied in beside it and signed with the rest. The reason this shipped green is that the runner has Homebrew's own SDL3 on the fallback library path, so the bundle it produced always worked where it was built. The new check empties DYLD_FALLBACK_LIBRARY_PATH, which takes /usr/local/lib out of dyld's reach and leaves the archive standing on @executable_path alone. Verified both ways: it fails on a v0.2.0 bundle and passes once SDL3 is bundled. Version goes to 0.2.1 so the fix can be tagged without a second commit. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
v0.2.0
Publish a Homebrew cask to ghost-language/homebrew-tap (#19) Lumen has had a complete release pipeline for a while and has never used it. The one thing missing is an install path: a user on macOS has to find the releases page, pick the right archive, and clear the quarantine attribute by hand. The cask is generated here rather than by GoReleaser. Lumen links SDL2 through cgo, so it cannot cross-compile and the release is a native build matrix across four runners; GoReleaser is not in this pipeline at all. Two details differ from Ghost's cask. The archive holds a folder rather than a bare binary, because the SDL2 dylibs travel beside the executable with their install names rewritten to @executable_path/libs, so `binary` points inside it and the libraries stay put. And the postflight clears quarantine from the whole staged folder rather than just the executable, since a quarantined dylib is refused as firmly as a quarantined binary. The token is checked in `verify`, before any runner starts, rather than where it is used. Ghost skips its cask push silently when the token is absent, which produces a green release with a stale tap; discovering that after four build jobs and an upload is worse than failing up front. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>