Sobre el proyecto
Reprobuild es un sistema de compilación unificado que reemplaza herramientas fragmentadas como Dockerfiles, Nix flakes, Makefiles y canalizaciones de CI con un único grafo de compilación verificado en tiempo de compilación. Su innovación principal es modelar no solo archivos sino estados —como servicios en ejecución, configuraciones del sistema o recursos en la nube— como nodos en el grafo. Esto permite un almacenamiento en caché consistente, hermeticidad y reversión (rollback) a través de compilaciones, entornos de desarrollo e infraestructura.
Las características clave incluyen el descubrimiento automático de dependencias mediante el monitoreo del sistema de archivos (vía io-mon), la recarga de código en caliente entre proyectos interdependientes (por ejemplo, editar Cairo mientras se compila Firefox) y el desarrollo sin configuración mediante `repro develop`. Los proyectos se definen en un DSL de Nim tipado (`repro.nim`), lo que permite el soporte de IDE y la validación en tiempo de compilación de las versiones de las herramientas, los pasos de compilación y las configuraciones de los servicios.
Es compatible con Windows, Linux y macOS; se integra con proveedores de Terraform; y ofrece compilaciones distribuidas y fragmentación de pruebas (test sharding). A diferencia de Bazel o Nix, se distribuye como un único binario nativo sin demonios ni servicios remotos. Reprobuild impone la reproducibilidad mediante el direccionamiento de entradas por contenido, verificando la igualdad de salida byte por byte y generando SBOMs y atestaciones automáticamente.
También impulsa ReproOS, una distribución de Linux construida enteramente desde el código fuente utilizando el mismo modelo de grafo. Los comandos de la CLI cubren la compilación, las pruebas, la gestión de servicios, la sincronización del espacio de trabajo y la gestión de la infraestructura local. El sistema tiene licencia MIT, con servicios comerciales opcionales para cachés alojadas y uso empresarial.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.