Hi Maxim and all, So this is it, 2021 *is* the year of build systems on gexps!
I’ve rebased it and pushed on ‘core-updates’ with 2eafeb2f3d661061bc412c3f27c90202e4532532 as the tip. The build farm has a bit of work to do now it seems. Hmm actually the evaluation at <https://ci.guix.gnu.org/jobset/core-updates> just failed with a yellow cross, not sure what that means. Anyway, I’ll be monitoring in the coming days, but do ping me when you encounter problems! It’s crazy that it took 6 years (six!) to get past the finish line. The initial reason for not merging it was that I was worried about performance regressions; there’s still work to do in this area, as I wrote earlier, but it’s looking good. Another reason is that I was afraid of unlocking features that would break assumptions we make about packages—for instance, that all the inputs are specified in the various inputs fields, and that these fields are all we need to care about when doing graph rewriting. (I now think this fear was unwarranted.) And then, rebasing the branch became harder every time, there were more and more build systems that needed to be converted… and there were always more pressing issues to work on. What’s the lesson here? I don’t know! Had it been done six years ago, it would have had to go through a number of iterations: ‘with-imported-modules’ and ‘with-extensions’ didn’t exist, the template mechanism in (guix monads) didn’t exist, self-referential records (‘this-package’, etc.) weren’t there. It would have worked though, and perhaps we’d have explored other parts of the design space, who knows. Ludo’.