Hat Logo

Hat status

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 (i.e. ghc).
  • 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 super-saturated applications.
  • 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 lambda expressions.
  • Bugfix: Hat-trans generated incorrect values for some non-printing characters.
  • 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 function.
  • 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 http://www.haskell.org/hat/

This page last modified: 2nd Oct 2008
York Functional Programming Group