1 2 3 4 5 6 7 8 9 10 11 12 13

The Distribution Problem

What Fifty Linux Distributions Reveal About Shipping Software Compiled Against a Machine You Have Never Seen

A compiled binary is a prediction. It encodes, at build time, an assumption about the kernel, the C library, the driver stack and the silicon it will eventually meet. Linux is the substrate where that assumption is hardest to make, and thirty years of packaging have answered by carrying more of the assumed machine along rather than by making the assumption unnecessary. This paper is about what the second option requires.

Ken Granville CEO & Co-Founder, MindAptiv Essence Paper 1 The Common Substrate August 2026
Substrate
Linux
Artifact
Essence__LNX_X64.w.elf
Backend
SPIR-V
Status
Shipping
Abstract

Linux is not a target. It is a combination of choices that vary independently: kernel version, C library, init system, package format, driver stack, default toolchain and CPU or accelerator generation. A binary compiled against one combination can fail against another for reasons that have nothing to do with the program's logic. The industry's answer to this has passed through four generations, from per-distribution builds to static linking to containers to the universal package formats, and every one of them works the same way: by carrying more of the assumed machine along with the program until the real machine stops mattering. That is a coherent strategy. It is also an expensive one, paid in image size, duplicated dependency trees, a patch surface that has to be fixed everywhere it was copied, and the fact that a program insulated from the machine cannot use what the machine turned out to have.

This paper argues that the distribution problem is not a packaging problem, and that it is the same structural mechanism named across The Governed Machine in five other substrates: a fixed commitment made in advance against a state that only exists at execution. A compiled binary is that commitment. Essence does not ship one. It ships declared intent and a resolver, examines the components actually present on the machine at the moment of execution, and generates component-specific instructions for what it finds rather than for what a build server assumed months earlier on different hardware. This paper traces what that requires architecturally, what it demonstrably buys, and where the claim stops. Validated acceleration and energy figures cited here were measured on specific workloads under specific conditions and are not a portability benchmark; the distinction is stated explicitly in Section 06.

Section 01What "Linux Support" Actually Costs

"Runs on Linux" is a claim about a set, not about a system. The set is generated by choices that vary independently of one another. The kernel is one axis, and a driver interface that exists in one long-term-support line may not exist, or may have different semantics, in another. The C library is a second axis, and the difference between glibc and musl is not cosmetic; a binary linked against one will not simply run against the other. The init system, the package format, the default compiler and its ABI choices, the graphics and compute driver stack, the presence and generation of an accelerator, the CPU's supported instruction extensions: each of these is a further axis, and each one is chosen by the distribution, the sysadmin, the hardware vendor or the cloud provider rather than by the software's author.

The result is that a vendor claiming broad Linux coverage is claiming to have accounted for a product of those axes, not a sum. The commercial answer has always been to shrink the set to something affordable: certify against two or three enterprise distributions, publish a support matrix, and let everything outside the matrix be the user's problem. That is why "supported on Linux" and "supported on RHEL 9 and Ubuntu 22.04 LTS" are routinely presented as the same sentence. They are not the same sentence, and the gap between them is where the cost sits.

MindAptiv's own published figure for Essence on Linux is coverage across more than fifty distributions. That number is worth stating carefully, because the interesting part is not the count. Any vendor willing to spend enough build engineering can eventually produce fifty artifacts. The interesting part is whether the count was reached by building fifty times or by not building in advance at all, and those two roads produce architectures with nothing in common.

A Note on Sourcing and Certainty
The distribution-coverage figure above is MindAptiv's own, not a third-party certification. The performance and energy figures cited in Section 05 come from validation work with AWS and Rowan University's Digital Engineering Hub on specific workloads, and are not a portability or distribution-coverage benchmark. The two should not be read as supporting each other.

Section 02Four Generations of the Same Answer

The distribution problem is old enough to have a well-documented history of attempted solutions. Each generation solved a real pain and introduced the next one, and it is worth laying them out in sequence because the pattern only becomes visible when they are read together rather than as competing tools.

