Contexte et portée du problème

Le backend uv-build, introduit comme alternative à des solutions purement Python comme flit-core, est désormais utilisé comme dépendance de construction dans plusieurs paquets Gentoo. Selon l’auteur, chaque version de uv-build pèse entre 1,2 MiB et 1,5 MiB au format wheel, contre 45 KiB pour flit-core. Cette différence de taille implique que chaque mise à jour du backend doit être recompilée depuis les sources, ce qui affecte directement les utilisateurs de Gentoo qui ne consomment que des paquets source.

Coût de compilation et impact sur les flux CI/CD

Sur les trente jours précédant le billet, uv-build a publié douze versions. Si l’on estime que chaque installation de paquet consomme 100 ms d’exécution du backend, le temps cumulé passé à recompiler les nouvelles versions de uv-build peut se chiffrer en plusieurs heures pour un même système. Cette surcharge devient critique dans les environnements d’intégration continue où chaque seconde compte, alors que les gains de performance de uv-build restent de l’ordre de la centaine de millisecondes, largement compensés par le temps de téléchargement du wheel de 1,5 MiB.

Portabilité et contraintes d’architecture

Le backend repose sur le langage Rust. Bien que Rust offre une sécurité mémoire forte, son écosystème de compilation reste limité sur certaines architectures. Par exemple, la bibliothèque rustix::fs ignore la plateforme SPARC sans justification, et les exécutables générés peuvent dépasser l’espace d’adressage disponible sur les systèmes 32 bits. L’e‑build Gentoo de uv intègre déjà deux correctifs pour permettre la compilation sur ces plateformes, illustrant la charge supplémentaire imposée aux mainteneurs.

Analyse des bénéfices réels

Les deux arguments avancés en faveur de uv-build sont la cohérence avec l’outil uv et une légère amélioration de la vitesse de construction. La première raison ne tient pas compte du principe de PEP 517, qui autorise l’usage de n’importe quel backend avec n’importe quel frontend ; flit-core ou hatchling fonctionnent tout aussi bien avec uv. La seconde raison, une différence d’environ 100 ms, est négligeable face au temps de téléchargement et de compilation du backend lui‑même. De plus, la majorité des utilisateurs finaux de Gentoo consomment des wheels pré‑compilés, tandis que les développeurs, les CI et les packagers – qui sont les seuls à toucher le backend – restent minoritaires.