[project @ 1996-07-19 18:36:04 by partain]
[ghc-hetmet.git] / ghc / docs / release_notes / 0-08-notes.lit
1 0.08 was not an announced release, so these notes are of historical
2 interest, at best.
3
4 %************************************************************************
5 %*                                                                      *
6 \subsection[0-08-new-docs]{New documentation, especially for hackers!}
7 %*                                                                      *
8 %************************************************************************
9
10 %************************************************************************
11 %*                                                                      *
12 \subsection[0-08-new-in-usage]{Main user-visible changes}
13 %*                                                                      *
14 %************************************************************************
15
16 \begin{description}
17 %-------------------------------------------------------------------
18 \item[@ghc@ driver flag fiddling:]
19 These things change... A good thing to try is \tr{ghc -help}, unless
20 of course you think the documentation might be right (in which case
21 look there :-).
22
23 %-------------------------------------------------------------------
24 \item[@ghc@ driver more ``policy-free'':]
25
26 The driver no longer has great wads of built-in options for its
27 constituent phases (parser, Haskell compiler, C compiler, etc.).  It
28 is much easier to configure these (if required) at build time.  A
29 better idea, which we use, is to wired in very few options, but to use
30 the ``make world'' machinery to ensure that the desired (wads of
31 options) are always passed explicitly.
32
33 %-------------------------------------------------------------------
34 \item[-OC:] We got rid of the \tr{-OC} flag.
35 \end{description}
36
37 %************************************************************************
38 %*                                                                      *
39 \subsection[0-08-new-in-compiler]{To do with the compiler proper}
40 %*                                                                      *
41 %************************************************************************
42
43 \begin{description}
44 %-------------------------------------------------------------------
45 \item[``Renamer'' is in:]
46 Essentially, this implements module-system stuff.  Checks for
47 naming/scoping errors have been moved out of the typechecker into the
48 renamer, which should be faster.
49
50 %-------------------------------------------------------------------
51 \item[Interface-file (\tr{.hi} file) generation:]
52 It works.
53
54 %-------------------------------------------------------------------
55 \item[Ambiguous-type resolution:]
56 It's basically right now, except that we still don't grok @default@
57 declarations (which we have yet to see in a real Haskell program :-).
58
59 %-------------------------------------------------------------------
60 \item[Smaller C output:]
61
62 %-------------------------------------------------------------------
63 \item[Code generator:]
64 Improvements related to the information carried around about closures
65 (@ClosureInfo@ and @LambdaFormInfo@ types); matches the STG-machine paper.
66
67 CAFs fully supported (notably updatable ones).
68
69 Black-holing (at garbage-collection time) fully supported.
70
71 %-------------------------------------------------------------------
72 \item[Simplifiers:]
73 Further work on the @Core@-to-@Core@ local-transformation passes (in
74 \tr{compiler/simplCore/}).  Also, we have added
75 some @STG@-to-@STG@ transformations; for example, floating @lets@
76 outward is most conveniently done at the STG level...
77
78 %-------------------------------------------------------------------
79 \item[Cost-centre-style profiling:]
80
81 %-------------------------------------------------------------------
82 \item[Improvements to basic datatypes:]
83 Notably to @Ids@ (\tr{basicTypes/Id.lhs}) and names
84 (\tr{basicTypes/NameTypes.lhs}).  There is a new compiler-wide class,
85 @NamedThing@ (\tr{utils/Outputable.lhs}).  Essentially it is easier to
86 ask of an entity: where did you come from? (e.g., PreludeCore?,
87 imported?) what are you? (a data-constructor? a dictionary selector?)
88 what is your original name? where are you going? (exported or not...)
89 \end{description}
90
91 %************************************************************************
92 %*                                                                      *
93 \subsection[0-08-new-in-compiler-contrib]{In contributed bits of the compiler}
94 %*                                                                      *
95 %************************************************************************
96
97 \begin{description}
98 \item[Evaluation-transformer bits:]
99 Denis Howe has sent us an initial version (\tr{compiler/evalTran}).
100 It isn't used by default, but is presumably play-withable...
101
102 This @Core@-to-@Core@ transformation makes all lets of the form
103 \begin{verbatim}
104 let VAR = eval EXPR in ...
105 \end{verbatim}
106 strict.  @eval@ is a dummy name which is thrown away (i.e., @eval x = x@).
107 \end{description}
108
109 Please send us {\em your} bits for next time!
110
111 %************************************************************************
112 %*                                                                      *
113 \subsection[0-08-new-in-libraries]{In @Prelude@ and runtime support}
114 %*                                                                      *
115 %************************************************************************
116
117 Prelude is 1.2.
118
119 The compiler has basically all of @PreludeCore@ wired into it (see
120 \tr{compiler/prelude/}); the rest is brought in with a straightforward
121 \tr{import Prelude} (which brings in \tr{imports/Prelude.hi}).  [The
122 old \tr{MiniPrel*} files are dead and unmissed.]
123
124 %************************************************************************
125 %*                                                                      *
126 \subsection[0-08-new-in-mkworld]{In distribution/build/installation machinery}
127 %*                                                                      *
128 %************************************************************************
129
130 The ``make world'' machinery has many small improvements.
131
132 It works notably better in a shared-symlink-tree world (which we use
133 at Glasgow).
134
135 We have abandoned efforts to use one build tree for making object
136 files for multiple platforms.  We can make simpler Makefiles as a
137 result.
138
139 There's a new standard setup, called \tr{fast}.  The name is
140 inappropriate at present, but it is intended to be for people who
141 value compiled-code-speed above all else (within reason, of course).
142
143 %************************************************************************
144 %*                                                                      *
145 \subsection[0-08-new-misc]{Miscellaneous new things}
146 %*                                                                      *
147 %************************************************************************
148
149 New version of Denis Howe's \tr{mira2hs} script.