<?xml version="1.0" encoding="iso-8859-1"?>
<sect1 id="release-5-00">
  <title>Release notes for version 5.00 (April 2001)</title>

  <sect2>
    <title>User-visible compiler changes</title>
    <itemizedlist>
      <listitem>
	<para>GHCi, the new interactive environment on top of GHC, has
	been added (<xref linkend="ghci">).</para>
      </listitem>
      <listitem>
	<para>New <option>&ndash;&ndash;make</option> flag added (<xref
	linkend="make-mode">).</para>
      </listitem>
      <listitem>
	<para>The native code generator now supports Sparc in addition
	to x86.</para>
      </listitem>
      <listitem>
	<para>We now make it clear which options can be placed in an
	OPTIONS pragma.  See <xref
	linkend="static-dynamic-flags">.</para>
      </listitem>
      <listitem>
	<para><option>-fglasgow-exts</option> no longer implies
	<option>-package lang</option>.</para>
      </listitem>
      <listitem>
	<para><option>-noC</option> is no more.</para>
      </listitem>
      <listitem>
	<para><option>-hi</option> and <option>-nohi</option> are no more.</para>
      </listitem>
      <listitem>
	<para>The concept of &ldquo;packages&rdquo; has been
	generalised and extended.  Packages may be installed or
	removed from an existing GHC installation using the new
	<command>ghc-pkg</command> tool.  See <xref
	linkend="packages">.</para>
      </listitem>
      <listitem>
	<para>Initial unicode support: the <literal>Char</literal>
	type is now 31 bits.  We don't yet have support for unicode
	I/O.</para>
      </listitem>
      <listitem>
	<para><option>-v</option> now takes an optional numeric
        argument indicating the level of verbosity (<xref
        linkend="options-help">).  <option>-dshow-passes</option> has
        been removed.</para>
      </listitem>
      <listitem>
	<para>Parallel list comprehensions added.  See <xref
	linkend="parallel-list-comprehensions">.</para>
      </listitem>
      <listitem>
	<para>Functional dependencies are now fully implemented.
	</para>
      </listitem>
      <listitem>
	<para>Profiling: please use 
              <literal>{-# SCC ".." #-}</literal> 
              rather than <literal>_scc_ "..."</literal>.  The latter
              will be phased out in due course.</para>
      </listitem>
      <listitem>
	<para>A new experimental optimisation, SpecConstr, is turned
	on with <literal>-O2</literal>.</para>
      </listitem>
      <listitem>
	<para>Please report bugs using the <ulink
	url="http://sourceforge.net/projects/ghc/">SourceForge bug
	tracker</ulink> instead of
	<email>glasgow-haskell-bugs@haskell.org</email> if
	possible.</para>
      </listitem>
      <listitem>
	<para>Documentation changes: there's now a useful Flag
	Reference section, see <xref linkend="flag-reference">.</para>
      </listitem>
      <listitem>
	<para>Many, many, bugfixes.</para>
      </listitem>
    </itemizedlist>
  </sect2>

  <sect2>
    <title>New experimental features</title>

    <itemizedlist>
      <listitem>
	<para>A &ldquo;front panel&rdquo; for GHC-compiled programs
	displays real-time graphs of memory behaviour in a GTK+
	window.  You need to recompile the RTS with front panel
	support to use this.</para>
      </listitem>
    </itemizedlist>
  </sect2>

  <sect2>
    <title>FFI changes</title>
    <itemizedlist>
      <listitem>
	<para><command>hsc2hs</command> added (<xref linkend="hsc2hs">).</para>
      </listitem>
      <listitem>
	<para>FFI libraries have been updated to the latest proposal
	from the FFI task force.  Too many changes to list here, see
	the docs: <xref linkend="Foreign">.</para>
      </listitem>
    </itemizedlist>
  </sect2>

  <sect2>
    <title>User-visible library changes</title>
    <itemizedlist>
      <listitem>
	<para><function>putMVar</function> now blocks if the
	<literal>MVar</literal> is already full.  The
	<literal>PutFullMVar</literal> exception no longer exists.
	A non-blocking version of <function>putMVar</function>,
	<function>tryPutMVar</function>, has been added (<xref
	linkend="MVars">).</para>
      </listitem>
      <listitem>
	<para>The <literal>Int</literal> and
        <literal>Integer</literal> types now have instances of
        <literal>Bits</literal> (<xref linkend="Bits">).</para>
      </listitem>
      <listitem>
	<para>Package <literal>hssource</literal> has been added.  It
	contains a Haskell 98 abstract syntax, parser, lexer and pretty
	printer.  No documentation yet.</para>
      </listitem>
      <listitem>
	<para>The methods <literal>fromInt</literal> and
	<literal>toInt</literal>, which used to be in class
	<literal>Num</literal> but exported from module
	<literal>Int</literal>, are no longer in class
	<literal>Num</literal>.  They're still available from module
	<literal>Int</literal>, however.</para> 

	<para>In most cases, there should be no benefit from using
	<literal>fromInt</literal> instead of
	<literal>fromIntegral</literal>, which is specialised for all
	integral types.</para>
      </listitem>
      <listitem>
	<para>New modules: DiffArray (<xref linkend="DiffArray">),
	StorableArray (<xref linkend="StorableArray">),
	MonadList, MonadCont (no documentation yet).</para>
      </listitem>
    </itemizedlist>
  </sect2>

  <sect2>
    <title>Build system changes</title>
    
    <itemizedlist>
      <listitem>
	<para>The <literal>WithGhcHc</literal> setting in
	<literal>build.mk</literal> has been replaced by the
	<literal>&ndash;&ndash;with-ghc=<replaceable>ghc</replaceable></literal>
	option to <literal>configure</literal>.  The new option
	<emphasis>must</emphasis> be used if you intend to use
	anything except &ldquo;<literal>ghc</literal>&rdquo; to
	bootstrap GHC, in order that the build system can figure out
	what version of GHC you're using.</para>
      </listitem>
      <listitem>
	<para>Source distributions are now made by doing <literal>make
	distclean</literal> in a build tree, instead of requiring a
	linked build tree.</para>
      </listitem>
    </itemizedlist>
  </sect2>

  <sect2>
    <title>Internal changes</title>
    <itemizedlist>
      <listitem>
	<para>Many internal compiler changes: too many to list
	here.</para>
      </listitem>
      <listitem>
	<para>The old perl driver has been removed and replaced by a
	driver in the compiler proper.</para>
      </listitem>
      <listitem>
	<para>We now use GMP 3 instead of GMP 2 for
	arbitrary-precision integer support.</para>
      </listitem>
      <listitem>
	<para>Several libraries rewritten to use the FFI.</para>
      </listitem>
    </itemizedlist>
  </sect2>

</sect1>

<!-- Emacs stuff:
     ;;; Local Variables: ***
     ;;; mode: xml ***
     ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") ***
     ;;; End: ***
 -->
