Commit 9259096d authored by sof's avatar sof

[project @ 1997-03-24 04:42:42 by sof]

Updated for 2.02
parent 845c0682
......@@ -5,24 +5,25 @@ in the top-level directory. It contains very important caveats about
2.02, which we do not repeat here!
Information about ``what's ported to which machine'' is in the
Installation Guide. Since 2.01, we've added support for Windows NT.
Installation Guide. Since 2.01, we've added support for Win32
(Windows NT and Windows 95).
%************************************************************************
%* *
\subsection[2-02-config]{New configuration things in 2.01}
\subsection[2-02-config]{New configuration things in 2.02}
%* *
%************************************************************************
%************************************************************************
%* *
\subsection[2-02-user-visible]{User-visible changes in 2.01, including incompatibilities}
\subsection[2-02-user-visible]{User-visible changes in 2.02, including incompatibilities}
%* *
%************************************************************************
GHC~2.01 is a compiler for Haskell~1.4 and, as such, introduces many
user-visible changes. The GHC user's guide has a section to help you
upgrade your programs to Haskell~1.4; all user-visible changes
are described there (and not repeated here).
GHC~2.02 is a compiler for Haskell~1.4 and, as such, introduces a
bunch of user-visible changes. The GHC user's guide has a section to
help you upgrade your programs to Haskell~1.4 from 1.2; all
user-visible changes are described there (and not repeated here).
%************************************************************************
%* *
......@@ -40,7 +41,14 @@ GHC also warns of completely overlapped patterns. You can't switch this off.
Just occasionally this shows up
an otherwise hard-to-find bug. To warn of shadowed names use @-fwarn-name-shadowing@
\item You can now generate `make' dependencies via the compiler
driver, use the option @-M@ together with the list source files to compute
the dependencies for. By default, the dependencies will be appended to
the file \tr{Makefile} in the current directory.
\item For hackers, the flag @-dshow-rn-trace@ shows what the renamer is up to.
Sit back and marvel.
\end{itemize}
......@@ -53,7 +61,8 @@ an otherwise hard-to-find bug. To warn of shadowed names use @-fwarn-name-shado
\begin{itemize}
\item
Completely new ``make-world'' system, properly documented (at last) in the
installation guide. No Jmakefiles; but you need Gnu make (gmake).
installation guide. No Jmakefiles; but you *need* Gnu make
(gmake). The more recent the better (v 3.70+).
\item
The ``renamer''---the part of the compiler that implements
......@@ -76,7 +85,7 @@ a really good chance now.
%************************************************************************
The libraries have been completely reorganised. There's a description in
...
\sectionref{syslibs}.
%************************************************************************
......@@ -94,19 +103,55 @@ The libraries have been completely reorganised. There's a description in
\begin{itemize}
\item @ForeignObjs@ are properly deallocated when execution halts, as well
as when the @ForeignObj@ becomes unreferenced.
as when the garbage collector spots the @ForeignObj@ as being unreferenced.
This is important if you are using a @ForeignObj@ to refer to
a @COM@ object or other remote resource. You want that resource to be relased
a @COM@ object or other remote resource. You want that resource to be relased
when the program terminates.
\item Files handles are handled using @ForeignObjs@, and closed when the file handle
is unreferenced. This means that if you
open zillions of files then just letting go of the file handle is enough
to close it.
\item Files handles in the IO prelude are implemented using
@ForeignObjs@, and closed when the file handle is unreferenced. This
means that if you open zillions of files then just letting go of the
file handle is enough to close it.
\end{itemize}
%************************************************************************
%* *
%\subsection[2-02-new-elsewhere]{Other new stuff}
\subsection[2-02-new-elsewhere]{Other new stuff}
%* *
%************************************************************************
2.02 is released together with Green Card, a foreign-language
interface generator for Haskell. More details elsewhere...
%************************************************************************
%* *
\subsection[2-02-troublespots]{Known troublespots}
%* *
%************************************************************************
The 2.02 compiler has the following known deficiencies:
\begin{description}
\item[native code generator, x86:]
The native code generator for x86 platforms is by default switched
off, as the code the compiler produces with it enabled was discovered
just before releaseing to be wonky. Rather than delay the release
further, GHC on x86 platforms rely on \tr{GCC} as their
backend for now. Hopefully fixed soon.
\item[Simplifier looping:]
The simplifier(Glasgow-speak for optimiser) has been observed to get
into a loop in one or two cases. If you should observe this, please
report it as a bug - the work around is to turn off optimisation.
\item[Undefined @*_vap_info@ symbols:]
If the linker complains about some undefined @*_vap_info@ symbols when
linking 2.02 compiled programs (very unlikely) - fix this by compiling
the module where the references are coming from with
@-fno-lambda-lifting@.
\end{description}
TOP = ../..
include $(TOP)/mk/boilerplate.mk
DOC_SRCS = profiling.lit user.lit
DOC_SRCS = user.lit
SRC_TEXI2HTML_OPTS += -number -monolithic -invisible xbm
ifeq "$(BIN_DIST)" "1"
install :: html dvi info
endif
include $(TOP)/mk/target.mk
......@@ -133,10 +133,11 @@ That is, GHC provides a safe way to pass Haskell pointers to C.
Please see \Sectionref{glasgow-stablePtrs} for more details.
\item[``Foreign objects'':]
A ``foreign object'' is a safe way to pass a C~pointer to Haskell and
have Haskell do the Right Thing when it no longer references the
object. So, for example, C could pass a large bitmap over to Haskell
and say ``please free this memory when you're done with it.''
A ``foreign object'' is a safe way to pass an external object (a
C~allocated pointer, say) to Haskell and have Haskell do the Right
Thing when it no longer references the object. So, for example, C
could pass a large bitmap over to Haskell and say ``please free this
memory when you're done with it.''
Please see \Sectionref{glasgow-foreignObjs} for more details.
\end{description}
......@@ -194,7 +195,7 @@ and things go, you would be well-advised to keep your C-callery
corraled in a few modules, rather than sprinkled all over your code.
It will then be quite easy to update later on.
WARNING AS OF 2.01: Yes, the \tr{_ccall_} stuff probably {\em will
WARNING AS OF 2.02: Yes, the \tr{_ccall_} stuff probably {\em will
change}, to something better, of course! We are still at the
musing-about-it stage, however...
......@@ -211,7 +212,7 @@ double fooC( FILE *in, char c, int i, double d, unsigned int u )
is to provide a Haskell wrapper:
\begin{verbatim}
fooH :: Char -> Int -> Double -> Word -> PrimIO Double
fooH c i d w = _ccall_ fooC ``stdin'' c i d w
fooH c i d w = _ccall_ fooC (``stdin''::Addr) c i d w
\end{verbatim}
The function @fooH@ will unbox all of its arguments, call the C
function \tr{fooC} and box the corresponding arguments.
......@@ -289,7 +290,7 @@ C type name & Haskell Type \\ \hline
\tr{StgByteArray} & \tr{MutableByteArray#}\\
\tr{StgStablePtr} & \tr{StablePtr#}\\
\tr{StgForeignObj} & \tr{MallocPtr#}
\tr{StgForeignObj} & \tr{ForeignObj#}
\end{tabular}
Note that this approach is only {\em essential\/} for returning
......@@ -585,7 +586,7 @@ data MyVoid = MyVoid
instance CReturnable MyVoid
\end{verbatim}
\item As at version 2.01, \tr{String} (i.e., \tr{[Char]}) is still
\item As at version 2.02, \tr{String} (i.e., \tr{[Char]}) is still
not a \tr{CReturnable} type.
Also, the now-builtin type \tr{PackedString} is neither
......
......@@ -663,7 +663,7 @@ when pre-processing generated C (\tr{.hc}) files.
\item[\tr{__GLASGOW_HASKELL__}:]
\index{__GLASGOW_HASKELL__ macro}
For version $n$ of the GHC system, this will be \tr{#define}d to
$100 \times n$. So, for version~2.01, it is 201.
$100 \times n$. So, for version~2.02, it is 202.
This macro is {\em only} set when pre-processing Haskell source.
({\em Not} when pre-processing generated C.)
......@@ -699,6 +699,7 @@ A small word of warning: \tr{-cpp} is not friendly to
\subsection[options-C-compiler]{Options affecting the C compiler (if applicable)}
\index{C compiler options}
\index{GCC options}
\index{include file option}
%* *
%************************************************************************
......@@ -724,7 +725,7 @@ command-line:
\begin{verbatim}
% ghc -c '-#include <X/Xlib.h>' Xstuff.lhs
\end{verbatim}
\index{-#include <file> option}
%************************************************************************
%* *
......@@ -784,8 +785,8 @@ If you are using a Haskell ``system library'' (e.g., the HBC
library), just use the \tr{-syslib hbc} option, and the correct code
should be linked in.
Please see \sectionref{syslibs} for information about
``system libraries.''
%Please see \sectionref{syslibs} for information about
%``system libraries.''
\item[\tr{-L<dir>}:]
\index{-L<dir> option}
......@@ -1202,7 +1203,7 @@ Sometimes it is useful to make the connection between a source file
and the command-line options it requires, quite tight. For instance,
if a (Glasgow) Haskell source file uses \tr{casm}s, the C back-end
often needs to be told about header files to use,
\ref{-#include <file> option}. Rather than maintaining the list of
\ref{include file option}. Rather than maintaining the list of
files the source depends on in a \tr{Makefile}, it is possible to
do this directly in the source file using the \tr{OPTIONS} pragma
\index{OPTIONS pragma}:
......
%
% $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/docs/users_guide/Attic/intro.lit,v 1.3 1997/03/14 07:59:31 simonpj Exp $
% $Header: /srv/cvs/cvs.haskell.org/fptools/ghc/docs/users_guide/Attic/intro.lit,v 1.4 1997/03/24 04:42:47 sof Exp $
%
\section[introduction-GHC]{Introduction to GHC}
......@@ -54,7 +54,7 @@ To contact the list administrator, send mail to
\tr{glasgow-haskell-users-request}. An archive of the list is
available on the Web at:
\begin{verbatim}
\url{http://www.dcs.gla.ac.uk/mail-www/glasgow-haskell-users}
http://www.dcs.gla.ac.uk/mail-www/glasgow-haskell-users
\end{verbatim}
\item[glasgow-haskell-bugs:]
......@@ -72,7 +72,7 @@ Again, you may contact the list administrator at
And, yes, an archive of the list is
available on the Web at:
\begin{verbatim}
\url{http://www.dcs.gla.ac.uk/mail-www/glasgow-haskell-bugs}
http://www.dcs.gla.ac.uk/mail-www/glasgow-haskell-bugs
\end{verbatim}
\end{description}
......
This diff is collapsed.
......@@ -6,9 +6,9 @@
%* *
%************************************************************************
The Haskell~1.3 module system (nicely improved, thank you very much)
requires a substantially different implementation, which we did
(as of release GHC~2.01).
WIth the introduction of Haskell~1.3, the module system (nicely
improved, thank you very much) requires a substantially different
implementation, which we did (as of release GHC~2.01).
We have taken a fairly radical approach and implemented a ``go to the
horse's mouth'' scheme; that is, when seeking out information about an
......
......@@ -26,6 +26,9 @@ Email: glasgow-haskell-\{users,bugs\}-request\@dcs.gla.ac.uk}
% pointers to it. Mentioning something in the release notes is not
% the same as documenting it.
\section[release-2-02]{Release notes for version~2.02---3/97}
\input{2-02-notes.lit}
\section[release-2-01]{Release notes for version~2.01---7/96}
\input{2-01-notes.lit}
......
......@@ -90,8 +90,6 @@ e.g., \tr{mkdependHS -help}.
%* *
%************************************************************************
NB: \tr{hstags} is temporarily dead at version~2.01. Sigh.
`Tags' is a facility for indexing the definitions of
programming-language things in a multi-file program, and then using
that index to jump around among these definitions.
......
%************************************************************************
%* *
\section[vs-Haskell-defn]{Haskell~1.3 vs.~Glasgow Haskell~2.01: language non-compliance}
\index{GHC vs the Haskell 1.3 language}
\index{Haskell 1.3 language vs GHC}
\section[vs-Haskell-defn]{Haskell~1.3 vs.~Glasgow Haskell~2.02: language non-compliance}
\index{GHC vs the Haskell 1.4 language}
\index{Haskell 1.4 language vs GHC}
%* *
%************************************************************************
This section lists Glasgow Haskell infelicities in its implementation
of Haskell~1.3. See also the ``when things go wrong'' section
of Haskell~1.4. See also the ``when things go wrong'' section
(\sectionref{wrong}) for information about crashes, space leaks, and
other undesirable phenomena.
GHC~2.01 does not have a ``Haskell~1.2 compatibility mode.'' If
GHC~2.02 does not have a ``Haskell~1.2 compatibility mode.'' If
enough people yelled loudly and long enough, it could conceivably
happen...
......@@ -27,10 +27,10 @@ The limitations here are listed in Haskell-Report order (roughly).
\begin{description}
%-------------------------------------------------------------------
\item[No @n+k@ patterns:]
We took them out of GHC, because we thought they weren't going to
survive into Haskell~1.3. But they did. And we haven't put them
back. Yet.
%\item[No @n+k@ patterns:]
%We took them out of GHC, because we thought they weren't going to
%survive into Haskell~1.3. But they did. And we haven't put them
%back. Yet.
%-------------------------------------------------------------------
\item[Very long @String@ constants:]
......@@ -140,4 +140,14 @@ HOWEVER: standard instances for tuples (@Eq@, @Ord@, @Bounded@, @Ix@
These limitations are easily subvertible, so please ask if you get
stuck on them.
%-------------------------------------------------------------------
\item[Unicode character set:]
Haskell~1.4 embraces the Unicode character set, but GHC~2.02 does
handle it. Yet.
%-------------------------------------------------------------------
\item[class @Enum@:]
In Haskell~1.4, @Ord@ is dropped as a superclass of @Enum@. GHC~2.02
still has the @Ord@ constraint.
\end{description}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment