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
Since 0.12.0 removed ort-load-dynamic from the default embedding-fastembed build (#50), the statically-linked ONNX Runtime archive breaks consumer release builds on Linux and Windows. A downstream crate that ships a dist/cargo build --release artifact can no longer link llm-kernel >= 0.12.0 on stock CI runners without opting into the dynamic-linking escape hatch.
This is the downstream cost of the fix for #50 — documenting it here so other consumers don't trip over it, and to discuss whether the default should change.
Reproduction (downstream: alcove)
alcove pins llm-kernel and builds release artifacts via cargo-dist for 4 targets. Upgrading llm-kernel0.9.2 → 0.14.0 makes 3 of 4 release builds fail at the link step (cargo check stays green because it doesn't link):
Linux (ubuntu-22.04, glibc 2.35, x86_64-unknown-linux-gnu / aarch64-unknown-linux-gnu):
macOS (aarch64-apple-darwin) is separately broken by a compiler-rt path regression on the Xcode 16.4 image (ld: library 'clang_rt.osx' not found) — workable around with a RUSTFLAGS=-L$(clang_rt dir) link-path injection, but a second sign that the static ort link is fragile across the matrix.
Impact
alcove rolled back to llm-kernel 0.9.2 (dynamic ort linking) to keep shipping releases — i.e. it cannot adopt 0.10–0.14 at all today. Any other downstream that builds release binaries on stock GitHub runners (ubuntu-22.04 / windows-latest) hits the same wall. cargo check / cargo test pass, so the failure only surfaces at release time.
Ship a portability-conscious static archive — build the bundled ort static lib against an older glibc baseline (manylinux-style) and resolve the MSVC CRT link, so the static default actually works on stock runners.
At minimum, surface this in the feature table / README as a known limitation of embedding-fastembed (not just the CHANGELOG), and add a release-build (not just cargo check) CI matrix entry per feature so a static-link regression like this is caught upstream.
Environment
llm-kernel 0.14.0 (regression introduced in 0.12.0)
Summary
Since 0.12.0 removed
ort-load-dynamicfrom the defaultembedding-fastembedbuild (#50), the statically-linked ONNX Runtime archive breaks consumer release builds on Linux and Windows. A downstream crate that ships adist/cargo build --releaseartifact can no longer linkllm-kernel >= 0.12.0on stock CI runners without opting into the dynamic-linking escape hatch.This is the downstream cost of the fix for #50 — documenting it here so other consumers don't trip over it, and to discuss whether the default should change.
Reproduction (downstream: alcove)
alcove pins
llm-kerneland builds release artifacts viacargo-distfor 4 targets. Upgradingllm-kernel0.9.2 → 0.14.0makes 3 of 4 release builds fail at the link step (cargo checkstays green because it doesn't link):Linux (
ubuntu-22.04, glibc 2.35,x86_64-unknown-linux-gnu/aarch64-unknown-linux-gnu):The static ort archive references glibc 2.38+ symbols. ubuntu-22.04 ships glibc 2.35.
Windows (
windows-latest,x86_64-pc-windows-msvc):libort_sys's static archive leaves MSVC CRT externals unresolved.macOS (
aarch64-apple-darwin) is separately broken by a compiler-rt path regression on the Xcode 16.4 image (ld: library 'clang_rt.osx' not found) — workable around with aRUSTFLAGS=-L$(clang_rt dir)link-path injection, but a second sign that the static ort link is fragile across the matrix.Impact
alcove rolled back to
llm-kernel 0.9.2(dynamic ort linking) to keep shipping releases — i.e. it cannot adopt 0.10–0.14 at all today. Any other downstream that builds release binaries on stock GitHub runners (ubuntu-22.04 / windows-latest) hits the same wall.cargo check/cargo testpass, so the failure only surfaces at release time.Options to consider
embedding-fastembed-dynamic-linkingas the documented escape hatch — flipping which one is default would keep embedding-fastembed on Linux force-enables ort-load-dynamic, causing a silent deadlock instead of a clear error when libonnxruntime.so isn't separately provided #50 fixed for the static-preferring minority without forcing every release-shipping consumer to discover this at tag time.embedding-fastembed(not just the CHANGELOG), and add a release-build (not justcargo check) CI matrix entry per feature so a static-link regression like this is caught upstream.Environment
llm-kernel0.14.0 (regression introduced in 0.12.0)=2.0.0-rc.12, fastembed5Related: #50.