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.