Generation 1
Build per distribution

Compile the program separately for each supported target, against that target's libraries and toolchain, and ship a matrix of packages.

Cost: build engineering scales with the matrix; the matrix is capped by budget, not by demand.

Generation 2
Static linking

Compile the dependencies into the binary so the target's libraries stop mattering. One artifact, far fewer surprises at load time.

Cost: every copy carries its own dependency tree, so a library vulnerability has to be patched in every binary that absorbed it.

Generation 3
Containers

Ship the program with a userland: the libraries, the file layout, the assumed environment, packaged as an image the host runs in isolation.

Cost: image size, registry and orchestration infrastructure, a duplicated patch surface per image, and a program that now sees the environment it was given rather than the machine it is on.

Generation 4
Universal packages

Flatpak, Snap and AppImage: bundle the application with a runtime and a portability shim so a single artifact installs on many desktops.

Cost: runtime duplication across applications, sandbox boundaries that have to be punched through for real hardware access, and three competing formats rather than one.

None of these is a mistake, and this paper is not arguing that containers were a bad idea. Each generation is the correct engineering response to the generation before it, given the constraint every one of them accepted without examining. The constraint is what Section 03 is about.

Section 03The Commitment Underneath All Four

Every generation above is a strategy for making a prediction survive contact with a machine the predictor never saw. The prediction is the compiled binary. It was produced on a build server, against a description of a machine, at a moment that is now in the past, and it encodes decisions that cannot be revisited afterward: which instructions to emit, which library symbols to call, which code paths to include, what the memory layout will be, what the hardware is assumed to support.

The four generations differ only in how much of the assumed machine they carry along to make the prediction hold. Generation 1 carries nothing and repeats the prediction per target. Generation 2 carries the libraries. Generation 3 carries an entire userland. Generation 4 carries a runtime and a shim. The direction of travel over thirty years has been consistent and it points one way: toward insulating the program from the real machine, because the real machine is what invalidates the prediction.

That is the trade being made, and it is rarely stated as a trade. A program insulated from the machine is a program that cannot take advantage of the machine. If the host has an accelerator the image was not built to address, the accelerator sits idle. If the CPU supports instruction extensions the build server did not target, they go unused. If the machine has more memory bandwidth, a different topology or a newer driver than the build assumed, none of that reaches the program, because the whole architecture is arranged so that differences in the machine cannot reach the program. Portability was purchased with the ability to specialize, and the bill is paid on every execution.

The companion series, The Governed Machine, has now named this same mechanism in five other substrates: a token fixed at generation time standing in for meaning, in Paper XXXIV; a quantum circuit transpiled in advance against calibration that drifts hourly, in Paper LV; capacity provisioned ahead of the workload, in Paper LVI; compute reserved under take-or-pay contracts against demand that has not happened yet, in Paper LVII; and financing commitments made against revenue that does not exist yet, in Paper LVIII. In every case the failure is the same shape. A commitment is fixed in advance. Live state moves. The gap between them is charged to whoever is holding the commitment.

Series Doctrine
Compiled ≠ Resolved
A binary is a prediction about a machine. Resolution is a determination about the machine that is actually there.
Series context · The fixed-commitment mechanism is developed in Paper XXXIV, The Tokenization Ceiling and Paper LV, The Transpilation Ceiling of The Governed Machine. This paper applies it to the compiled binary.

Section 04What Resolving Instead of Shipping Requires

The alternative to shipping a prediction is not shipping a better prediction. It is shipping something that is not a prediction at all: a declared statement of what is to be accomplished, plus a resolver that decides how to accomplish it after it can see the machine. That inversion is what Essence implements, and it has three architectural prerequisites that are worth separating, because each one is a real engineering commitment rather than a marketing property.

One: intent has to be representable independently of implementation

