Skip to content

Releases: ghost-language/lumen

Release list

v0.2.1

v0.2.1 Pre-release
Pre-release

Choose a tag to compare

@kaidesu kaidesu released this 31 Aug 00:47
ea03f5f
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

v0.2.0 Pre-release
Pre-release

Choose a tag to compare

@kaidesu kaidesu released this 31 Aug 00:27
aca4a49
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>