nhc98 release history
nhc98 1.21 (darcs) features
nhc98 1.20 (2007-11-22) features
- New: Pattern guards are supported.
- New: More hierarchical libraries have been added to the base package.
- Bugfix: Now builds on 64-bit machines (in 32-bit mode)
- Bugfix: Newer version of hmake (3.13)
- Bugfix: The evil mangler is now less evil (and more robust)
- Bugfix: Add a workaround for the hi-membug that caused build failures
on many recent Linux platforms.
- Bugfix: Lexical error on varid _2a is fixed.
- Bugfix: Renaming bug in newtype A a = A a.
- Bugfix: hp2graph problem with x-axis resolution in interval (-i) sampling.
- Bugfix: hp2graph end-of-file parsing bug.
- New: The runtime system code is now documented using funnelweb.
nhc98 1.18 (2005-03-11) features
- New: nhc98 now ships with a testsuite.
- New: Several more packages of hierarchical libraries are included in
the build: base, parsec, haskell-src, QuickCheck, HaXml,
HUnit, Cabal.
- New: FFI improvements: foreign import "dynamic" is now supported,
and named C header-files are now used.
- New: cpphs is included as a replacement for the C preprocessor.
- New: The compiler now uses cpphs for Haskell source instead of cpp.
This removes problems with string gaps, primes in identifiers,
and so on.
- New: In hmake-interactive, if the readline library is not available,
the simple line editor now has a history mechanism.
- Bugfix: hmake's processing of cpp conditional directives is improved
also.
- Bugfix: Evil bugfixes for ghc versions ≥ 6.0
- Bugfix: More evil bugfixes for gcc versions ≥ 3.3
- Bugfix: A numeric pattern can now match against a Num newtype.
- Bugfix: Foreign imports and abstract newtypes now play OK together.
- Bugfix: Methods in qualified classes no longer need to be qualified
in instance decls.
- Bugfix: GreenCard now accepts <<.../...>> syntax.
- Bugfix: Numerous internal tidy-ups, including fixes such that nhc98
can once again be built by hbc.
nhc98 1.16 (2003-03-08) features
- New: A large subset of the base package of
hierarchical libraries is now included in the build.
- New: The primitive FFI mechanism has been updated to match
the latest official spec, and the full Foreign
libraries are also included.
- Performance: The library function List.sortBy now uses a stable
O(n log n) mergesort.
- Bugfix: nhc98 now works correctly in the presence of gcc-3.x.
- Bugfix: nhc98 once again builds on Cygwin with ghc.
- Bugfix: Numerous other small fixes, including revisions to the
Haskell'98 standard.
nhc98 1.14a (2002-08-13) features
- The only change between 1.14 and 1.14a is that the version of
hmake included in the source package has been updated from 3.05
to 3.06.
nhc98 1.14 (2002-06-14) features
- Major change: The Hat tracing system is now entirely separate from
the nhc98 compiler. Hat can now be used with either ghc
or nhc98 - you should download and build the Hat system
after building nhc98.
- New: The compiler now supports a simplified version of ghc's
package mechanism. No documentation yet, but Hat relies
on it.
- Performance: Various patches for improved time/space usage of the
compiler itself, contributed by Thomas Nordin.
- Bugfix: Various small fixes for OS environments like OpenBSD,
ix86-Solaris, etc.
nhc98 1.12 (2002-03-14) features
- New: The old hat-trail tool written in Java is now obsolete,
replaced by a brand new version written in Haskell.
- New: There are numerous improvements to the Hat tools, and
their command syntax is now simplified and much more
uniform.
- New: All possible tunnels between hat-trail, hat-observe, and
hat-detect are now available.
- New: The first version of the portable Hat transformation is
now available. In other words, Hat can now compile simple
programs with ghc instead of nhc98.
- Bugfix: The Time library now has implementations of addToClockTime
and diffClockTimes, and tdPicoSec is renamed to tdPicosec.
- Bugfix: The Numeric library now has implementations of floatToDigits,
formatRealFloat, fromRat, and show[EFG]Float.
- Bugfix: Numerous small problems with building on MacOS X have
been ironed out.
- Bugfix: The IO library did not re-export the PreludeIO definitions.
- Bugfix: An infix pattern decl of the form
a `Foo` (b `Bar` c) = 3 `Foo` (4 `Bar` 5)
could not be compiled because the parser lost the explicit
bracketing on the LHS.
- Bugfix: Allow an empty import/export decl with a single stray comma.
- Bugfix: Fix block-buffered file handles, so that they produce output
exactly when the buffer is full.
- Bugfix: Do not treat `qualified', `hiding', or `interface' as keywords
of the language - they are significant only in certain
positions.
- Bugfix: Increase garbage collection counters to 64-bits for correct
reports in long-running computations.
- Bugfix: Accept `instance ClassName (Prelude.->)' in source and
interface files.
- Bugfix: Work around a rare buffer problem in hp2graph.
- Bugfix: Where an entire module is re-exported, but one of its
variables is hidden on import, the hidden variable should
not be re-exported.
- Bugfix: Fix link message "undefined reference to
`FN_Ix_46_95_46Unknown_46variable'" when using library Array.
- Bugfix: Update configuration script (again) to detect ghc-5.02
correctly.
nhc98 1.10 (2001-10-19) features
- Bugfix: The qualified import/export namespace is now managed much
better by the compiler, in accordance with latest revision
of the Haskell'98 Report.
- Bugfix: In the Hat tools, there is a more accurate distinction between
top-level identifiers and local identifiers.
- Bugfix: Numerous small bugfixes in hat-observe and hat-detect,
including better pretty-printing of infix expressions and
strings.
nhc98 1.08 (2001-09-25) features
- New: Tunnels from hat-observe to hat-detect and hat-trail,
enabling the user to jump directly to something of interest.
- New: Prototype version of the portable source-to-source
transformation is in progress.
- New: More updates of the the Prelude/Libraries to match the
recent revisions of the Haskell'98 Report.
- Bugfix: Numerous small bugfixes in hat-observe, hat-detect, and
hat-trail.
- Bugfix: You can now have multiple copies of hat-trail running
simultaneously.
- Bugfix: A module with an explicit null export list previously
exported everything - now it correctly exports nothing.
- Bugfix: In multiple equations with identical (n+k) patterns, only
the first equation was ever matched, the rest were
previously ignored.
- Bugfix: A negative literal integer in a pattern caused a compiler
error if the (-) function was not also used in an expression.
- Bugfix: An imported named field, used both as a pattern and a
selector in the same equation, gave rise to an
"Unbound Identifier" error.
- Bugfix: Fixes random crashes in primitive implementation of putStr.
- Bugfix: Link options for ncurses (in src/tracer/hat) were in the
wrong order.
nhc98 1.06 (2001-06-08) features
- New: Updated the Prelude/Libraries to match the newly revised
Haskell'98 Report.
- Update: Default build target is now basic + tracer (was just basic).
- Update: Building with gcc now builds everything with gcc, including
profiling and tracing. This is much faster.
- Bugfix: A bad interaction between Java and Cygwin to do with Unix
vs. Windows pathnames. (Visible only in Hat-trail and Hood.)
- Bugfix: An 'hi' built with just a C compiler seg-faulted, due to
mismatched .c file versions in the 1.04 source package.
- Bugfix: Recognise an existing ghc-5 installation.
- Bugfix: Missing include <errno.h> for Cygwin.
- Bugfix: Minor filename recognition error in hat-stack and hat-connect.
- Bugfix: Filename extension for time profiling changed to .z.o to
avoid Windows conflicts between .T.o and .t.o. The compiler
flags -T and -t are unchanged, -z is a new synonym for -t.
nhc98 1.04 (2001-05-21) features
- New: Support for extended module namespaces of the form
Long.Hierarchical.Module.Name is now provided in both
nhc98 and hmake.
- Update: Improved printing of I/O error messages.
- Update: Improved (more accurate) time profiling now provided.
- 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 src/tracer/runtime/ident.c
on RedHat 7 and other systems using the new ISO C standard
for fpos_t.
- 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!)
The following updates and bugfixes are specifically for Hat,
the redex-trail-based tracing and debugging system.
- New architecture: Traced programs now build their trails in files,
not in the heap. This has four consequences: (1)
you no longer need to give your program large amounts
of extra memory to trace it; but (2) you may need to have
large amounts of free disk space, particularly to trace
long-running programs; (3) for the moment, traced
programs now run even slower (we are working to improve
this); and (4) trails are now first-class objects,
so new tools can manipulate them to provide several
different views of the computation.
- New tools: Storing trails in files means we can now provide more
tools to examine them. The original graphical browser is
now renamed hat-trail, and can fully explore the
redex trails in file.
hat-stack gives a virtual stack back-trace
from a trail file (no need to re-run the program).
hat-observe gives you HOOD-like
observation of the input and output from functions.
hat-detect does algorithmic debugging in the style
of Freja; it discovers and identifies the location of
a bug after asking you some simple questions.
hat-check verifies the integrity of the trail
file, prints a textual dump, and gives statistics about
its contents.
- Update: Fuller Standard Library support for tracing: added
Directory, System, CPUTime, Random.
(Still missing: Time, Locale.)
- Update: More Haskell'98 language features are accepted:
named fields can now be traced, although the hat
tools don't yet show them in source form. Pattern
bindings are also handled better.
nhc98 release 1.02 (2001-02-14) features
- Improvement: Fixed a space-leak in the compiler. Compilation now
requires approximately half the previous maximum heap,
and as a result, compile time is 5-10% faster.
- Update: 'hi' now uses GNU's readline library if available.
- Update: Improved error reporting in hmake.
- Update: Improved the raw speed of both output and input for compiled
programs, by between 3x and 10x, depending on usage.
- Bugfix: Auto-configuration of hmake. It occasionally failed to find
an already-installed version of nhc98. Also, on Solaris
(and other System V based OSes), auto-detection of
hbc and/or ghc sometimes failed due to incompatibility
of the 'which' command. Finally, the 'hmake' script
itself failed on Cygwin due to the 'which' command
being missing altogether.
- Bugfix: 'atan2' in class RealFloat - revert to a default
declaration that does not use 'isNegativeZero', because
we don't implement the latter.
- Bugfix: Foreign functions declared of IO return type (especially
zero-arity CAFs) using the primitive FFI could suffer from
unexpected sharing of results.
- Bugfix: Failure to build BinArray library on FreeBSD (htonl/ntohl errors).
- Bugfix: Incorrect definitions of inRange and rangeSize in Ix library.
- Bugfix: Local infix declarations in `where' blocks were ignored.
- Bugfix: Some non-trivial `newtype' decls produced spurious errors.
- Bugfix: Printing of characters in the range 0x0100 to 0xffff now works.
- Bugfix: @-pattern-bindings are now fixed. As a result, Happy-generated
parsers should now compile correctly.
- Bugfix: We now accept {-# pragmas #-} in any position, and understand
LINE pragmas.
The following updates and bugfixes are specifically for Hat,
the redex-trail-based tracing and debugging system.
- New Feature: When a traced program is interrupted or terminates with
an error, you get a virtual stack trace of the
computation "for free", without having to start up
a browser.
- Update: Foreign imports (via the new common primitive FFI) with an
I/O result type are now also traced (previously only pure
foreign functions were traced).
- Update: Interface and object files for tracing now have distinct
file suffixes: .T.hi and .T.o. This improves matters
enormously when switching between normal and tracing versions
of a program. It also fixes some dependency bugs when
building the tracing version of the compiler. Both the
compiler and hmake have knowledge of the new suffixes.
- Bugfix: The 'rtb' script failed because of missing shell quotes.
- Added standard libraries: IO, Array.
(Still missing: Directory, System, Time, Locale, CPUTime, Random.)
- Added extension libraries: FFI, IOExtras.
full nhc98 release 1.00 (2000-09-15) features
- Update: Many changes to the nhc98 tracer (listed separately below)
and a new name for the tracing system: Hat.
- Update: Many changes to hi (hmake interactive), both to
improve the automatic configuration and to add features.
- Addition: Andy Gill's HOOD debugging library.
- Addition: New commandline flag -showtype, used by hi to
display types of expressions.
- Addition: New options for hmake: -clean and -realclean.
- Documentation: We have added many more comments and type signatures
to the compiler, so implementers should find it easier
to read.
- Bugfix: Added correct derivation for Read and Show classes on named
fields.
- Bugfix: Configuration bugs for Cygwin and Solaris.
- Bugfix: Configuration for 'echo -n' on certain OSes.
- Bugfix: Parser now accepts {-# pragmas #-}.
- Bugfix: Directory.closedir: ensure directory is finalised only once.
- Bugfix: New functions FFI.withForeignObj and FFI.touchForeignObj.
- Bugfix: List.isPrefixOf: second clause was missing.
- Bugfix: System.getEnv: throws error when symbol is undefined.
- Bugfix: Prelude.lex "1..n" now returns [("1", "..n")].
- Bugfix: Added Read and Show instances for 5-tuples.
- Bugfix: Doubles were occasionally truncated to Float, Floats were
occasionally promoted to Double.
- Portability: You can now run nhc98comp with Hugs! (although this is
unlikely to be directly useful to anyone.)
The following updates and bugfixes are specifically for Hat,
the redex-trail-based tracing and debugging system.
- Literal numeric expressions and patterns now work again (previously
broken in the move to Haskell'98).
- Added arithmetic primitives for Integer, Float, and Double types.
- Added rules for the primitive FFI (foreign import only).
- Added standard libraries: Ratio, Complex, Numeric, Ix, List,
Maybe, Char, Monad. (Still missing: Array, Directory, System,
Time, Locale, CPUTime, Random.)
- Fixed the compilation of newtypes.
- Fixed derived instances of classes.
- Fixed compiler conflict between Java 1.1 and 1.2.
nhc98 pre-release 19 (2000-06-05) features
- Big Change: Until recently, the normal/profiling and tracing
versions of the Prelude and Libraries have been
kept in separate source trees. The normal set is
Haskell'98 compliant, the tracing set was 1.3 and
incomplete. We have now merged the two sets so that
all the libraries which actually build for tracing
are genuinely Haskell'98. There are still several
libraries that don't compile for tracing yet, but this
is nevertheless a big step forward to improving the
tracing experience.
- Addition: Implementations of the standard Time and CPUTime
libraries. All standard libraries are now implemented
in normal and profiling versions.
- Addition: "hmake interactive" - a brand new Hugs-like
interpreter for interactive development.
- Change: The trace browser command has now been renamed
rtb for "Redex Trail Browser".
- Bugfix: IO.hgetLine was broken.
nhc98 pre-release 18 (2000-04-10) features
- Bugfix: More patches needed for building with ghc-4.06.
- Bugfix: The new implementations of two Directory functions
(doesFileExist and doesDirectoryExist) threw IOErrors
when they shouldn't.
- Addition: We've improved the error messages given by the Directory IO
functions to include more information about what caused
the error.
- Addition: A new compiler flag -report-imports.
nhc98 pre-release 17 (2000-03-14) features
- Bugfix: Now builds with ghc-4.06 as well as ghc-4.04 and earlier.
- Bugfix: Occasional runtime crashes when using Arrays are now eliminated.
nhc98 pre-release 16 (2000-03-02) features
- Addition: The standard Random library.
- Addition: The standard Directory library.
- Addition: The common IOExtras library.
- Bugfixes: Various small configuration bugfixes.
nhc98 pre-release 15 (2000-01-18) features
- Bugfix: There were some minor build-problems with pre14 which I
hope are now fixed.
- Bugfix: Duplicate labels error when building the mutator
for profiling.
- Bugfix: Erroneous compiler complaints about class contexts when
building certain Prelude functions.
- Bugfix: Missing file FFIBuiltin.hi.
nhc98 pre-release 14 (1999-12-02) features
- Update: Various tweaks and additions to the new FFI to make it more
solid. Libraries now include Sven Panne's FFI.
- Performance: Thanks to Julian Seward's prompting, we have improved
the runtime performance of nhc98-compiled programs by about
25% (if you have gcc). This also means that if you bootstrap
nhc98 from C sources, you will get a faster compiler.
nhc98 pre-release 13 (1999-11-19) features
- Addition: Completely new FFI added, following the Hugs/ghc model.
Beware, this is still alpha - It might even break unrelated
things that worked previously! If in doubt, use 1.0pre12.
- Bugfixes: Numerous small fixes for building on various machines.
nhc98 pre-release 12 (1999-10-29) features
- Bugfix: Removed incorrect .h symbolic links. (This patch hardly
seems worth a whole new pre-release, but the bug prevented
all builds from proceeding.)
- Bugfix: On HP-UX machines, the ansiC backend had a problem due to
conflicts between data/code at link time.
nhc98 pre-release 11 (1999-10-26) features
- Bugfix: Minor fixes to config and Makefiles for Cygwin.
nhc98 pre-release 10 (1999-10-19) features
- Update: Compiling programs for tracing now works again, although
tracing versions of the Prelude and Libraries are still
not fully up-to-date with Haskell'98. The trace browser
now has a scripting facility to record your tracing activity
for later replay.
- Update: The removal of named field punning in Haskell'98 has
turned out to be unpopular. nhc98 now supports punning
again as a compile-time option (default on, except in
-98 compatibility mode).
- Update: The old 'nhc98config' is now simplified and called 'configure'.
This means that "./configure; make; make install" should now
work as expected.
- Update: At configuration time for hmake, we now try to detect existing
installations of ghc/hbc/nhc and provide sensible defaults,
so you should no longer need to edit config files.
- Bugfix: Resolved conflicts when using hmake flags -I and -d together.
- Bugfix: Some changes to Makefiles, so building on Cygwin32
is easier.
- Bugfix: hSetPosn had wrong arity.
nhc98 pre-release 9 (1999-09-16) features
- Bugfix: Library module Maybe was missing the definition isNothing.
- Bugfix: Several changes to Makefiles, so building with ghc
is easier.
- Bugfix: hmake is more ghc-friendly.
- Update: The standard cpp symbols __HASKELL98__ and __HASKELL__=98 are
now supported.
nhc98 pre-release 8 (1999-08-06) features
- Bugfix: Initialisation of a value using named fields failed to type-check
if some fields were missing.
- Bugfix: Several small script changes required when compiling with ghc.
- Bugfix: Compiler fault in processing interface-files - prevented
profiling and tracing versions of the prelude/libraries from
building unless the old interface files were removed first.
nhc98 pre-release 7 (1999-07-23) features
- Bugfix: Brought layout processing into line with the algorithm
given in the Report.
- Update: Underscores are now (optionally) treated in full accordance
with the Report as strictly lower-case.
- Update: Licensing conditions for nhc98 are now more explicit.
nhc98 pre-release 6 (1999-06-10) features
- Update: At last, we grudgingly support (n+k) patterns.
nhc98 pre-release 5 (990519) features
- Change: Simpler configuration for hmake and nhc98.
- Update: Infix decls now allowed anywhere type signatures are. Modules
can be imported unqualified with a local alias. Aliases can
overlap. Empty decls (i.e. extra explicit semicolons) are allowed.
- Bugfix: isAlphanum is now isAlphaNum.
- Bugfix: Derived Read instances for non-associative infix constructors
now work (previously looped).
nhc98 pre-release 4 (990503) features
- Fixes: compiler's source code needs to compile under Haskell 98 also!
nhc98 pre-release 3 (990427) features
- Fixes: compiler has better compliance with Haskell 98. (Maximal
munch for comments, removed record punning, and numerous other changes.)
nhc98 pre-release 2 (990217) features
- Bugfix: Stable Pointers, as used in GreenCard, are now non-strict,
i.e. passing the value (error "message") to C as a stable
pointer no longer terminates the program immediately.
nhc98 pre-release 1 (990128) features
- Major change: nhc13 has become nhc98, supporting the new Haskell 98
language standard, although still incompletely.
- Major addition: Existential types in data declarations.
- Addition: New options -M and -Md to hmake.
- Bugfix: In the Binary library there was a very slight incompatibility
between the types described in the ISMM'98 paper and the
implementation. The implementation is now fixed to match the
paper.
- Bugfix: At last, the distribution tarfiles extract into an
nhc98-x.x directory, rather than the current directory.
The latest updates to these pages are available on the WWW from
http://www.haskell.org/nhc98/
This page last modified: 23rd November 2007
York Functional Programming Group
|