[project @ 1997-09-04 20:20:48 by sof]
[ghc-hetmet.git] / ghc / RELEASE
1 This is the release notes for GHC-2.04, describing what's new since the
2 previous release:
3
4 GHC 2.04 is a minor upgrade of GHC 2.02 (and the bugfix release,
5 2.03), representing work done through May '97. This new release
6 adds the following:
7
8 * Data constructors can now have polymorphic fields, and ordinary
9   functions can have polymorphic arguments.  Details on
10
11     http://www.cse.ogi.edu/~simonpj/quantification.html
12
13   Existential types coming, but not done yet.
14
15 * Pattern guards implemented, see
16         
17    http://www.cse.ogi.edu/~simonpj/guards.html
18
19 * Compiler can now compile itself.
20
21 * INLINE pragmas honoured (caveat: not yet
22    working on instance-decl methods) 
23
24 * Simplifier improvements and better inlining gives
25    better code; not sure how *much* better.
26
27 * -dshow-rn-stats print out amusing statistics about what
28   the renamer does.
29
30 * When compiling without -O, the renamer (the pass responsible for
31   slurping in interface file and making sure everything is in scope
32   etc.) is now more careful about what it will bring in (especially
33   data constructors and instance declarations). The upshot of this
34   change is that a lot of the (unnecessary) work this pass did in
35   2.02/2.03 is now avoided.
36
37   -fno-prune-tydecls and -fno-prune-instdecls switch off these
38   renamer optimisations. You can try the effect with the renamer
39   statistics. War stories welcome.
40
41 * The Heroic Efforts of \tr{Andr\'e Santos <alms@di.ufpe.br>} have
42   been included, AIX/RS6000 is now a supported \tr{ghc}
43   platform! Bug reports concerning this port to (as always)
44   glasgow-haskell-bugs@dcs.gla.ac.uk
45
46 * A lot of the bugs that were present in versions 2.02/2.03
47   have been fixed (thanks to everyone that reported bugs!).
48   A list of the reported problems with 2.02/2.03 can be found at
49
50     http://www.dcs.gla.ac.uk/fp/software/ghc/ghc-bugs.html
51
52     No doubt entries for 2.04 will be added here as well :-)
53
54 * This release is available in source format only. To build it you'll
55   need to have either a copy of GHC~0.29 or GHC~2.02/3 installed.
56   For people either doing porting work or work on a (supported) 
57   platform for which there is no GHC binary bundles available, the
58   necessary intermediate files are also available (.hc and .hi files).
59
60   Consult the installation guide for more information on how
61   to build or bootstrap. The guide is included in the distribution
62   (in the fptools/docs directory), and an on-line version of the
63   document can be found at
64
65     http://www.dcs.gla.ac.uk/fp/software/ghc/ghc-doc/install-guide.html
66
67
68 In addition to the above, we've made the following minor changes to
69 the GHC libraries/our implementation of the Haskell standard prelude:
70
71 * `isPrefixOf' and `isSuffixOf' has been added to `List'
72 * The empty type `Void' is now exported from the prelude.
73 * `GlaExts' exports the `Lift' data type:
74
75     data Lift a = Lift a
76
77   you might need it someday...
78
79 * The `Foreign' interface now also exports the representations
80   for `Word' and `Addr'
81
82 * The low-level file handle interface in the POSIX system
83   library has been reworked a bit, most notably is the renaming of
84   `Channel' to `Fd' and the introduction of operations for converting
85   to and from `Handle' and `Fd' values. The changes are:
86
87    --Renamed functions (old name in square brackets)
88    openFd :: FilePath       
89           -> OpenMode 
90           -> Maybe FileMode 
91           -> OpenFileFlags 
92           -> IO Fd
93     -- [openChannel]
94    fdSeek  :: Fd -> SeekMode -> FileOffset -> IO FileOffset 
95     --[seekChannel]
96    fdRead  :: Fd -> ByteCount -> IO (String, ByteCount)     
97     --[readChannel]
98    fdWrite :: Fd -> String -> IO ByteCount                  
99     --[writeChannel]
100    fdClose :: Fd -> IO ()          
101     --[closeChannel]
102    setFdOption :: Fd -> FdOption -> Bool -> IO ()
103     --[setChannelOption]
104    queryFdOption :: Fd -> FdOption -> IO Bool
105     --[queryChannelOption]
106    dup :: Fd -> IO Fd
107     --[dupChannel]
108    dupTo :: Fd -> Fd -> IO ()
109     --[dupChannelTo]
110
111    data FdOption = AppendOnWrite | CloseOnExec | NonBlockingRead
112     --[ChannelOption]
113    getFdStatus :: Fd -> IO FileStatus
114     --[getChannelStatus]
115
116    -- New data structure collecting together misc flags passed to openFd
117    data OpenFileFlags =
118     OpenFileFlags {
119       append    :: Bool,
120       exclusive :: Bool,
121       noctty    :: Bool,
122       nonBlock  :: Bool,
123       trunc     :: Bool
124     }
125
126    --New ops for converting between Fd and Handle:
127    fdToHandle :: Fd -> IO Handle
128    handleToFd :: Handle -> IO Fd
129    intToFd    :: Int -> Fd -- use with care.