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.
Incompatible changes:
- Everyone should move to the
cmdandcommandfunctions for running external programs. I've deprecated all of the other functions (includingsys,system'andsystemCwd). newCacheis now keyed on anything, and takes an action. To obtain the same behaviour as before, make sure youneedthe file argument in the function passed tonewCache.- If you are writing your own types of
Rule(fairly rare) you need to importDevelopment.Shake.Rule. - The
storedValuefunction of theRuleclass now gets given the currentShakeOptions.
The move to cmd and 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.
trackUse,trackChange) and on Windows there is support for usingtracker.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 thealternativesfunction 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.
No comments:
Post a Comment