Las derivaciones dinámicas en Nix transforman el grafo de construcción

Fuentes: Dynamic derivations in Nix transform the build graph

El artículo explora cómo las derivaciones dinámicas en Nix alteran la naturaleza del grafo de construcción, pasando de un sistema aplicativo a uno monádico. Tradicionalmente, Nix requiere conocer el grafo de construcción completo antes de iniciar la compilación, una propiedad que permite herramientas como nix-diff analizar diferencias entre closures sin ejecutarlos. Sin embargo, las derivaciones dinámicas permiten definir el grafo a medida que avanza la construcción, donde los pasos futuros dependen de los resultados previos, similar a cómo una receta de cocina puede modificar sus ingredientes según el progreso.

El texto distingue entre el 'bind' monádico existente en el evaluador de Nix, que se limita a la evaluación secuencial, y el nuevo 'bind' en el programador, que permite ejecutar constructores en paralelo, enviarlos a máquinas remotas y utilizar cachés. Se presenta un ejemplo práctico con un script que simula lanzar un dado para determinar la profundidad de la cadena de dependencias, demostrando cómo el grafo se construye dinámicamente en tiempo real. Este enfoque es crucial para entender las implicaciones de las derivaciones dinámicas más allá de la generación de grafo mediante herramientas como lang2nix, ofreciendo una visión más profunda de la arquitectura de Nix.