summaryrefslogtreecommitdiff
path: root/ghc/docs/release_notes/0-05-notes.lit
blob: 3f421081274f09b14400850e0db79af9056df591 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
\begin{description}
%-------------------------------------------------------------------
\item[1.1 syntax:]
Does \Haskell{} version~1.1 syntax.  The code for the parser
(\tr{parsers/hsp/}) has been tidied up quite a bit [nice job, Kevin].

%-------------------------------------------------------------------
\item[Expressions and patterns:]
All forms of expressions and patterns work, including overloaded
patterns and @n+k@ patterns.

%-------------------------------------------------------------------
\item[A big part of the standard prelude is operational:]
These parts (in \tr{lib/prelude}) have been compiled with the new
compiler, and programs compiled with the new compiler can be linked to
it.

With the exceptions of (a)~hooking in the standard Haskell I/O system
(see next item) and (b)~special pleading for constant-time-access
arrays (or other magical features), all Prelude stuff is either done
or easily do-able.

%-------------------------------------------------------------------
\item[Simple resolution of ambiguous overloading of numeric types:]
(As per Haskell report, section~4.3.4).  @default@ declarations do
{\em NOT} work; however, the ``default default''
(@default (Int, Double)@) is wired in.  This should clear up nearly
all annoying ``ambiguous dictionary'' errors.

%-------------------------------------------------------------------
\item[Better non-standard I/O:]
We have implemented the bare bones of the I/O described in
\tr{docs/io-design/}.  It's not standard \Haskell{} I/O
(we haven't yet implemented the impedance-matcher discussed in the
doc), and it's not the same as what was there in 0.02.  However, you
can now write a simple reads-stdin/writes-stdout program:

\begin{verbatim}
#include "GhcPrelude.h"

main = readString `thenIO` ( \ s ->
       writeString (my_String_to_String_manglification s) )
\end{verbatim}

The implementation of @error@ (via @sysError@) is also as described in
the I/O document.

%-------------------------------------------------------------------
\item[Faster compiler:]
The compiler is faster than version~0.02---we promise---but the
significant tuning work is not yet done.  We will do it after The
Mangler (renamer) is in.

%-------------------------------------------------------------------
\item[Run compiled code on a Sun4:]
If you compile your program to C (\tr{.hc} files), with, e.g.:

\begin{verbatim}
% glhc -C Foo.hs
\end{verbatim}

then you compile the output on a Sun4 with:

\begin{verbatim}
% glhc -c Foo.hc
\end{verbatim}

and, if you have the right things to link to, you can link with:

\begin{verbatim}
% glhc -o foo Foo.o
\end{verbatim}

The ``right things to link to'' include: the runtime system (
\tr{cd runtimes/standard; make} on a sun4), and the standard libraries
(\tr{cd lib; make all} on a sun4).

We have not yet tried to make this work for Every Known Unix Box In
The Universe.  (But we plan to, with your help :-)

%-------------------------------------------------------------------
\item[Upheaval during FPCA:]
As advertised with 0.02: Files moved around, modules and data types
were renamed, and a generally Much Cleaner World now exists.  We have
no plans to do more of the same (at least for the compiler proper).
\end{description}