1 0.08 was not an announced release, so these notes are of historical
4 %************************************************************************
6 \subsection[0-08-new-docs]{New documentation, especially for hackers!}
8 %************************************************************************
10 %************************************************************************
12 \subsection[0-08-new-in-usage]{Main user-visible changes}
14 %************************************************************************
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
23 %-------------------------------------------------------------------
24 \item[@ghc@ driver more ``policy-free'':]
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.
33 %-------------------------------------------------------------------
34 \item[-OC:] We got rid of the \tr{-OC} flag.
37 %************************************************************************
39 \subsection[0-08-new-in-compiler]{To do with the compiler proper}
41 %************************************************************************
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.
50 %-------------------------------------------------------------------
51 \item[Interface-file (\tr{.hi} file) generation:]
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 :-).
59 %-------------------------------------------------------------------
60 \item[Smaller C output:]
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.
67 CAFs fully supported (notably updatable ones).
69 Black-holing (at garbage-collection time) fully supported.
71 %-------------------------------------------------------------------
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...
78 %-------------------------------------------------------------------
79 \item[Cost-centre-style profiling:]
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...)
91 %************************************************************************
93 \subsection[0-08-new-in-compiler-contrib]{In contributed bits of the compiler}
95 %************************************************************************
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...
102 This @Core@-to-@Core@ transformation makes all lets of the form
104 let VAR = eval EXPR in ...
106 strict. @eval@ is a dummy name which is thrown away (i.e., @eval x = x@).
109 Please send us {\em your} bits for next time!
111 %************************************************************************
113 \subsection[0-08-new-in-libraries]{In @Prelude@ and runtime support}
115 %************************************************************************
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.]
124 %************************************************************************
126 \subsection[0-08-new-in-mkworld]{In distribution/build/installation machinery}
128 %************************************************************************
130 The ``make world'' machinery has many small improvements.
132 It works notably better in a shared-symlink-tree world (which we use
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
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).
143 %************************************************************************
145 \subsection[0-08-new-misc]{Miscellaneous new things}
147 %************************************************************************
149 New version of Denis Howe's \tr{mira2hs} script.