This reduces memory and CPU usage (unless you only have one CPU core), and reduces the time needed to compile, during 'guix pull'. Memory: It used to use as many guile processes as you have cores, each consuming about 100-150 MB memory. Now it uses a single guile process whose memory consumption grows linearly until it reaches almost 300 MB. CPU: It used to max out every CPU core, now just one. :-) Time: It used to take ~18 minutes on my machine, now less than 3. The code is vastly simplified as well, as you see. I'm not sure if there's a good way to parallelize it though, and it's somewhat hacky to keep all the modules in memory instead of spawning a clean guile to compile each file...