[project @ 2003-05-21 15:20:37 by simonmar]
authorsimonmar <unknown>
Wed, 21 May 2003 15:20:37 +0000 (15:20 +0000)
committersimonmar <unknown>
Wed, 21 May 2003 15:20:37 +0000 (15:20 +0000)
The 6.0 release notes.

ghc/docs/users_guide/6.0-notes.sgml

index 019503d..4bb93f4 100644 (file)
-<sect1 id="release-5-04">
+<sect1 id="release-6-0">
   <title>Release notes for version 6.0</title>
 
   <sect2>
     <title>User-visible compiler changes</title>
-    <para></para>
+    <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="../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>
-    <para></para>
+    <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>
-    <para></para>
+    <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="../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="../base/Data.IORef.html"><literal>Data.IORef</literal></ulink>: Added <literal>atomicModifyIORef</literal>.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink url="../base/System.Cmd.html"><literal>System.Cmd</literal></ulink>: Added <literal>rawSystem</literal>.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink
+       url="../base/System.Environment.html"><literal>System.Environment</literal></ulink>:
+       Added <literal>withArgs</literal> and <literal>withProgName</literal>.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink
+       url="../base/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="../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="../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="../base/Control.Exception.html"><literal>Control.Exception</literal></ulink>:
+       Added <literal>mapException</literal>.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink
+       url="../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="../base/Data.Tree.html"><literal>Data.Tree</literal></ulink>
+       is a new library for trees.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink
+       url="../base/Data.Graph.html"><literal>Data.Graph</literal></ulink>
+       is a new library for graphs.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink
+       url="../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="../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="../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="../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="../base/Data.Monoid.html"><literal>Data.Monoid</literal></ulink>.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink
+       url="../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="../base/Data.HashTable.html"><literal>Data.HashTable</literal></ulink>
+       is a new dynamic hash-table implementation.</para>
+      </listitem>
+
+      <listitem>
+       <para>Added <ulink
+       url="../unix/System.Sendfile.html"><literal>System.Sendfile</literal></ulink>.</para>
+      </listitem>
+
+      <listitem>
+       <para>Added <ulink
+       url="../base/Foreign.Marshal.Pool.html"><literal>Foreign.Marshal.Pool</literal></ulink>.</para>
+      </listitem>
+
+      <listitem>
+       <para><ulink
+       url="../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="../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="../base/Foreign.C.Types.html"><literal>Foreign.C.Types</literal></ulink>.</para>
+         </listitem>
+       </itemizedlist>
+      </listitem>
+    </itemizedlist>
   </sect2>
 
   <sect2>
-    <title>New experimental features</title>
-    <para></para>
+    <title>Experimental features</title>
+    <itemizedlist>
+      <listitem>
+       <para>The <literal>Data</literal> class provides for generic
+       data traversals and folds; see <ulink
+       url="../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>
-    <para></para>
+    <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>