À propos du projet

Reprobuild est un système de build unifié qui remplace les outils fragmentés tels que les Dockerfiles, les Nix flakes, les Makefiles et les pipelines CI par un graphe de build unique, vérifié à la compilation. Son innovation principale consiste à modéliser non seulement des fichiers, mais aussi des états — tels que des services en cours d'exécution, des paramètres système ou des ressources cloud — en tant que nœuds du graphe. Cela permet un cache cohérent, l'herméticité et le rollback à travers les builds, les environnements de développement et l'infrastructure. Les fonctionnalités clés incluent la découverte automatique des dépendances via la surveillance du système de fichiers (via io-mon), le rechargement à chaud du code entre des projets interdépendants (par exemple, modifier Cairo tout en compilant Firefox), et un développement sans configuration via `repro develop`. Les projets sont définis dans un DSL Nim typé (`repro.nim`), permettant le support IDE et la validation à la compilation des versions d'outils, des étapes de build et des configurations de services. Il supporte Windows, Linux et macOS ; s'intègre aux fournisseurs Terraform ; et propose des builds distribués ainsi que le sharding de tests. Contrairement à Bazel ou Nix, il est livré sous la forme d'un seul binaire natif sans démons ni services distants. Reprobuild impose la reproductibilité en adressant les entrées par leur contenu, en vérifiant l'égalité octet par octet des sorties, et en générant automatiquement des SBOM et des attestations. Il alimente également ReproOS, une distribution Linux entièrement construite à partir des sources en utilisant le même modèle de graphe. Les commandes CLI couvrent la construction, les tests, la gestion des services, la synchronisation de l'espace de travail et la gestion de l'infrastructure locale. Le système est sous licence MIT, avec des services commerciaux optionnels pour les caches hébergés et l'utilisation en entreprise.