Button: A fast, correct, and elegantly simple build system.

rikki cattermole via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Mon May 30 20:40:32 PDT 2016


On 31/05/2016 7:16 AM, Jason White wrote:
> I am pleased to finally announce the build system I've been slowly
> working on for over a year in my spare time:
>
>     Docs:   http://jasonwhite.github.io/button/
>     Source: https://github.com/jasonwhite/button
>
> Features:
>
> - Correct incremental builds.
> - Automatic dependency detection (for any build task, even shell scripts).
> - Build graph visualization using GraphViz.
> - Language-independent. It can build anything.
> - Can automatically build when an input file is modified (using inotify).
> - Recursive: It can build the build description as part of the build.
> - Lua is the primary build description language.
>
> A ton of design work went into this. Over the past few years, I went
> through many different designs and architectures. I finally settled on
> this one about a year ago and then went to work on implementing it. I am
> very happy with how it turned out.
>
> Note that this is still a ways off from being production-ready. It needs
> some polishing. Feedback would be most appreciated (file some issues!).
> I really want to make this one of the best build systems out there.
>
> Here is an example build description for DMD:
>
>     https://github.com/jasonwhite/dmd/blob/button/src/BUILD.lua
>
> I'd say that's a lot easier to read than this crusty thing:
>
>     https://github.com/dlang/dmd/blob/master/src/posix.mak
>
> In fact, there is some experimental support for automatic conversion of
> Makefiles to Button's build description format using a fork of GNU Make
> itself: https://github.com/jasonwhite/button-make
>
> Finally, a few notes:
>
> - I was hoping to give a talk on this at DConf, but sadly my submission
> was turned down. :'(
>
> - I am aware of Reggae, another build system written in D. Although, I
> admit I haven't looked at it very closely. I am curious how it compares.
>
> - You might also be interested in the two other libraries I wrote
> specifically for this project:
>
>   - https://github.com/jasonwhite/darg (A command-line parser)
>   - https://github.com/jasonwhite/io (An IO streams library)

Are you on Freenode (no nick to name right now)?
I would like to talk to you about a few ideas relating to lua and D.


More information about the Digitalmars-d-announce mailing list