Grace à l’IA, un développeur a réécrit Homebrew en Zig.
Il a en fait conçu un gestionnaire de paquets qui installe des logiciels 10 à 500 fois plus vite que Homebrew. Taille : 1,2 Mo. Écrit en Zig. Zéro dépendance. Ça s’appelle nanobrew, et voici comment ça fonctionne.

Le problème
brew install tree prend 5,5 secondes pour un binaire de 60 Ko. La majeure partie de ce temps est perdue dans le démarrage de Ruby, les sous-processus curl et les opérations séquentielles.
nanobrew réalise la même installation en 10 ms à froid, et 3,5 ms à chaud. Ce n’est pas une faute de frappe.
Homebrew embarque un runtime Ruby de 57 Mo. Il fait appel à curl pour chaque téléchargement. Il lit les fichiers deux fois : une fois pour télécharger, une fois pour vérifier le hash.
nanobrew est un binaire statique de 1,2 Mo. HTTP natif. SHA256 en streaming qui vérifie pendant le téléchargement. Zéro sous-processus. Jamais.
La sécurité des types provient de : https://github.com/justrach/dhi
Le pipeline d’installation :
- Résolution des dépendances (BFS parallèle)
- → Téléchargement + SHA256 (streaming, concurrent)
- → Extraction via
mmap - → Stockage par hash de contenu
- → APFS
clonefiledans le Cellar
Tout tourne en parallèle. Téléchargements, extractions, résolution de dépendances — tout est concurrent.
L’innovation clé : Stockage adressable par contenu + APFS clonefile.
Les données des paquets résident dans un dépôt indexé par SHA256. Installer signifie créer une référence « zero-copy » via l’appel système clonefile de macOS.
Aucune donnée n’est déplacée. Aucun coût disque. C’est pourquoi les installations à chaud prennent 3,5 ms.
Tout en natif :
- HTTP natif (pas de sous-processus curl)
- Parsing Mach-O natif (pas de otool)
- Parsing ELF natif (pas de patchelf)
- ar + zstd + gzip natif (pas de sous-processus tar)
- Allocateurs d’arène (zéro allocation de tas sur le chemin critique)
C’est l’absence totale de création de sous-processus qui génère cette vitesse.
Benchmarks réels (Apple Silicon, macOS 15) :
- tree (0 dép, froid) : brew 8,99s → nb 1,19s (7,6x plus rapide)
- wget (6 dép, froid) : brew 16,84s → nb 11,26s (1,5x plus rapide)
- ffmpeg (11 dép, chaud) : brew ~24,5s → nb 3,5ms (7 000x plus rapide)
Et ça ne concerne pas que macOS. nanobrew effectue l’extraction native de .deb sur Linux… 2,8x plus vite qu’apt-get dans Docker (c’est là que réside l’innovation majeure pour ses propres problèmes Docker). Parfait pour les conteneurs CI où apt-get est d’une lenteur exaspérante.
Quelles sont les fonctionnalités ?
- Tout ce que fait brew : install, upgrade, uninstall, list
- Taps tiers :
nb install user/tap/formula - Casks : apps macOS .dmg, .pkg, .zip
- Builds depuis les sources : cmake, autotools, meson, make
- Services : launchctl (macOS) + systemd (Linux)
- rollback, pin/unpin, doctor, cleanup, export de bundle
- Complétion shell : zsh, bash, fish
« Puis-je l’utiliser aux côtés de Homebrew ? » Oui. nanobrew s’installe dans /opt/nanobrew/, totalement séparé de /opt/homebrew/. Faites tourner les deux côte à côte.
Il utilise les mêmes formules et la même infrastructure de « bottles » que Homebrew. nb install tree fonctionne exactement comme brew install tree.
C’est expérimental, mais cela fonctionne bien pour les paquets courants.
Testez-le : GitHub : http://github.com/justrach/nanobrew Ou installez-le directement : curl -fsSL https://nanobrew.trilok.ai/install | bash