Hasty Briefsbeta

双语

A build graph that rolls dice

a day ago
  • 动态派生将Nix从一个应用式构建系统(提前知道图)转变为一个单子式构建系统(在构建过程中定义图)。
  • 传统的Nix要求整个构建图提前已知,从而支持像dry-run和nix-diff这样的工具。
  • 从派生导入已经在求值器中提供了单子行为,但动态派生将绑定移动到调度器中,从而允许并行性、缓存和远程构建。
  • 一个实际示例:掷一个六面骰子来决定是否继续构建一个链,显示图深度随机变化。
  • 动态派生开启了超越lang2nix的可能性,例如游戏模拟、状态空间搜索、爬取和模糊测试。
  • 当前工具无法在执行前内省动态构建图,限制了生态系统的适应。