Add release notes for 6.12.1
authorIan Lynagh <igloo@earth.li>
Sun, 20 Sep 2009 14:18:20 +0000 (14:18 +0000)
committerIan Lynagh <igloo@earth.li>
Sun, 20 Sep 2009 14:18:20 +0000 (14:18 +0000)
docs/users_guide/6.12.1-notes.xml [new file with mode: 0644]
docs/users_guide/ug-ent.xml

diff --git a/docs/users_guide/6.12.1-notes.xml b/docs/users_guide/6.12.1-notes.xml
new file mode 100644 (file)
index 0000000..691863d
--- /dev/null
@@ -0,0 +1,1237 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<sect1 id="release-6-12-1">
+  <title>Release notes for version 6.12.1</title>
+
+  <para>
+    The significant changes to the various parts of the compiler are
+    listed in the following sections. There have also been numerous bug
+    fixes and performance improvements over the 6.10 branch.
+  </para>
+
+  <sect2>
+    <title>Language changes</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          The new <literal>TupleSections</literal> language extension
+          enables tuple sections, such as <literal>(, True)</literal>.
+          See <xref linkend="tuple-sections" /> for more information.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new <literal>MonoLocalBinds</literal> language extension
+          disables type variable generalisation for bindings in
+          <literal>let</literal> and <literal>where</literal> clauses.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new <literal>DeriveFunctor</literal>,
+          <literal>DeriveFoldable</literal> and
+          <literal>DeriveTraversable</literal> language extensions
+          enable deriving for the respective type classes.
+          See <xref linkend="deriving-typeable" /> for more information.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new <literal>NoNPlusKPatterns</literal> language extension
+          disables <literal>n+k</literal> patterns.
+          See <xref linkend="n-k-patterns" /> for more information.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          Some improvements have been made to record puns:
+        </para>
+        <itemizedlist>
+          <listitem>
+            <para>
+              <literal>C { A.a }</literal> now works, expanding to
+              <literal>C { A.a = a }</literal>.
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              <literal>-fwarn-unused-matches</literal> no longer
+              warns about bindings introduced by
+              <literal>f (C {..}) = x</literal>.
+            </para>
+          </listitem>
+
+          <listitem>
+            <para>
+              The <literal>RecordWildCards</literal> language
+              extension implies
+              <literal>DisambiguateRecordFields</literal>.
+            </para>
+          </listitem>
+        </itemizedlist>
+      </listitem>
+
+      <listitem>
+        <para>
+          Declarations such as
+        </para>
+<programlisting>
+data T a where
+    MkT :: forall a. Eq a => { x,y :: !a } -> T a
+</programlisting>
+        <para>
+          are now only accepted if the extension
+          <literal>TypeOperators</literal> is on.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          It is now possible to define GADT records with class
+          constraints. The syntax is:
+        </para>
+<programlisting>
+data T a where
+    MkT :: forall a. Eq a => { x,y :: !a } -> T a
+</programlisting>
+      </listitem>
+
+      <listitem>
+        <para>
+          You can now list multiple GADT constructors with the same type,
+          e.g.:
+        </para>
+<programlisting>
+data T where
+    A, B :: T
+    C :: Int -> T
+</programlisting>
+      </listitem>
+
+      <listitem>
+        <para>
+          It is now possible to use GADT syntax for data families:
+        </para>
+<programlisting>
+data instance T [a] where
+    T1 :: a -> T [a]
+</programlisting>
+        <para>
+          and make data instances be GADTs:
+        </para>
+<programlisting>
+data instance T [a] where
+    T1 :: Int -> T [Int]
+    T2 :: a -> b -> T [(a,b)]
+</programlisting>
+      </listitem>
+
+      <listitem>
+        <para>
+          Record updates can now be used with datatypes containing
+          existential type variables, provided the fields being altered
+          do not mention the existential types.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The <literal>ImpredicativeTypes</literal> extension now imples
+          the <literal>RankNTypes</literal> extension.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The <literal>ImpredicativeTypes</literal> extension is no
+          longer enabled by <literal>-fglasgow-exts</literal>.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          You can now give multi-line <literal>DEPRECATED</literal> and
+          <literal>WARNING</literal> pragmas:
+        </para>
+<programlisting>
+{-# DEPRECATED defaultUserHooks
+     ["Use simpleUserHooks or autoconfUserHooks, unless you need Cabal-1.2"
+     , "compatibility in which case you must stick with defaultUserHooks"]
+  #-}
+</programlisting>
+      </listitem>
+
+      <listitem>
+        <para>
+          The <literal>-#include</literal> flag and
+          <literal>INCLUDE</literal> pragma are now deprecated and
+          ignored. GHC now generates its own C prototypes, rather than
+          relying on C prototypes.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The <literal>threadsafe</literal> foreign import safety level
+          is now deprecated; use <literal>safe</literal> instead.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          There is a new FFI calling convention called
+          <literal>prim</literal>, which allows calling C-- function.
+          Most users are not expected to need this.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Warnings</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          A warning is now emitted if an unlifted type is bound in a
+          lazy pattern (in <literal>let</literal> or
+          <literal>where</literal> clause, or in an irrefutable pattern)
+          unless it is inside a bang pattern.
+          This warning is controlled by the
+          <literal>-fwarn-lazy-unlifted-bindings</literal> flag.
+          In a future version of GHC this will be an error.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          There are two new warnings if a monadic result of type other than
+          <literal>m ()</literal> is used in a <literal>do</literal>
+          block, but its result is not bound.
+          The flags <literal>-fwarn-unused-do-bind</literal>
+          and <literal>-fwarn-wrong-do-bind</literal> control
+          these warnings.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          There is a new warning if a monadic result of type other than
+          <literal>m ()</literal> is not bound.
+          The flag <literal>-fwarn-unused-do-bind</literal> controls
+          this warning.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new flag <literal>-fwarn-dodgy-exports</literal> controls
+          whether an error is given for exporting a type synonym as
+          <literal>T(..)</literal>.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          Name shadowing warnings are no longer given for variable names
+          beginning with an underscore.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          When <literal>-Werror</literal> is given, we now pass
+          <literal>-Werror</literal> to <literal>cpp</literal>.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Runtime system</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          The flag <literal>+RTS -N</literal> now automatically
+          determines how many threads to use, based on the number
+          of CPUs in your machine.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new flag <literal>+RTS -q1</literal> disables the parallel
+          garbage collector.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new flag
+          <literal>+RTS -qg<replaceable>n</replaceable></literal>
+          sets the minimum generation for which parallel garbage
+          collection is used. Defaults to 1.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new flag <literal>+RTS -qa</literal>
+          uses the OS to set thread affinity.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new flag <literal>+RTS -qb</literal>
+          disables load balancing in the parallel garbage collector.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          If you link with the <literal>-eventlog</literal> flag, then
+          the new flag <literal>+RTS -l</literal> generates
+          <literal><replaceable>prog</replaceable>.eventlog</literal>
+          files, which tools such as ThreadScope can use to show the
+          behaviour of your program. The
+          <literal>+RTS -D><replaceable>x</replaceable></literal> output
+          is also sent to the eventlog file if this option is enabled.
+          The <literal>+RTS -v</literal> flag sends eventlog data to
+          stderr instead.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          There is a new statistic in the <literal>+RTS -s</literal> output:
+        </para>
+<programlisting>
+SPARKS: 1430 (2 converted, 1427 pruned)
+</programlisting>
+        <para>
+          This tells you how many sparks (requests for parallel
+          execution, caused by calls to <literal>par</literal>) were
+          created, how many were actually evaluated in parallel
+          (converted), and how many were found to be already evaluated
+          and were thus discarded (pruned). Any unaccounted for sparks
+          are simply discarded at the end of evaluation.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Build system</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          We now require GHC >= 6.8 to build.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          We now require that gcc is >= 3.0.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          In order to generate the parsers, happy >= 1.16 is now
+          required. The parsers are pre-generated in the source tarball,
+          so most users will not need happy.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          It is now possible to build GHC with a simple, BSD-licensed
+          Haskell implementation of Integer, instead of the
+          implementation on top of GMP. To do so, set
+          <literal>INTEGER_LIBRARY</literal> to
+          <literal>integer-simple</literal> in
+          <literal>mk/build.mk</literal>.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The build system has been rewritten for the 6.12 series.
+          See <ulink url="http://hackage.haskell.org/trac/ghc/wiki/Building/Using">the building guide</ulink>
+          for more information.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The build system now uses variables like
+          <literal>bindir</literal> compatibly with the GNU standard.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Compiler</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          The "Interface file version" field of the
+          <literal>ghc --info</literal> output has been removed, as it
+          is no longer used by GHC.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          There is a new "LibDir" field in the
+          <literal>ghc --info</literal> output.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          A field <replaceable>f</replaceable> in the
+          <literal>ghc --info</literal> can now be printed with
+          <literal>ghc --print-<replaceable>f</replaceable></literal>, with letters lower-cased
+          and spaces replaced by dashes.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          GHC now works (as a 32bit application) on OS X Snow Leopard.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The native code generator now works on Sparc Solaris.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          Haddock interface files are now portable between different
+          architectures.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new linker flag <literal>-eventlog</literal> enables the
+          <literal>+RTS -l</literal> event logging features. The
+          <literal>-debug</literal> flag also enables them.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          There is a new flag <literal>-feager-blackholing</literal>
+          which typically gives better performing code when running
+          with multiple threads.
+          See <xref linkend="parallel-compile-options" /> for more
+          information.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          There is a new flag <literal>-fbuilding-cabal-package</literal>
+          which signals to GHC that it is being run by a build system,
+          rather than invoked directly. This currently means that GHC
+          gives different error messages in certain situations.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The following flags were static, but are now dynamic:
+          <literal>-fext-core</literal>,
+          <literal>-fauto-sccs-on-all-toplevs</literal>,
+          <literal>-auto-all</literal>,
+          <literal>-no-auto-all</literal>,
+          <literal>-fauto-sccs-on-exported-toplevs</literal>,
+          <literal>-auto</literal>,
+          <literal>-no-auto</literal>,
+          <literal>-fauto-sccs-on-individual-cafs</literal>,
+          <literal>-caf-all</literal> and
+          <literal>-no-caf-all</literal>.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>GHCi</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          If the argument to <literal>:set prompt</literal> starts with
+          a double quote then it is read with Haskell String syntax,
+          e.g.:
+        </para>
+<programlisting>
+Prelude> :set prompt "Loaded: %s\n> "
+Loaded: Prelude
+> 
+</programlisting>
+      </listitem>
+
+      <listitem>
+        <para>
+          The arguments to <literal>:set set</literal>
+          and <literal>:set show</literal> can now be tab completed.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Template Haskell</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          You can now omit the splice notation for top-level declaration
+          splices, e.g.:
+        </para>
+<programlisting>
+data T = T1 | T2
+deriveMyStuff ''T
+</programlisting>
+      </listitem>
+
+      <listitem>
+        <para>
+          Splices are now nestable, e.g. you can say
+          <literal>f x = $(g $(h 'x))</literal>.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          It is now possible to splice in types.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2>
+    <title>Package Handling</title>
+    <itemizedlist>
+      <listitem>
+        <para>
+          Shared libraries are now supported on x86 and x86_64 Linux.
+          To use shared libraries, use the <literal>-dynamic</literal>
+          flag.
+          See <xref linkend="using-shared-libs" />  for more information.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new <literal>-fno-shared-implib</literal> flag can be used
+          to stop GHC generating the <literal>.lib</literal> import
+          library when making a dynamic library. This reduces the disk
+          space used when you do not need it.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          Packages can now be identified by a "package ID", which is
+          based on a hash of the ABIs. The new flag
+          <literal>-package-id</literal> allows packages to be selected
+          by this identifier.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          The new flag <literal>--abi-hash</literal>, used thus:
+        </para>
+<programlisting>
+ghc --abi-hash M1 M2 ...
+</programlisting>
+        <para>
+          prints the combined hash of all the modules listed. It is
+          used to make package IDs.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          You can now give <literal>ghc-pkg</literal> a
+          <literal>-v0</literal> flag to make it be silent,
+          <literal>-v1</literal> for normal verbosity (the default),
+          or <literal>-v2</literal> or <literal>-v</literal> for
+          verbose output.
+        </para>
+      </listitem>
+
+      <listitem>
+        <para>
+          Rather than being a single <literal>package.conf</literal> file,
+          package databases now consist of a directory containing one
+          file per package, and a binary cache of the information.
+        </para>
+      </listitem>
+    </itemizedlist>
+  </sect2>
+
+  <sect2> 
+    <title>Libraries</title>
+
+    <para>
+      GHC no longer comes with any extralibs; instead, the
+      <ulink url="http://hackage.haskell.org/platformi/">Haskell Platform</ulink>
+      will provide a consistent set of additional libraries.
+    </para>
+
+    <sect3>
+      <title>array</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.3.0.0 (was 0.2.0.0)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            The <literal>Data.Array.Diff</literal> module has been moved
+            to its own package.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>base</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 4.2.0.0 (was 4.1.0.0)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            We also ship a base version 3.0.3.2 (was 3.0.3.1), so legacy
+            code should continue to work. This package is now deprecated,
+            and will be removed in a future version of GHC.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Handle IO now supports automatic character set encoding
+            and newline translation. For more information, see the
+            "Unicode encoding/decoding" and "Newline conversion" sections
+            in the <literal>System.IO</literal> haddock docs.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            It is now possible to create your own handles.
+            For more information, see the
+            <literal>GHC.IO.Handle</literal> haddock docs.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>System.IO</literal> now exports two new functions,
+            <literal>openTempFileWithDefaultPermissions</literal> and
+            <literal>openBinaryTempFileWithDefaultPermissions</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>Data.Fixed</literal> now provides
+            <literal>Data</literal> and <literal>Typeable</literal>
+            instances for <literal>Fixed</literal>, and exports
+            a number of new types:
+            <literal>E0</literal>, <literal>Uni</literal>,
+            <literal>E1</literal>, <literal>Deci</literal>,
+            <literal>E2</literal>, <literal>Centi</literal>,
+            <literal>E3</literal>, <literal>Milli</literal>,
+            <literal>E9</literal> and <literal>Nano</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            In <literal>Control.Exception</literal>,
+            <literal>BlockedOnDeadMVar</literal>
+            has been renamed to
+            <literal>BlockedIndefinitelyOnMVar</literal>
+            and <literal>BlockedIndefinitely</literal>
+            has been renamed to
+            <literal>BlockedIndefinitelyOnSTM</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            The <literal>Control.OldException</literal> module has been
+            deprecated.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>System.Posix.Internals.setNonBlockingFD</literal>
+            now takes an additional <literal>Bool</literal> argument, so
+            you can turn blocking back on again.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            A new function <literal>eof</literal> has been added to
+            <literal>Text.ParserCombinators.ReadP</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            The <literal>Foreign.C.Types.CLDouble</literal> type has
+            been removed. It was never correct, but just a duplicate of
+            <literal>Foreign.C.Types.CDouble</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            In <literal>Data.Data</literal>, the
+            <literal>StringRep</literal> and
+            <literal>StringConstr</literal> constructors have been
+            removed. The <literal>CharRep</literal> and
+            <literal>CharConstr</literal> constructors should be used
+            instead.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            In <literal>Data.Data</literal>,
+            <literal>mkIntConstr</literal> has been deprecated in favour
+            of the new <literal>mkIntegralConstr</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            In <literal>Data.Data</literal>,
+            <literal>mkFloatConstr</literal> has been deprecated in
+            favour of the new <literal>mkRealConstr</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            In <literal>Data.Data</literal>,
+            <literal>mkNorepType</literal> has been deprecated in
+            favour of the new <literal>mkNoRepType</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>bytestring</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.9.1.5 (was 0.9.1.4)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>Cabal</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.8.0.0 (was 1.6.0.3)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Many API changes. See the Cabal docs for more information.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>containers</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.3.0.0 (was 0.2.0.1)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>mapAccumRWithKey</literal> has been added to
+            <literal>Data.IntMap</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            A <literal>Traversable</literal> instance has been added to
+            <literal>Data.IntMap.IntMap</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            The types of <literal>Data.IntMap.intersectionWith</literal>
+            and <literal>Data.IntMap.intersectionWithKey</literal> have
+            been changed from
+        </para>
+<programlisting>
+intersectionWith :: (a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
+intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a
+</programlisting>
+        <para>
+            to
+        </para>
+<programlisting>
+intersectionWith :: (a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
+intersectionWithKey :: (Key -> a -> b -> c) -> IntMap a -> IntMap b -> IntMap c
+</programlisting>
+        </listitem>
+
+        <listitem>
+          <para>
+            The types of <literal>Data.IntMap.findMin</literal>
+            and <literal>Data.IntMap.findMax</literal> have
+            been changed from
+        </para>
+<programlisting>
+findMin :: IntMap a -> a
+findMax :: IntMap a -> a
+</programlisting>
+        <para>
+            to
+        </para>
+<programlisting>
+findMin :: IntMap a -> (Int,a)
+findMax :: IntMap a -> (Int,a)
+</programlisting>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>Data.Map</literal> now exports
+            <literal>mapAccumRWithKey</literal>,
+            <literal>foldrWithKey</literal>,
+            <literal>foldlWithKey</literal> and
+            <literal>toDescList</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>Data.Sequence</literal> now exports
+            <literal>replicate</literal>,
+            <literal>replicateA</literal>,
+            <literal>replicateM</literal>,
+            <literal>iterateN</literal>,
+            <literal>unfoldr</literal>,
+            <literal>unfoldl</literal>,
+            <literal>scanl</literal>,
+            <literal>scanl1</literal>,
+            <literal>scanr</literal>,
+            <literal>scanr1</literal>,
+            <literal>tails</literal>,
+            <literal>inits</literal>,
+            <literal>takeWhileL</literal>,
+            <literal>takeWhileR</literal>,
+            <literal>dropWhileL</literal>,
+            <literal>dropWhileR</literal>,
+            <literal>spanl</literal>,
+            <literal>spanr</literal>,
+            <literal>breakl</literal>,
+            <literal>breakr</literal>,
+            <literal>partition</literal>,
+            <literal>filter</literal>,
+            <literal>sort</literal>,
+            <literal>sortBy</literal>,
+            <literal>unstableSort</literal>,
+            <literal>unstableSortBy</literal>,
+            <literal>elemIndexL</literal>,
+            <literal>elemIndicesL</literal>,
+            <literal>elemIndexR</literal>,
+            <literal>elemIndicesR</literal>,
+            <literal>findIndexL</literal>,
+            <literal>findIndicesL</literal>,
+            <literal>findIndexR</literal>,
+            <literal>findIndicesR</literal>,
+            <literal>foldlWithIndex</literal>,
+            <literal>foldrWithIndex</literal>,
+            <literal>mapWithIndex</literal>,
+            <literal>zip</literal>,
+            <literal>zipWith</literal>,
+            <literal>zip3</literal>,
+            <literal>zipWith3</literal>,
+            <literal>zip4</literal> and
+            <literal>zipWith4</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>directory</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.0.1.0 (was 1.0.0.3)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            A new function <literal>copyPermissions</literal> has been
+            added to <literal>System.Directory</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>
+        dph
+        (dph-base, dph-par, dph-prim-interface, dph-prim-par,
+        dph-prim-seq, dph-seq)
+      </title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            All the dph packages are version 0.4.0.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>extensible-exceptions</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.1.1.1 (was 0.1.1.0)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>filepath</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.1.0.3 (was 1.1.0.2)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            The list of characters that are invalid in filenames on
+            Windows now includes <literal>\</literal> (backslash).
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>ghc-binary</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            This is an internal package, and should not be used.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>ghc-prim</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.2.0.0 (was 0.1.0.0)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>haskell98</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.0.1.1 (was 1.0.1.0)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>hpc</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.5.0.4 (was 0.5.0.3)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>integer-gmp</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.2.0.0 (was called integer, version 0.1.0.1)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>integer-simple</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            This is a new boot package, version 0.1.0.0.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>old-locale</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.0.0.2 (was 1.0.0.1)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Date and time in ISO8601 format are now separated by
+            <literal>T</literal> rather than a space.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>old-time</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.0.0.3 (was 1.0.0.2)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>packedstring</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            This is no longer a boot package.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>pretty</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.0.1.1 (was 1.0.1.0)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>process</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.0.1.2 (was 1.0.1.1)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>random</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 1.0.0.2 (was 1.0.0.1)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>syb</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 0.1.0.2 (was 0.1.0.1)
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>template-haskell</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.4.0.0 (was 2.3.0.1)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Support for <literal>inline</literal> and
+            <literal>specialise</literal> pragmas has been added.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Support for bang patterns has been added
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Support for kind annotations has been added
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Support for equality constraints has been added
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            Support for type family declarations has been added
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>time</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            This is a new boot package, version 1.1.4.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>unix</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.4.0.0 (was 2.3.2.0)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>System.Posix.IO</literal> now exports
+            <literal>fdReadBuf</literal> and
+            <literal>fdWriteBuf</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>System.Posix.Process.executeFile</literal> now
+            returns <literal>IO a</literal> instead of
+            <literal>IO ()</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+
+    <sect3>
+      <title>Win32</title>
+      <itemizedlist>
+        <listitem>
+          <para>
+            Version number 2.2.0.1 (was 2.2.0.0)
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>System.Win32.File</literal> now exports
+            <literal>WIN32_FIND_DATA</literal>,
+            <literal>FindData</literal>,
+            <literal>getFindDataFileName</literal>,
+            <literal>findFirstFile</literal>,
+            <literal>findNextFile</literal> and
+            <literal>findClose</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>System.Win32.Info</literal> now exports
+            <literal>getCurrentDirectory</literal>,
+            <literal>getTemporaryDirectory</literal>,
+            <literal>getFullPathName</literal> and
+            <literal>searchPath</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            <literal>System.Win32.Types</literal> now exports
+            <literal>HRESULT</literal>.
+          </para>
+        </listitem>
+
+        <listitem>
+          <para>
+            There is a new module <literal>System.Win32.Shell</literal>.
+          </para>
+        </listitem>
+      </itemizedlist>
+    </sect3>
+  </sect2>
+</sect1>
+
index a582242..6f8bf65 100644 (file)
@@ -3,7 +3,7 @@
 <!ENTITY flags          SYSTEM "flags.xml">
 <!ENTITY license        SYSTEM "license.xml">
 <!ENTITY intro          SYSTEM "intro.xml" >
-<!ENTITY relnotes1      SYSTEM "6.10.1-notes.xml" >
+<!ENTITY relnotes1      SYSTEM "6.12.1-notes.xml" >
 <!ENTITY using          SYSTEM "using.xml" >
 <!ENTITY runtime        SYSTEM "runtime_control.xml" >
 <!ENTITY prof           SYSTEM "profiling.xml" >