On Sunday, 12 June 2016 at 11:06:23 UTC, Fool wrote:
Nice work! I'm wondering how Button would compare in the Build System Shootout (https://github.com/ndmitchell/build-shootout).

It does pretty well. I even looked over this as I was designing it.

Here's the test cases it succeeds at:

- "basic: Basic dependency"
- "parallel: Parallelism"
- "include: C #include files"
- "wildcard: Build a file specified by an extension wildcard" (Via generating the build description.)
- "spaces: Build a file containing spaces"
- "monad1: Monadic patterns"
- "monad2: More monadic patterns"
- "monad3: More monadic patterns"
- "unchanged: Handle files which do not change"
- "multiple: Rules with multiple outputs"
- "digest: Don't rebuild when a file is modified to the same value"
- "nofileout: Don't produce an output file"

And the ones it fails at:

- "system1: Dependency on system information" (Because tasks with no dependencies are only run once. This could be changed easily enough, but I don't see the point.) - "system2: Dependency on system environment variable" (Button doesn't know about environment variables.) - "pool: Limit the parallelism in a specific stage" (I'm not sure how useful this is, but it could be added.) - "secondary: Secondary target" (I think this is incorrect behavior and not a feature.) - "intermediate: Intermediate target" (Same reason as "secondary". If this is really needed, it should be encapsulated inside a single task.)

As for the "Build System Power" section:

- Yes: Pre dependencies
- Yes: Post dependencies
- Yes: Mid dependencies
- Yes: Auto post dependencies
- Not yet: Auto cached commands

I'd say it's more robust than any other single build system there, but I'm biased. :-)

I should probably make a pull request to add it to the shootout.

Reply via email to