Release notes for version 4.06—1/00
User visible changes
Major library reorganisation. The libraries are now split into 8
categories:
concurrent
Same as the old concurrent library
data
Datatypes. Contains old FiniteMap
and Set modules, and Chris Okasaki's Edison
library.
lang
contains most of the contents of
the old exts library
net
networking-related libraries (Socket, SocketPrim, and
new URI library).
num
numerical-related libraries (currently empty).
posix
the old POSIX library
text
text-processing related libraries (including Andy Gill's
HTML library)
util
various miscellaneous libraries, including John Hughes'
and Koen Claessen's QuickCheck library.
See the accompanying libraries documentation for more details.
Cleanup of concurrent I/O system. We now use non-blocking I/O on
all Handles, so that multiple threads can do I/O simultaneously.
We don't however do non-blocking I/O on stdout/stderr,
due to reports that some shells don't correctly restore
blocking mode on these file descriptors after running a program.
Exception changes
raiseInThread can now raise exceptions in threads blocked on I/O or time delays.
New functions in Exception
blockAsyncExceptions :: IO a -> IO a
unblockAsyncExceptions :: IO a -> IO a
used to control the delivery of asynchronous exceptions to
a thread (including those raised via raiseInThread).
Asynchronous exceptions are now blocked by default inside
an exception handler. Use unblockAsyncExceptions to
restore the previous behaviour.
Add NetBSD/x86 support.
Added support for foreign export dynamic.
Minor changes
Build system cleanup—BIN_DIST=1 is now needed in build.mk (before building!) to build binary dists.
New RTS option , which prints the current cost-centre
stack to stderr whenever an exception is raised (only for
profiling builds).
Not-quite-ready-yet, but in there nontheless
SMP support
Building way 's' on a system with pthreads (only tested on
Linux so far) will include support for running multiple
Haskell threads on several pthreads simultaneously. If
your system supports it, this will enable Haskell programs
to take advantage of multiprocessor SMP machines.
GranSim and GUM
Initial ports of GranSim and GUM to GHC 4 are in there. Not quite
ready yet.
Profiling
Heap profiling sort-of works. Only cost-centre heap
profiles are supported so far.