If what ships is going to be resolved rather than executed directly, the thing that ships has to describe the objective without encoding a specific machine's path to it. In Essence this is the role of declared intent expressed against Meaning Coordinates and carried by Aptivs, the composable units the platform resolves. The requirement is strict: an intent that quietly assumes a GPU, a memory topology or an instruction set is not an intent, it is a prediction with extra steps, and it inherits every limitation Section 03 described.

Two: the machine has to be inspected at execution, at component granularity

Resolution is only worth anything if the inspection is specific enough to change the generated instructions. Knowing that the host is "Linux on x86-64" changes nothing. Knowing the driver stack, the accelerator generation, the available instruction extensions, the memory characteristics and what else is currently contending for those components is what allows a different and better instruction stream to be produced for this machine than for the one next to it.

Three: instructions have to be generated, not selected

This is the line between resolution and configuration, and it is the one most often blurred. Selecting among pre-built code paths at runtime is still shipping predictions; it just ships several and picks one, and the ceiling is set by which paths someone thought to build. Generating component-specific instructions after inspection has no such ceiling, and it is what Essence's backend does: SPIR-V is the currently supported instruction-set target, with PTX for NVIDIA and GCN for AMD previously generated and now being reconstituted, and Intel, ARM and RISC-V targeted later on the same roadmap.

Shipped prediction versus resolved determination Two pipelines compared. The conventional pipeline compiles against an assumed machine at build time and ships a fixed binary that the real machine must accommodate. The Essence pipeline ships declared intent, inspects the real machine at execution, and generates instructions for the components found. CONVENTIONAL · COMMITMENT AT BUILD TIME COMPILE vs ASSUMED machine FIXED BINARY + carried userland REAL MACHINE must accommodate GAP: what the real machine has that the build did not assume ESSENCE · DETERMINATION AT EXECUTION DECLARED INTENT no machine assumed INSPECT + GENERATE per-component ISA REAL MACHINE is the input machine state feeds inspection, every execution NO GAP: nothing was committed before the machine was seen
Figure 1. The difference is not where the work happens. It is what is decided before the machine is visible. In the upper pipeline every instruction-level decision is already made and the real machine's differences are absorbed as loss. In the lower pipeline the machine is an input to the decision rather than an obstacle to it.
The Distinction That Matters
Containers make the machine irrelevant so the prediction holds. Essence makes the machine the input so no prediction is needed. Both produce portability. Only one of them can also produce specialization, because specialization requires knowing what is actually there.

Section 05What This Changes on Linux Specifically

Three consequences follow on Linux, and they should be read in descending order of how well they are currently evidenced.

The artifact stops multiplying

What ships is a single resolver artifact, currently distributed as Essence__LNX_X64.w.elf, rather than a build matrix. The distribution axes described in Section 01 are examined at execution rather than enumerated at build. This is the claim most directly demonstrable today: the Linux binary exists, and access is available through MindAptiv's Chameleon channel. The Chameleon pilot in 2025 was the platform's first Linux deliverable.

Resource management stops being per-machine

Because resolution happens against components rather than against a machine description, the same mechanism that decides which instructions to generate for this host can operate across hosts. The framing that matters here is the unit of reasoning: if it is the component rather than the operating system, then a pool of components spanning Linux hosts, and hosts that are not Linux, is not a special case requiring a bridge. It is the ordinary case. That claim is architectural in this paper and gets its own treatment in Paper 10 of this series.

Specialization becomes available rather than forfeited

Generating instructions after inspection is what makes the platform's validated performance results possible in the first place, and those results are the reason to care about any of this. MindAptiv's validated figures are acceleration between 20× and 114× and energy reduction of up to 99.7%, confirmed through work with AWS and Rowan University's Digital Engineering Hub. The scope of those figures is narrow and should be stated plainly: they were measured on specific workloads under specific conditions. They are evidence that per-component generation produces real gains where it was measured. They are not a claim that any workload on any distribution sees those numbers, and this paper does not make that claim.

