loom-v1.2.0-x86_64-unknown-linux-gnu.tar.gz does not load on ubuntu-22.04, which is still a supported GitHub Actions runner image:
loom: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by loom)
loom: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.31' not found (required by loom)
ubuntu-22.04 ships GLIBC 2.35. The binary requires 2.38, so it fails at load time — before --version can run.
How we hit it
Standing up a CI gate that runs the meld → loom → synth chain. The install step succeeded (download + checksum verify + extract + install -m755), and the failure surfaced only when the job tried loom --version.
Worth noting for triage: meld v0.41.3 loaded fine on the same runner in the same job, so this isn't the fetch-a-pinned-binary approach — it's specific to loom's build environment.
Why it's worth fixing rather than documenting
- It fails as a dynamic-linker error, not a usable message. Nothing points at "your runner is too old" or "use 24.04" — a consumer sees an unresolved-symbol dump for a binary they just successfully downloaded and checksummed.
x86_64-unknown-linux-gnu reads as the portable Linux artifact. There's no hint at the download that it carries a floor of GLIBC 2.38.
- It's the obvious install path — release binary + checksum — so it's likely to hit anyone wiring loom into CI on a 22.04 image.
Suggestions, roughly in order of preference
- Build releases on an older base (a 20.04/22.04 container, or
cargo-zigbuild / a manylinux-style toolchain) so the artifact runs on the oldest reasonably supported distro. This is what most projects do and it costs nothing at use time.
- Ship a statically linked
x86_64-unknown-linux-musl artifact alongside, for consumers who want zero GLIBC coupling.
- At minimum, state the GLIBC floor in the release notes and asset naming, so the failure is predictable rather than discovered at load.
What we did meanwhile
Pinned our job to ubuntu-24.04 (GLIBC 2.39, GCC 13 → GLIBCXX 3.4.32), which resolves it on our side. Not urgent for us; filing because the next consumer will hit the same wall with the same unhelpful error, and because the fix belongs in the release build rather than in every consumer's workflow.
Happy to test a candidate artifact against 22.04 and 24.04 — it's a one-line change in our workflow to try both.
loom-v1.2.0-x86_64-unknown-linux-gnu.tar.gzdoes not load on ubuntu-22.04, which is still a supported GitHub Actions runner image:ubuntu-22.04 ships GLIBC 2.35. The binary requires 2.38, so it fails at load time — before
--versioncan run.How we hit it
Standing up a CI gate that runs the
meld → loom → synthchain. The install step succeeded (download + checksum verify + extract +install -m755), and the failure surfaced only when the job triedloom --version.Worth noting for triage:
meldv0.41.3 loaded fine on the same runner in the same job, so this isn't the fetch-a-pinned-binary approach — it's specific to loom's build environment.Why it's worth fixing rather than documenting
x86_64-unknown-linux-gnureads as the portable Linux artifact. There's no hint at the download that it carries a floor of GLIBC 2.38.Suggestions, roughly in order of preference
cargo-zigbuild/ amanylinux-style toolchain) so the artifact runs on the oldest reasonably supported distro. This is what most projects do and it costs nothing at use time.x86_64-unknown-linux-muslartifact alongside, for consumers who want zero GLIBC coupling.What we did meanwhile
Pinned our job to
ubuntu-24.04(GLIBC 2.39, GCC 13 → GLIBCXX 3.4.32), which resolves it on our side. Not urgent for us; filing because the next consumer will hit the same wall with the same unhelpful error, and because the fix belongs in the release build rather than in every consumer's workflow.Happy to test a candidate artifact against 22.04 and 24.04 — it's a one-line change in our workflow to try both.