diff options
Diffstat (limited to 'docs/users_guide/6.0-notes.xml')
-rw-r--r-- | docs/users_guide/6.0-notes.xml | 319 |
1 files changed, 319 insertions, 0 deletions
diff --git a/docs/users_guide/6.0-notes.xml b/docs/users_guide/6.0-notes.xml new file mode 100644 index 0000000000..e07bc890f2 --- /dev/null +++ b/docs/users_guide/6.0-notes.xml @@ -0,0 +1,319 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<sect1 id="release-6-0"> + <title>Release notes for version 6.0</title> + + <sect2> + <title>User-visible compiler changes</title> + <itemizedlist> + <listitem> + <para>Template Haskell, a new feature for compile-time + metaprogramming has been introduced. See <xref + linkend="template-haskell"/>.</para> + </listitem> + <listitem> + <para>INLINE pragmas on methods in class or instance + declarations now work properly.</para> + </listitem> + <listitem> + <para>Recursive do-notation (aka <literal>mdo</literal>) is + now supported. See <xref linkend="mdo-notation"/>.</para> + </listitem> + <listitem> + <para>There is now a native code generator for PowerPC + platforms.</para> + </listitem> + <listitem> + <para>Profiling: the <option>-xt</option> RTS option enables + inclusion of thread stacks in a heap profile. See <xref + linkend="rts-options-heap-prof"/>.</para> + </listitem> + <listitem> + <para>Non-blocking I/O is now supported on Windows.</para> + </listitem> + <listitem> + <para>The <ulink url="../libraries/base/Data.Dynamic.html#Typeable"><literal>Typeable</literal></ulink> class can now be + derived, and the implementation of <literal>Typeable</literal> + is now more efficient.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>User-visible interpreter (GHCi) changes</title> + <itemizedlist> + <listitem> + <para>Loading a <literal>Main</literal> module that does not + define <literal>main</literal> is no longer an error, although + GHCi will still emit a warning in this case.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>User-visible library changes</title> + <itemizedlist> + <listitem> + <para>Hierarchical libraries are now available without needing + to specify an explicit <option>-package</option> flag. There + are some exceptions to this rule (see <xref + linkend="using-packages"/>), but if you stick to GHCi and + <option>--make</option> mode then there will normally be no + need to specify <option>-package</option> options at + all.</para> + + <para>Non-hierarchical libraries + (i.e. <literal>hslibs</literal> libraries) still need to be + explicitly requested with <option>-package</option> + options.</para> + </listitem> + + <listitem> + <para>The <literal>Posix</literal> library has been rewritten. + It is now a hierarchical library rooted at + <literal>System.Posix</literal>, and has some additions aimed + at supporting the latest revision of the POSIX standard (IEEE + Std 1003.1-2001). See the <ulink + url="../libraries/unix/index.html"><literal>unix</literal> + package</ulink> for details.</para> + + <para>The old <literal>posix</literal> package is still + available for backwards compatibility, but is deprecated and + will be removed in a future release.</para> + </listitem> + + <listitem> + <para><ulink url="../libraries/base/Data.IORef.html"><literal>Data.IORef</literal></ulink>: Added <literal>atomicModifyIORef</literal>.</para> + </listitem> + + <listitem> + <para><ulink url="../libraries/base/System.Cmd.html"><literal>System.Cmd</literal></ulink>: Added <literal>rawSystem</literal>.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/System.Environment.html"><literal>System.Environment</literal></ulink>: + Added <literal>withArgs</literal> and <literal>withProgName</literal>.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/network/Network.Socket.html"><literal>Network.Socket</literal></ulink>: + Added <literal>sendFd</literal> and <literal>recvFd</literal>.</para> + </listitem> + + <listitem> + <para>The <literal>Readline</literal> library has moved to + <ulink + url="../libraries/readline/System.Console.Readline.html"><literal>System.Console.Readline</literal></ulink>, + and is in a package of its own + (<literal>readline</literal>).</para> + </listitem> + + <listitem> + <para>The non-hierarchical versions of the FFI libraries are + now all available without needing to specify <literal>-package + lang</literal> (they are actually now in the + <literal>haskell98</literal> package, which is available by + default).</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/network/Network.BSD.html"><literal>Network.BSD</literal></ulink>: + <literal>symlink</literal> and <literal>readline</literal> are + now deprecated; use + <literal>System.Posix.createSymbolicLink</literal> and + <literal>System.Posix.readSymbolicLink</literal> + respectively.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Control.Exception.html"><literal>Control.Exception</literal></ulink>: + Added <literal>mapException</literal>.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Data.Dynamic.html"><literal>Data.Dynamic</literal></ulink>: + various changes to make the implementation of + <literal>Typeable</literal> more efficient. This entails some + changes to the interface, and affects how instances of + <literal>Typeable</literal> are defined.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Data.Tree.html"><literal>Data.Tree</literal></ulink> + is a new library for trees.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Data.Graph.html"><literal>Data.Graph</literal></ulink> + is a new library for graphs.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/System.IO.html"><literal>System.IO</literal></ulink>: + Removed <literal>bracket</literal> and + <literal>bracket_</literal> (use the versions from + <literal>Control.Exception</literal> instead).</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/System.IO.html"><literal>System.IO</literal></ulink>: + The <literal>IOError</literal> type is now a synonym for + <literal>IOException</literal>, whereas previously it was a + synonym for <literal>Exception</literal>. This has various + consequences, one of which is that the types of + <literal>System.IO.catch</literal> and + <literal>Control.Exception.catch</literal> are now different + (useful, because they do different things).</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/System.IO.Error.html"><literal>System.IO.Error</literal></ulink>: + added <literal>annotateIOError</literal>, + <literal>modifyIOError</literal>, and <literal>ioeSet{ErrorType,ErrorString,Handle,FileName}</literal>.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Text.ParserCombinators.ReadP.html"><literal>Text.ParserCombinators.ReadP</literal></ulink>: + lots of updates.</para> + </listitem> + + <listitem> + <para><literal>Control.Monad.Monoid</literal> is now <ulink url="../libraries/base/Data.Monoid.html"><literal>Data.Monoid</literal></ulink>.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Data.PackedString.html"><literal>Data.PackedString</literal></ulink>: + added <literal>joinPS</literal>, <literal>unwordsPS</literal> + and <literal>unlinesPS</literal>.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Data.HashTable.html"><literal>Data.HashTable</literal></ulink> + is a new dynamic hash-table implementation.</para> + </listitem> + + <listitem> + <para>Added <ulink + url="../libraries/unix/System.Sendfile.html"><literal>System.Sendfile</literal></ulink>.</para> + </listitem> + + <listitem> + <para>Added <ulink + url="../libraries/base/Foreign.Marshal.Pool.html"><literal>Foreign.Marshal.Pool</literal></ulink>.</para> + </listitem> + + <listitem> + <para><ulink + url="../libraries/base/Data.Bits.html"><literal>Data.Bits</literal></ulink>: + <literal>shiftL</literal>, <literal>shiftR</literal>, + <literal>rotateL</literal>, and <literal>rotateR</literal> are + now methods of the <literal>Bite</literal> class.</para> + </listitem> + + <listitem> + <para>The FFI libraries now conform to the latest version of + the FFI spec:</para> + <itemizedlist> + <listitem> + <para>Added <ulink + url="../libraries/base/Foreign.ForeignPtr.html#mallocForeignPtr"><literal>Foreign.ForeignPtr.mallocForeignPtr</literal></ulink> + and friends.</para> + </listitem> + <listitem> + <para>Finalizers added to a <literal>ForeignPtr</literal> + with <literal>addForeignPtrFinalizer</literal> are now run + in strict order; namely the reverse of the order they were + added.</para> + </listitem> + <listitem> + <para><literal>Foreign.C.TypesISO</literal> has been + merged into <ulink + url="../libraries/base/Foreign.C.Types.html"><literal>Foreign.C.Types</literal></ulink>.</para> + </listitem> + </itemizedlist> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Experimental features</title> + <itemizedlist> + <listitem> + <para>The <literal>Data</literal> class provides for generic + data traversals and folds; see <ulink + url="../libraries/base/Data.Generics.html"><literal>Data.Generics</literal></ulink>. + <literal>Data</literal> can be derived for arbitrary + datatypes. The <literal>Data</literal> class is still + experimental, so its contents may change in the future.</para> + </listitem> + <listitem> + <para>Several bugs have been fixed in the threaded RTS, and it + should now be rather more robust (it should still be + considered experimental, however).</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Internal changes</title> + <itemizedlist> + <listitem> + <para>Sweeping changes to the compiler and runtime system to + change the evaluation model from <quote>push/enter</quote> to + <quote>eval/apply</quote>. The bottom line is that the + compiler is now more portable and some of the complexity is + now more centralised, while performance and binary sizes + remain about the same.</para> + + <para>A paper describing these changes can be found <ulink + url="http://research.microsoft.com/~simonpj/papers/eval-apply">here</ulink>.</para> + </listitem> + <listitem> + <para>The test suite is now driven by a Python script and is + rather more flexible and robust. It now supports building + tests several different "ways", and as a result we now run + each test with optimisation, profiling, native code + generation, and GHCi in addition to the vanilla way.</para> + </listitem> + <listitem> + <para>The build system now supports bootstrapping the compiler + in a single build tree. By default, typing + <literal>make</literal> at the top level will bootstrap the + compiler once to create a stage-2 compiler. See the Building + Guide for more details.</para> + </listitem> + <listitem> + <para>The RTS debugging flags are no longer represented by a + bitfield and now have single-character names. For example, to + turn on scheduler debugging output, use <literal>-Ds</literal> + rather than <literal>-D1</literal>.</para> + </listitem> + <listitem> + <para>The compiler no longer requires any packages from + <literal>hslibs</literal> to bootstrap. It is enough to + compile <literal>fptools/libraries</literal> before building + the stage 2 compiler.</para> + </listitem> + </itemizedlist> + </sect2> + +</sect1> + +<!-- Emacs stuff: + ;;; Local Variables: *** + ;;; mode: xml *** + ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") *** + ;;; End: *** + --> |