Welcome to the New Year!
We‘ll get started right with the first article of 2014 on a build
system written in Haskell called shake.
Larger software projects (almost) all use a build system to
automatically create a finished software product from source
code. This includes, for example, compiling source files, linking
object files, generating documentation, or assembling distribution
archives.
This blog article provides an introduction to the
shake build system, written in
Haskell. This system has the advantage that dependencies between build
artifacts can arise dynamically, i.e., while the build system is
running. With make, probably the
best-known build system, dependencies must be known before invoking
the build system, which in practice often leads to limitations and
problems.
We use shake at our company to compile our product Checkpad
MED. Here shake plays to its
full strengths, as an important component of the Checkpad
infrastructure is code generation. Thanks to dynamic dependencies, it
is possible to compile the program that generates the code, generate the code
itself, and compile and link the generated code with a single
invocation of the build system.
Neil Mitchell, the author of shake, developed a variant of the tool
for use at Standard Chartered to efficiently
compile really large software projects. Details on this as well as
detailed information on shake‘s internal architecture can be found in
this
article.
Read on...