Summary: Shake 0.11 is out, upgrading should be pretty easy.
Shake is a Haskell library for writing build tools, and I've just released version 0.11. There are a few incompatible changes, and a few new features.
- Everyone should move to the
commandfunctions for running external programs. I've deprecated all of the other functions (including
newCacheis now keyed on anything, and takes an action. To obtain the same behaviour as before, make sure you
needthe file argument in the function passed to
- If you are writing your own types of
Rule(fairly rare) you need to import
storedValuefunction of the
Ruleclass now gets given the current
The move to
command will require the most effort to upgrade, but none of these functions have been removed, so you can upgrade and then convert over after. The other changes are likely to hit very few people, and can be adapted to very easily. If you have any difficulties, email the mailing list.
Major new features in 0.11:
- There is tracking support, to check you have not missed any dependencies. There are support functions for tracking (e.g.
trackChange) and on Windows there is support for using
tracker.exeto call these functions.
- The Shake database is now more compact, about 40% smaller for some examples.
- If you have a few rules that overlap (e.g. one for
foo.txtand one for
*.txt) you can use the
alternativesfunction to combine them.
- The Ninja parser is faster (4x faster than Ninja itself to parse the Chromium Ninja files on one machine).
- The continuous integration tests include a test that Shake can build the Ninja binary from Ninja build files faster than Ninja can (it is typically about 10% faster to build from scratch).
The biggest features since 0.10:
- Support for Unicode filenames.
- Addition of
newThrottleto support throttled resources, where you can only perform n operations per minute.
- Progress prediction.
- Shake installs an executable
shakewhich can build either Ninja projects (almost all) or Makefile projects (barely any).
A complete list of changes since the beginning is available here.