The latest stable release is 2.06. The CVS development tree is now
at version 2.07. Bugfixes and important changes to the system are
described here for the two most recent released versions.
Hat 2.06 (2008-10-02) features
- New tool: hat-delta (debugging by comparison of traces).
- New tool: pretty-hat (displays a graph of the trace itself).
- Improved: hat-detect (algorithmic debugging).
- Improved: detection of ghc version under MacOS X.
- Improved: no longer need admin rights to install the Hat libraries for ghc.
- Bugfix: hat-trans: copes with literate files .lhs.
- Bugfix: hat-trans: FFI foreign imports now work.
- Bugfix: hat-trans: better handling of relative directory paths.
- Bugfix: hat-trans: largest size of a named-field update increased
from 2 to 10.
- Bugfix: hat-trans: top-level pattern-bindings now work.
- Bugfix: hat-trans: name clashes from 'deriving' clauses eliminated.
- Bugfix: libraries: correct printing of floating point numbers.
Hat 2.04 (2005-05-17) features
- We have included more libraries from the hierarchical base package as
standard, so more programs should be immediately traceable.
- The algorithmic debugging technique has been re-instated with
the resurrection of the hat-detect browser.
- The browsers are better integrated with each other, sharing a common
set of commands and options.
- A new browser, hat-anim is provided. It animates the
reduction sequence of a selected expression, showing the lazy evaluation
strategy, and revealing intermediate calls between application and result.
- The new browser hat-explore allows interactive exploration of
the trace with simultaneous source highlighting, to narrow down the
location of a bug through program-slicing.
- Some new non-interactive tools: hat-cover shows the test
coverage of the source code for a traced program run;
hat-nonterm finds the circular set of definitions that causes
a program to fall into a non-terminating loop.
- A significant performance improvement in the speed of running traced code.
- Many small bugfixes for correctness of the transformation.
- Works fully with ghc-6.2 and ghc-6.4
Hat 2.02 (2003-03-26) features
- New: Hat supports hierarchical module namespaces, and
the distribution includes a tracing version of (a subset of) the
base package of standard hierarchical libraries.
- New: Hat supports multi-parameter type classes and functional
dependencies, provided your underlying compiler supports them
- New: The browsing tools support qualified name syntax.
- Performance: The speed of traced programs is now much improved. There
is a new "known-arity" optimisation within Hat itself, which
gives a speed-up of ~20-40%. Also, if you use --buildwith=-O
when configuring Hat for ghc, you will get another 20-40%
improvement. Beware however that -O requires a lot
of memory (≥512Mb).
- Bugfix: Named field constructions and updates are now displayed in
the browsing tools as named fields.
- Bugfix: The viewing tools displayed some sugared lists misleadingly:
when the tail of a sugared list was cut off or undefined it
was shown as if it was a final element. Now it has an
ellipsis (...) to indicate possible extra elements.
- Bugfix: After :set recursive off hat-observe showed the
non-recursive calls of f even if given the application
pattern f in f.
- Bugfix: hat-observe :info counts did not necessarily match
the number of observations if there were partial or
- Bugfix: hat-trail now works correctly in environments (e.g. Solaris)
that do not have stty cbreak mode.
- Bugfix: Scrolling sometimes blanked the upper part of the hat-trail
display when the trace was extended deeper than the window.
- Bugfix: The hat-trail display became corrupted if a single trail
expression or equation was large enough to scroll off the screen.
- Bugfix: Hat-trans generated wrongly-parenthesised code for some
- Bugfix: Hat-trans generated incorrect values for some non-printing
- Tidyup: For consistency, the :observe command within hat-observe now
starts a fresh hat-observe window. Also, in hat-trail, if
if you give a query pattern to the :observe command, it now uses
that as the first query, instead of the currently highlighted
- Numerous other small bugfixes in the various trace browsing tools.
Hat 2.00 (2002-06-14) features
- The first version released separately from nhc98. It uses
a different file format to store the trace, and the browsing
tools have been completely rewritten to improve performance,
integration, and correctness.
Status of various components
The basic components of hat are:
- hat-trans, the program transformer.
- hat-lib, the runtime library that is linked to a transformed program.
- hat-observe, a browser driven by expression patterns.
- hat-trail, a browser driven by backward exploration.
- hat-detect, a browser implementing algorithmic debugging. (NOT INCLUDED)
- hat-stack, a browser showing a back-trace from an error.
- hat-view, a source-code viewer.
- hat-check, to verify the integrity of a .hat file.
The latest updates to these pages are available on the WWW from
This page last modified: 2nd Oct 2008
York Functional Programming Group