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
cmd
andcommand
functions for running external programs. I've deprecated all of the other functions (includingsys
,system'
andsystemCwd
). newCache
is now keyed on anything, and takes an action. To obtain the same behaviour as before, make sure youneed
the 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
storedValue
function of theRule
class 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.exe
to 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.txt
and one for*.txt
) you can use thealternatives
function 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
newThrottle
to support throttled resources, where you can only perform n operations per minute. - Progress prediction.
- Shake installs an executable
shake
which 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