
We are pleased to announce a new release of the nhc98 compiler, and in particular its facilities (both brand new and improved old stuff) for tracing and debugging Haskell programs - the Hat system. The basic nhc98 compiler version 1.04 is mostly a bugfix release (details listed at the bottom of this announcement). http://www.cs.york.ac.uk/fp/nhc98/ However, the stuff we are really excited about is Hat - our Haskell tracer. A full user guide to these new tools is available on the website. http://www.cs.york.ac.uk/fp/hat/ Hat 1.04 ======== * Lots more tools for tracing! hat-stack - Displays a "virtual" stack-trace for any program that failed with a runtime error. hat-detect - Algorithmic bug detection, based on a textual question-and-answer session. hat-trail - The original graphical trail browser, now with several presentation enhancements. hat-observe - Examine the inputs and outputs of any named function, in the style of HOOD. * Tracing with Hat is now based on a completely new architecture (although still within the nhc98 compilation system). A program compiled for tracing now builds its "redex trails" in file, not in the heap. This has some performance consequences: (1) you no longer need to allocate large amounts of heap memory for tracing; (2) but you will probably need large amounts of disk space instead - remember disk space is cheap; (3) and traced programs still run somewhat slowly. * However, there are a couple of major benefits in return: (1) A trace is persistent, so after running your program once, you can examine many different aspects of the trace without re-computation. (2) Traces are now first-class objects, so you can examine and manipulate them in far more detail - hence the variety of new tracing tools. * Greater Haskell'98 compatibility. Almost all language features are now supported: named fields and better handling of pattern bindings are the main additions. All standard libraries except Time and Locale are now supported. nhc98 1.04 ========== * New: Improved (more accurate) time profiling now provided. * New: Support for extended module namespaces of the form Long.Hierarchical.Module.Name is now provided in both nhc98 and hmake. * Bugfix: An identifier hidden on import and redefined in the current module, then exported, but also imported qualified and used qualified in the current module, led to an incorrect interface file being generated. * Bugfix: hmake issued an unnecessary -cpp flag on some literate files. * Bugfix: Type of IO.hSetPosn :: Handle -> HandlePosn -> IO () was incorrect. * Bugfix: Compile-time error in <tt>src/tracer/runtime/ident.c</tt> on RedHat 7 and other systems using the new ISO C standard for <tt>fpos_t</tt>. * Bugfix: A file opened in ReadMode or WriteMode was actually opened in ReadWriteMode, so if the file had strict permissions the correct opening command would fail. Conversely, opening in ReadWriteMode actually gave ReadMode instead, and file updates silently failed. * Bugfix: Operator sections suffered from priority inversion, for example (^2*3) was incorrectly parsed as (^(2*3)), even though ^ binds more tightly than *. * Bugfix: The library function Directory.createDirectory gave strange permissions to the new directory. (Mode was in hex, but should have been octal!) * New: Improved printing of I/O error messages. Happy tracing! The Hat team at York (Colin Runciman, Olaf Chitil, Malcolm Wallace, Thorsten Brehm, Phil Hassall)

I've just installed nhc 1.04, and tried to execute: hmake 1 -T in a directory containing file 1.hs: module Main where f = foldl (+) 0 main = print (f [1..10]) and I've got the following error message: [khaliff@90-mia-3 khaliff]$ hmake 1 -T nhc98 -T -c -o 1.T.o 1.hs nhc98 -T -o 1 1.T.o 1.T.o(.data+0x1a8): undefined reference to N_Prelude_46mkNTId' 1.T.o(.data+0x1b0): undefined reference to N_Prelude_46mkSR' 1.T.o(.data+0x1b8): undefined reference to N_Prelude_46mkTNm' 1.T.o(.data+0x1bc): undefined reference to F_Prelude_46mkTRoot' 1.T.o(.data+0x1e8): undefined reference to N_Prelude_46lazySat' 1.T.o(.data+0x310): undefined reference to N_Prelude_46mkNTId' 1.T.o(.data+0x318): undefined reference to N_Prelude_46mkSR' 1.T.o(.data+0x320): undefined reference to N_Prelude_46mkTNm' 1.T.o(.data+0x324): undefined reference to F_Prelude_46mkTRoot' 1.T.o(.data+0x364): undefined reference to N_Prelude_46lazySat' Wojciech Moczydlowski, Jr
participants (2)
-
Malcolm Wallace
-
Wojciech Moczydlowski, Jr