Об этом проекте

Reprobuild — это унифицированная система сборки, которая заменяет разрозненные инструменты, такие как Dockerfiles, Nix flakes, Makefiles и CI-конвейеры, единым графом сборки с проверкой во время компиляции. Его ключевая инновация заключается в моделировании не только файлов, но и состояний — таких как запущенные сервисы, системные настройки или облачные ресурсы — в качестве узлов графа. Это обеспечивает согласованное кэширование, герметичность и возможность отката сборок, сред разработки и инфраструктуры. Ключевые особенности включают автоматическое обнаружение зависимостей через мониторинг файловой системы (с помощью io-mon), горячую перезагрузку кода между взаимозависимыми проектами (например, редактирование Cairo во время сборки Firefox) и разработку с нулевой настройкой через `repro develop`. Проекты определяются в типизированном Nim DSL (`repro.nim`), что обеспечивает поддержку IDE и проверку версий инструментов, этапов сборки и конфигураций сервисов во время компиляции. Система поддерживает Windows, Linux и macOS, интегрируется с провайдерами Terraform, а также предлагает распределенную сборку и шардинг тестов. В отличие от Bazel или Nix, она поставляется в виде одного нативного бинарного файла без демонов или удаленных сервисов. Reprobuild обеспечивает воспроизводимость за счет адресации входных данных по содержимому, побайтовой проверки равенства выходных данных и автоматической генерации SBOM и аттестаций. Также на базе этой системы работает ReproOS — дистрибутив Linux, полностью собранный из исходного кода с использованием той же модели графа. Команды CLI охватывают сборку, тестирование, управление сервисами, синхронизацию рабочего пространства и управление локальной инфраструктурой. Система распространяется под лицензией MIT с возможностью использования коммерческих сервисов для хостинга кэша и корпоративного применения.