A plea not to use uv-build

A Rust-based Python build backend called uv-build is drawing criticism from Gentoo maintainers, who say its frequent releases and binary-focused distribution model make life difficult for a source-based, highly customizable distro that must rebuild everything on users’ machines. Supporters counter that Python’s packaging standards, semantic versioning, and prebuilt manylinux wheels work well for the vast majority of developers, and that Gentoo could adjust its policies or pin versions instead of expecting upstreams to avoid modern tooling. Underneath the technical details is a broader tension between optimizing for mainstream platforms and workflows versus preserving portability and viability for niche or legacy systems like 32‑bit architectures, SPARC, or HP-UX.

Gentoo vs. uv-build: core complaint

  • Gentoo builds nearly everything from source and wants reproducible, stable builds.
  • uv-build is a Rust-based Python build backend shipped as binary wheels and updated frequently.
  • Gentoo argues that:
    • Each backend update effectively forces rebuilds of uv-build and all Python packages that use it.
    • This is costly in build time, especially on user machines and for exotic architectures where no binaries exist.
    • Rust-based tooling raises barriers on legacy/obscure platforms and 32‑bit systems where Rust or uv-build may not be available.

Versioning, semantics, and “who decides”

  • uv-side arguments:
    • Python packaging is standardized at the interface level (PEP 517); backends are interchangeable if conformant.
    • uv-build defaults to semver ranges; pinning exact versions is opt‑in and the real cause of rebuild churn.
    • Leaving a backend version unconstrained does not technically mean “use latest”; installers are free to reuse any compatible version already present.
  • Pushback:
    • Gentoo and others claim that in practice fresh virtualenv builds will fetch the newest version within the range.
    • Some argue that for distros, the backend is a dependency; any change should invalidate builds for reproducibility.
    • There is disagreement over whether Gentoo’s “rebuild on backend change” is required by Python’s standards or self‑imposed policy.

Source vs binaries and performance

  • Some commenters say uv-build’s fast Rust implementation and frequent updates are fine for the vast majority who install binaries.
  • Others argue that source-first distros (Gentoo, NixOS, etc.) pay disproportionate costs for Rust-heavy backends.
  • Debate over Gentoo’s raison d’être:
    • Critics call compiling everything “hobbyist zealotry” and urge using binaries or Nix-like caches.
    • Defenders say Gentoo is about flexibility/control (USE flags, CPU tuning), not performance-maxing alone.

Portability, Rust, and long-tail platforms

  • Concerns raised that Rust-based tooling like uv-build and potential Rust in CPython reduce support for SPARC, HP‑UX, 32‑bit, and similar.
  • Some argue “if it compiles, local experts can often make it work”; others counter that “it compiles” is far from “it works”.
  • There is tension between focusing on mainstream tier‑1 platforms vs. preserving the long tail of niche systems.

Who should adapt?

  • One camp: upstreams and users should freely adopt uv-build; Gentoo can patch, cache, or relax its policies.
  • Other camp: projects should default to simple/pure‑Python backends when possible to avoid pushing ecosystem costs onto source-based distros.