Um apelo para não usar uv-build

Um backend de compilação Python baseado em Rust chamado uv-build está atraindo críticas de mantenedores do Gentoo, que dizem que seus lançamentos frequentes e o modelo de distribuição focado em binários dificultam a vida de uma distro baseada em código-fonte e altamente personalizável, que precisa recompilar tudo nas máquinas dos usuários. Os defensores respondem que os padrões de empacotamento do Python, o versionamento semântico e as wheels manylinux pré-compiladas funcionam bem para a grande maioria dos desenvolvedores, e que o Gentoo poderia ajustar suas políticas ou fixar versões em vez de esperar que os upstreams evitem ferramentas modernas. Por trás dos detalhes técnicos, há uma tensão mais ampla entre otimizar para plataformas e fluxos de trabalho mainstream e preservar a portabilidade e a viabilidade de sistemas de nicho ou legados, como arquiteturas de 32 bits, SPARC ou HP-UX.

Gentoo vs. uv-build: principal reclamação

  • Gentoo compila quase tudo a partir do código-fonte e quer compilações reproduzíveis e estáveis.
  • uv-build é um backend de compilação Python baseado em Rust, distribuído como wheels binários e atualizado com frequência.
  • Gentoo argumenta que:
    • Cada atualização do backend efetivamente força recompilações do uv-build e de todos os pacotes Python que o utilizam.
    • Isso é custoso em tempo de compilação, especialmente em máquinas de usuários e em arquiteturas exóticas onde não existem binários.
    • Ferramentas baseadas em Rust aumentam as barreiras em plataformas legadas/obscuras e sistemas de 32 bits, onde Rust ou uv-build podem não estar disponíveis.

Versionamento, semântica e “quem decide”

  • Argumentos do lado do uv:
    • O empacotamento Python é padronizado no nível da interface (PEP 517); backends são intercambiáveis se estiverem em conformidade.
    • uv-build usa intervalos semver por padrão; fixar versões exatas é opcional, e a verdadeira causa da cascata de recompilações é isso.
    • Deixar uma versão de backend sem restrição não significa tecnicamente “usar a mais recente”; os instaladores são livres para reutilizar qualquer versão compatível já presente.
  • Contestação:
    • Gentoo e outros afirmam que, na prática, compilações novas de virtualenv buscarão a versão mais recente dentro do intervalo.
    • Alguns argumentam que, para distros, o backend é uma dependência; qualquer mudança deve invalidar compilações para fins de reprodutibilidade.
    • Há discordância sobre se a “recompilação em mudança de backend” do Gentoo é exigida pelos padrões do Python ou uma política autoimposta.

Código-fonte vs binários e desempenho

  • Alguns comentaristas dizem que a implementação rápida em Rust do uv-build e suas atualizações frequentes são ótimas para a grande maioria que instala binários.
  • Outros argumentam que distros orientadas a código-fonte (Gentoo, NixOS, etc.) pagam custos desproporcionais por backends pesados em Rust.
  • Debate sobre a raison d’être do Gentoo:
    • Críticos chamam compilar tudo de “zelo amador” e incentivam o uso de binários ou caches no estilo Nix.
    • Defensores dizem que o Gentoo é sobre flexibilidade/controle (USE flags, ajuste de CPU), não apenas maximização de desempenho.

Portabilidade, Rust e a cauda longa de plataformas

  • Foram levantadas preocupações de que ferramentas baseadas em Rust como uv-build e um possível uso de Rust no CPython reduzam o suporte para SPARC, HP‑UX, 32 bits e semelhantes.
  • Alguns argumentam: “se compila, especialistas locais muitas vezes conseguem fazê-lo funcionar”; outros contrapõem que “compila” está muito longe de “funciona”.
  • Há tensão entre focar em plataformas tier‑1 mainstream e preservar a cauda longa de sistemas de nicho.

Quem deve se adaptar?

  • Um lado: upstreams e usuários devem adotar uv-build livremente; o Gentoo pode aplicar patches, fazer cache ou relaxar suas políticas.
  • Outro lado: projetos devem, por padrão, usar backends simples/puramente em Python quando possível para evitar empurrar custos do ecossistema para distros baseadas em código-fonte.