[project @ 1998-02-20 13:43:50 by simonm]
[ghc-hetmet.git] / ghc / docs / users_guide / 3-01-notes.vsgml
index bd94803..3d56717 100644 (file)
@@ -6,10 +6,117 @@ Changes made since 3.00:
 
 <itemize>
 
-<item>  Fix interaction of "hiding" on import with "module M" on export.
+<item> Fix interaction of "hiding" on import with "module M" on export.
 
-<item>  Fix some floating point conversion problems in @floatExtreme.lc@.
+<item> Fix some floating point conversion problems in @floatExtreme.lc@.
 
-<item>  New Hugs/GHC interface <tt/NumExts/ added and documented.
+<item> New Hugs/GHC interface <tt/NumExts/ added and documented.
+
+<item> moved @showOct@ and @showHex@ from @Numeric@ to @NumExts@.
+
+<item> imported HBC's quick-sort algorithm from @QSort@ into @List@.
+
+<item> added support for assertions. Conceptually, a new function has
+       been added to the Prelude with the following type: 
+
+       <tscreen> <verb>
+          assert :: Bool -> a -> a
+       </verb> </tscreen>
+
+       which has the following behaviour:
+       <tscreen> <verb>
+          assert pred v 
+             | pred      = v
+            | otherwise = error "assertion failed"
+       </verb> </tscreen>
+       
+       However in this form, the practical use of assertions is
+       limited as no indication is given as to what assertion failed.
+       So to help out here, ghc will rewrite any uses of <tt/assert/
+       to instead invoke the function <tt/assert__/ :
+       <tscreen> <verb>
+         assert__ :: String -> Bool -> a -> a
+       </verb> </tscreen>
+        
+       where the first argument to <tt/assert__/ is a compiler generated string 
+       which encodes the source location of the original <tt/assert/.
+
+       Assertions are a Glasgow extension, so -fglasgow-exts is
+       needed to use them.
+
+<item>
+  Split @-fwarn-unused-names@ into
+  
+  <descrip>
+  <tag>@-fwarn-unused-imports@</tag>
+        Warn about unused explicit imports. (in -W)
+  <tag>@-fwarn-unused-binds@</tag>
+        Warn about unused bindings          (in -W)
+  <tag>@-fwarn-unused-matches@</tag>
+        Warn about unused names in pattern matches
+                (not as useful, relegated to -Wall)
+  </descrip>
+
+<item> The driver is now always installed as @ghc-<version>@ with a
+link to it from @ghc@.
+
+<item> Library re-organisation: all libraries now live under ghc/lib,
+which has the following structure:
+
+<tscreen> <verb>
+       ghc/lib/std             --  all prelude files           (libHS.a)
+       ghc/lib/std/cbits
+
+       ghc/lib/exts            -- standard Hugs/GHC extensions (libHSexts.a)
+                               -- available with '-fglasgow-exts'
+
+       ghc/lib/posix           -- POSIX library                (libHSposix.a)
+       ghc/lib/posix/cbits     -- available with '-syslib posix'
+
+       ghc/lib/misc            -- used to be hslibs/ghc        (libHSmisc.a)
+       ghc/lib/misc/cbits      -- available with '-syslib misc'
+
+       ghc/lib/concurrent      -- Concurrent libraries         (libHSconc.a)
+                               -- available with '-concurrent'
+</verb> </tscreen>
+
+Also, several non-standard prelude modules had their names changed to begin
+with 'Prel' to reduce namespace pollution.
+
+<tscreen> <verb>
+       Addr      ==> PrelAddr     (Addr interface available in 'exts')
+       ArrBase   ==> PrelArr
+       CCall     ==> PrelCCall    (CCall interface available in 'exts')
+       ConcBase  ==> PrelConc
+       GHCerr    ==> PrelErr
+       Foreign   ==> PrelForeign  (Foreign interface available in 'exts')
+       GHC       ==> PrelGHC
+       IOHandle  ==> PrelHandle
+       IOBase    ==> PrelIOBase
+       GHCmain   ==> PrelMain
+       STBase    ==> PrelST
+       Unsafe    ==> PrelUnsafe
+       UnsafeST  ==> PrelUnsafeST
+</verb> </tscreen>
+
+<item> Unboxed types are now not allowed in the field of a newtype
+constructor.
+
+<item> Report the context properly for type errors in newtype
+declarations.
+
+<item> User's Guide replaced with SGML version.
+
+<item> The literate tools have been removed from the standard
+distributions, since they're not needed to format the documentation
+any more.
+
+<item> Lots of bug-fixes to the multi-parameter type classes support.
+
+<item> @alpha-dec-osf1@ and @alpha-dec-osf3@ are now separate
+configurations.  It turns out that an @alpha-dec-osf3@ build doesn't
+work on older versions of the OS.
 
 </itemize>