Hacker News
Bun v1.3.9
spankalee
|next
[-]
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.
Wireit[1] is an npm script runner that adds that incrementally on top of package.json. I can't manage an npm monorepo without it now.
Deno started integrating the idea directly into their built-in script runner. I think this is an important enough feature that more runtimes should follow Deno's lead.
embedding-shape
|root
|parent
|next
[-]
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.
giorgioz
|next
|previous
[-]
harshreality
|root
|parent
|next
|previous
[-]
Programming talks about parallelism or concurrency or threading. (single-threading, multi-threading)
Or synchronous and asynchronous.
The legal system talks about concurrent and consecutive.
Process descriptions might use "sequential" rather than consecutive or series.
"Linear" is another possibility, but it's overloaded since it's often used in reference to mathematics.
gradys
|root
|parent
|next
|previous
[-]
"Sequential" feels more appropriate to me for the task runner scenario where we wait for one task to finish before running the next.
"Series" suggests a kind of concurrency to me because of the electrical circuit context, where the outputs of one are flowing into the next, but both are running concurrently. Processes that are Unix piped into each other would be another thing that feels more like a "series" than a "sequence".
hinkley
|root
|parent
|next
|previous
[-]
smlavine
|root
|parent
|next
|previous
[-]
cornstalks
|root
|parent
|next
|previous
[-]
rcarmo
|next
|previous
[-]
johnfn
|next
|previous
[-]
btown
|root
|parent
|next
[-]
(trap 'kill 0' INT TERM; cmd1 & cmd2 & cmd3 & wait)
Or, for 1+2 sequentially, in parallel with 3+4 sequentially: (trap 'kill 0' INT TERM;
(cmd1 && cmd2) &
(cmd3 && cmd4) &
wait
)
(To oversimplify: The trap propagates the signal (with 'kill') to the process group 0 made by the () parens; this only needs to be set at the top level. & means run in background, && means run and continue only on success.)There are other reasons one might not want to depend on bash, but it's not something to be afraid of!
rafaelmn
|root
|parent
|next
|previous
[-]
runjake
|root
|parent
|next
|previous
[-]
an_ko
|root
|parent
|next
|previous
[-]
re-thc
|root
|parent
|next
|previous
[-]
At this point you don't need most things...
paulddraper
|root
|parent
|previous
[-]
1. Minor speed boost from not needing bun multiple times (or extract the build/test/lint commands from package.json).
2. You can query/filter commands. E.g. run all my tests (both unit and integration).
3.You avoid needing a separate Bash install (for Windows).