A build system that aims to be correct, scalable, and robust.
To use this package, put the following dependency into your project's dependencies section:
A build system that aims to be fast, correct, and elegantly simple. See the documentation for more information.
- Implicit dependency detection.
- Correct incremental builds.
- Can display a graph of the build.
- Recursive. Can generate a build description as part of the build.
- Very general. Does not make any assumptions about the structure of your project.
- Detects and displays cyclic dependencies.
- Detects race conditions.
"Ugh! Another build system! Why?!"
There are many, many other build systems out there. There are also many, many programming languages out there, but that hasn't stopped anyone from making even more. Advancing the state of a technology is all about incremental improvement. Button's raison d'être is to advance the state of build systems. Building software is a wildly complex task and we need a build system that can cope with that complexity without being too restrictive.
Most build systems tend to suffer from one or more of the following problems:
- They don't do correct incremental builds.
- They don't correctly track changes to the build description.
- They don't scale well with large projects (100,000+ source files).
- They are language-specific or aren't general enough to be widely used outside of a niche community.
- They are tied to a domain specific language.
Button is designed such that it can solve all of these problems. Read the overview in the documentation to find out how.