Solo is a loader for static Linux binaries that tries to bridge a specific gap. A fully static binary, especially one built with musl, normally cannot just dlopen host-provided graphics drivers and other shared objects that were built against glibc. Solo embeds its own ELF loader plus a glibc ABI bridge so the binary stays self-contained while still loading those system libraries. The pitch is portability across glibc distros, Alpine, and eventually Android bionic, without forcing the developer to build separately for every distro or freeze everything to an ancient glibc sysroot.
The strongest reaction was that this is clever, real engineering aimed at a real problem, but it sits on top of unstable ground. The core objection was forward compatibility. If a future host library or GPU driver expects newer glibc symbols or loader behavior, Solo can only provide whatever subset and semantics were baked into the old executable. That flips the usual Linux model on its head. Normally the host updates glibc and old apps keep working. Here the host library is dragged backward to the executable’s embedded compatibility layer. Several people also pointed out that
ELF loading has a lot of undocumented edge cases and security-sensitive behavior, so a custom loader raises the bar far above “it works on my machine.”
Still, the comments did not land on “just use old glibc” as a clean answer. People shipping commercial Linux software described the practical trap: supporting old enterprise distros often means building inside an ancient sysroot, which drags in stale toolchains and libraries, blocks newer dependencies, and still leaves you with musl, Alpine, plugin, or Android cases unsolved. That is why Solo resonated even with people who disliked the design. It is less a universal fix than a symptom of Linux lacking a simple binary distribution story outside distro packaging. The side argument over AI-written docs got plenty of heat, but the more durable point was that the project exposes how tightly glibc,
ld.so,
libdl, and user-space ABI behavior are entangled on Linux, especially once you want static binaries, foreign libcs, plugins, or vendor graphics stacks in the same process.