Why the Ordering of Those Three Matters
A single artifact is a convenience. Cross-machine resource pooling is an architecture. Specialization without forfeit is the reason the architecture was built. A reader evaluating this should ask for the third one's test conditions, not the first one's file size.

Section 06What This Paper Does Not Claim

Not a distribution-coverage benchmark. The fifty-plus distribution figure is MindAptiv's own and has not been certified by any independent body. A reader for whom that number is load-bearing should ask for the test record rather than take the figure on trust.

The performance figures are not portability figures. The 20× to 114× acceleration and up-to-99.7% energy reduction results come from validation work on specific workloads. Conflating them with the distribution argument would be exactly the error this series is trying not to make. They are cited as evidence that per-component instruction generation produces measurable gains, not as a promise attached to running on any given distribution.

Essence does not replace the kernel or bypass the driver stack. It resolves against what the operating system exposes. A capability the kernel does not expose on a given host is not made available by resolution, and a driver bug is not routed around by declaring intent. The architecture changes when the instruction decision is made, not what the underlying system is capable of.

The backend coverage is a roadmap, not a completed matrix. SPIR-V is the currently supported instruction-set target. PTX and GCN were previously generated and are being reconstituted. Intel, ARM and RISC-V are targeted later on the same roadmap. A reader should treat anything beyond SPIR-V today as stated plan rather than shipped capability.

Containers are not obsolete. Nothing in Section 02 argues that the four generations were wrong for the problems they were built against. The argument is narrower: all four accept that the instruction-level commitment is made before the machine is visible, and the costs enumerated there follow from that shared assumption rather than from any one tool's implementation.

Series context · This paper reports no benchmark, partnership or evaluation involving any Linux distribution, vendor or foundation. The AWS and Rowan University Digital Engineering Hub validation referenced in Section 05 concerns workload performance, not distribution coverage.

Section 07Where the Series Goes From Here

Linux is the right place to start because it is the substrate where the variance is visible and openly documented. Nobody pretends the distributions are the same. Every other substrate in this series has the same variance and hides it better.

The first movement stays with the operating systems a user chooses. Paper 2 takes up the Apple ecosystem, where the axes are not distributions but a curated set of operating systems and silicon generations, and where the prediction problem reappears as something closer to a permission problem. Paper 3 covers Windows, where the commitment is thirty years of preserved compatibility. Papers IV and V split what is usually treated as one subject: the fleet Google controls, where a managed runtime and a per-device delivery format already moved part of the compile decision onto the device, and the Android that ships on other manufacturers' hardware, where the variance is commercial rather than technical and no runtime abstracts it away.

The second movement moves down a layer, to accelerator instruction sets and CPU architectures, where the commitment is at its most literal. The third covers the machines nobody owns: the rented instance, the thin edge, and the network link itself. The fourth takes the two ends. Paper 11 is Essence Noir, which removes the operating system entirely and asks what resolution means with no layer underneath to negotiate with. Paper 12 is the synthesis, and the one the whole series is built toward: one resource pool spanning every substrate examined, which is what EcoSync was always naming.

The through-line does not change from paper to paper. Only the substrate does.

The Argument, in One Move
Every substrate in this series is a place where somebody has to decide what the machine will be before the machine is there. The decision is currently made at build time, by a person or a build server, using a description. This series is about making it at execution, by the system, using the machine.
The Common Substrate: Essence Paper 1

Thirty years of packaging made the prediction cheaper to carry.
None of it made the prediction unnecessary.

Per-distribution builds, static linking, containers and universal packages are four answers to one question: how do you make a binary compiled against an assumed machine survive a real one. Each answer works by carrying more of the assumption along, and each one buys portability by giving up the ability to use whatever the real machine turned out to have. Essence does not answer that question. It declines to ask it, by not compiling against an assumed machine in the first place. On Linux that produces one artifact instead of a matrix. Underneath, it produces something more useful: a system that gets faster when the hardware is better, instead of one that is insulated from finding out.

Request Platform Access → Linux Binary: Chameleon Full White Paper Series

White Paper Series · The Common Substrate