You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(release): publish a linux-arm64 engine
ARM Linux users had no engine at all: platformBinaryName() returned null
for linux-arm64, so npm's postinstall printed "unsupported platform" and
exited, and the JetBrains resolver refused too. Issue #15 came from one of
the few people who worked around that by building from source.
Adds the asset to both client mappings and to the release, and pins how it
is built:
scripts/build-linux-arm64.sh builds in a container because there is no
arm64 Linux build machine, and the compatibility floor is easy to get
wrong. It does not only build - it refuses to produce a binary that would
narrow support:
- __libc_single_threaded must land in writable memory. An immutable
definition is read-only and, on aarch64, also exported, so glibc's
startup write to it faults before main(). That was issue #15, and this
is its regression guard.
- the glibc floor must stay <= 2.30 and GLIBCXX <= 3.4.29, the floors
measured from the shipped x64 asset.
Ubuntu 20.04 + gcc-11 is the only combination measured to give both a
working link and those floors. The alternatives failed and the reasons are
recorded in the script: Debian 11 (gcc 10) cannot resolve ONNX Runtime's
__throw_bad_array_new_length or __aarch64_cas8_sync; SLES 15 SP4's own
gcc11 ships no outline atomics; Ubuntu 22.04 links but floors at glibc
2.34, which would have given ARM a narrower support range than x64.
Verified by running the built binary: it works on SLES 15 SP4, Ubuntu
22.04+, Debian 12+, RHEL 9+ and Amazon Linux 2023, and not on Ubuntu
20.04, Debian 11, RHEL 8 or Amazon Linux 2 - identical to the x64 asset.
Note the binding constraint is GLIBCXX_3.4.29, not glibc, which is why it
does not run on its own build host.
Also collapses three hand-kept copies of the platform list into one.
PUBLISHED_BINARIES in bin/fetch-engine.js is now the source of truth, read
by publish-release-assets.sh and package-npm.sh, so a sixth platform
cannot be published without every client resolving it - the drift that
made this change touch five files. A `while read` loop rather than
mapfile: these scripts run under macOS's bash 3.2, where mapfile does not
exist and would have silently yielded an empty list.
The two tests asserting linux-arm64 was unsupported are inverted rather
than deleted; both languages now assert it resolves to its own asset and
never to the x64 one.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017rVbt7rENTwXkdHt3Bpgb5
* docs: state the platform support matrix, including both Linux floors
The project published no platform requirements anywhere users could read
them, while the internal build notes claimed a Linux range that was wrong.
A user on RHEL 8 hitting `GLIBCXX_3.4.29 not found` had nothing to consult.
Two floors matter and only one of them is obvious. glibc 2.30 is not the
binding constraint: the engine embeds ONNX Runtime, built with GCC 11, so
it also needs libstdc++ >= GLIBCXX_3.4.29. Checking only glibc is what
produced the earlier claim that Debian 11 and Ubuntu 20.04 were supported;
both ship 3.4.28 and have never been able to start the engine.
The runs / does-not-run table is measured by executing the 0.20.1 binaries
on each distribution, not inferred from symbol versions, and is identical
for linux-x64 and linux-arm64. Also documents linux-arm64 as supported,
and gives the GLIBCXX error the remedy that does not require a distro
upgrade.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017rVbt7rENTwXkdHt3Bpgb5
* no-mistakes(review): gate arm64 build provenance, harden shim check, fix stale docs
* no-mistakes(review): record source commit per asset and gate release on agreement
* no-mistakes(document): correct stale engine platform counts in client docs
* no-mistakes(document): replace dangling build-notes pointers, correct engine download sizes
* no-mistakes(lint): restore vscode eslint config, clear resulting lint errors
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
0 commit comments