| ▲ | embedding-shape 3 hours ago | |||||||
> What you really want is a way for scripts to describe their dependencies, and then the runner figures out what order to run them in, and cache scripts that don't need to be run because their inputs didn't change. DAG + content-addressing, final binary being the target and everything resolved from there. We could have some beautiful build system that just works and is fast, but seems it never magically appears by itself although it seems so elegant. Guess Nix/NixOS is the closest we've gotten so far, works well enough, missing concurrency and parallelism though. | ||||||||
| ▲ | dpe82 2 hours ago | parent | next [-] | |||||||
Google's build system Bazel is what you describe. | ||||||||
| ||||||||
| ▲ | sestep an hour ago | parent | prev | next [-] | |||||||
Could you clarify what you mean about Nix missing concurrency and parallelism? I often run builds using nix-output-monitor and it definitely looks like things are running in parallel, although I could be mistaken. | ||||||||
| ▲ | spankalee 2 hours ago | parent | prev [-] | |||||||
Wireit does both DAG and content-addressing. It figerprints the inputs and outputs of dependencies. And you run scripts externally with plain `npm run` commands. It's really beautiful. | ||||||||