Another interesting implementation is Shake: https://shakebuild.com/
It is technically a Haskell DSL, but supports Ninja files, time estimates and has tools for linting and profiling.
It is technically a Haskell DSL, but supports Ninja files, time estimates and has tools for linting and profiling.