Skip to content

Inspirations

I've used several task runners, usually as part of build tools. Below is a list of tools used or read about when building ds.

  • 1976: make (C) - Together with its descendants, make is one of the most popular build & task running tools. It is fairly easy to make syntax errors and the tab-based indent drives me up the wall.

  • 2000: ant (Java) - an XML-based replacement for make. I actually liked using ant quite a bit until I stopped writing Java and didn't want to have java as a dependency for my python projects.

  • 2008: gradle (Groovy/Kotlin) - Written for the jvm, I pretty much only use this for Android development. Can't say I love it.

  • 2010: npm (JavaScript) - Being able to add a simple scripts field to package.json made it very easy to run dev scripts. Supports pre and post lifecycle tasks.

  • 2010: pdm (Python) - Supports 4 different types of tasks including cmd, shell, call, and composite.

  • 2012: composer (PHP) - Uses composer.json, similar to package.json. Supports pre- and post- task lifecycle for special tasks, command-line arguments, composite tasks, and other options.

  • 2016: yarn (JavaScript) - An alternative to npm which also supports command-line arguments.

  • 2016: pnpm (JavaScript) - Another alternative to npm which supports many more options including running tasks in parallel.

  • 2016: just (Rust) - Defines tasks in a justfile, similar to make. Supports detecting cycles, running parallel, and many other options.

  • 2016: cargo-run-script (Rust) - Uses Cargo.toml to configure scripts and supports argument substitution ($1, $2, etc.).

  • 2017: cargo-make (Rust) - Very extensive port of make to Rust defining tasks in Makefile.toml.

  • 2022: hatch (Python) - Defines environment-specific scripts with the ability to suppress errors, like make.

  • 2023: bun (Zig) - An alternative to node and npm.

  • 2023: rye (Rust) - Up-and-coming replacement for managing python projects.