[project @ 1998-02-09 13:02:19 by simonm]
[ghc-hetmet.git] / ghc / docs / users_guide / 3-01-notes.vsgml
1 <sect1>Release notes for version~3-01---2/97
2 <label id="release-3-01">
3 <p>
4
5 Changes made since 3.00:
6
7 <itemize>
8
9 <item> Fix interaction of "hiding" on import with "module M" on export.
10
11 <item> Fix some floating point conversion problems in @floatExtreme.lc@.
12
13 <item> New Hugs/GHC interface <tt/NumExts/ added and documented.
14
15 <item> moved @showOct@ and @showHex@ from @Numeric@ to @NumExts@.
16
17 <item> imported HBC's quick-sort algorithm from @QSort@ into @List@.
18
19 <item> added support for assertions. Conceptually, a new function has
20        been added to the Prelude with the following type: 
21
22        <tscreen> <verb>
23           assert :: Bool -> a -> a
24        </verb> </tscreen>
25
26        which has the following behaviour:
27  
28        <tscreen> <verb>
29           assert pred v 
30              | pred      = v
31              | otherwise = error "assertion failed"
32        </verb> </tscreen>
33        
34        However in this form, the practical use of assertions is
35        limited as no indication is given as to what assertion failed.
36        So to help out here, ghc will rewrite any uses of <tt/assert/
37        to instead invoke the function <tt/assert__/ :
38  
39        <tscreen> <verb>
40          assert__ :: String -> Bool -> a -> a
41        </verb> </tscreen>
42          
43        where the first argument to <tt/assert__/ is a compiler generated string 
44        which encodes the source location of the original <tt/assert/.
45
46        Assertions are a Glasgow extension, so -fglasgow-exts is
47        needed to use them.
48
49 <item> Library re-organisation: all libraries now live under ghc/lib,
50 which has the following structure:
51
52 <tscreen> <verb>
53         ghc/lib/std             --  all prelude files           (libHS.a)
54         ghc/lib/std/cbits
55
56         ghc/lib/exts            -- standard Hugs/GHC extensions (libHSexts.a)
57                                 -- available with '-fglasgow-exts'
58
59         ghc/lib/posix           -- POSIX library                (libHSposix.a)
60         ghc/lib/posix/cbits     -- available with '-syslib posix'
61
62         ghc/lib/misc            -- used to be hslibs/ghc        (libHSmisc.a)
63         ghc/lib/misc/cbits      -- available with '-syslib misc'
64
65         ghc/lib/concurrent      -- Concurrent libraries         (libHSconc.a)
66                                 -- available with '-concurrent'
67 </verb> </tscreen>
68
69 Also, several non-standard prelude modules had their names changed to begin
70 with 'Prel' to reduce namespace pollution.
71
72 <tscreen> <verb>
73         Addr      ==> PrelAddr     (Addr interface available in 'exts')
74         ArrBase   ==> PrelArr
75         CCall     ==> PrelCCall    (CCall interface available in 'exts')
76         ConcBase  ==> PrelConc
77         GHCerr    ==> PrelErr
78         Foreign   ==> PrelForeign  (Foreign interface available in 'exts')
79         GHC       ==> PrelGHC
80         IOHandle  ==> PrelHandle
81         IOBase    ==> PrelIOBase
82         GHCmain   ==> PrelMain
83         STBase    ==> PrelST
84         Unsafe    ==> PrelUnsafe
85         UnsafeST  ==> PrelUnsafeST
86 </verb> </tscreen>
87
88 </itemize>