diff options
Diffstat (limited to 'docs/users_guide/5-04-notes.xml')
-rw-r--r-- | docs/users_guide/5-04-notes.xml | 288 |
1 files changed, 288 insertions, 0 deletions
diff --git a/docs/users_guide/5-04-notes.xml b/docs/users_guide/5-04-notes.xml new file mode 100644 index 0000000000..91b8dcf606 --- /dev/null +++ b/docs/users_guide/5-04-notes.xml @@ -0,0 +1,288 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<sect1 id="release-5-04"> + <title>Release notes for version 5.04</title> + + <sect2> + <title>User-visible compiler changes</title> + <itemizedlist> + <listitem> + <para>Full support for MacOS X, including fully optimized compilation, has been added. Only a native + code generator and support for <option>-split-objs</option> is still missing. + Everything else needs more testing, but should work.</para> + </listitem> + <listitem> + <para><literal>ghc-pkg</literal>: new options + <option>--auto-ghci-libs</option>, + <option>-u</option>/<option>--update-package</option>, + <option>--force</option>, and + <option>-i</option>/<option>--input-file</option>, and + suppport for expanding environment variables in package + descriptions. See <xref linkend="packages">).</para> + </listitem> + <listitem> + <para>The latest version of the FFI spec is fully supported. + The syntax of FFI declarations has changed accordingly. The + old syntax is still accepted for the time being, but will + elicit a warning from the compiler.</para> + </listitem> + <listitem> + <para>New option: <option>-F</option> specifies a user-defined + preprocessing phase (see <xref linkend="pre-processor">).</para> + </listitem> + <listitem> + <para>Major overhaul of the heap profiling subsystem, with new + facilities for retainer profiling and biographical profiling + (ala nhc98, albeit with a couple of omissions). The syntax of + the runtime heap-profiling options has changed. See <xref + linkend="prof-heap">.</para> + </listitem> + <listitem> + <para>The type system now supports full rank-N types + (previously only limited rank-2 types were supported). See + <xref linkend="universal-quantification">.</para> + </listitem> + <listitem> + <para>Explicit kind annotations can now be given on any + binding occurrence of a type variable. See <xref + linkend="sec-kinding">.</para> + </listitem> + <listitem> + <para>The handling of type synonyms has been rationalised. + See <xref linkend="type-synonyms">.</para> + </listitem> + <listitem> + <para>Fixes for several space leaks in the compiler itself + (these fixes were also merged into 5.02.3).</para> + </listitem> + <listitem> + <para>It is now possible to derive arbitrary classes for + newtypes. See <xref linkend="newtype-deriving">.</para> + </listitem> + <listitem> + <para>Deadlock is now an exception, rather than a return + status from the scheduler. See the module + <literal>Control.Exception</literal> in the library + documentation for more details.</para> + </listitem> + <listitem> + <para>The syntax and behaviour of <literal>RULE</literal> + pragmas has changed slightly. See <xref + linkend="rewrite-rules">.</para> + </listitem> + <listitem> + <para>Interface files are now in a binary format to reduce + compilation times. To view an interface file in plain text, + use the <option>--show-iface</option> flag.</para> + </listitem> + <listitem> + <para>A restriction on the form of class declarations has been + lifted. In Haskell 98, it is illegal for class method types + to mention constraints on the class type variable. eg.</para> + +<programlisting> + class Seq s a where + elem :: Eq a => a -> s a -> Bool +</programlisting> + + <para>This restriction has now been lifted in GHC.</para> + </listitem> + <listitem> + <para>Main threads can now receive the + <literal>BlockedOnDeadMVar</literal> exception in the same way + as other threads.</para> + </listitem> + <listitem> + <para>The <option>-fall-strict</option> flag never really + worked, and has been removed.</para> + </listitem> + <listitem> + <para>The syntax of <literal>.hi-boot</literal> files is now + much clearer and Haskell-like. See <xref + linkend="mutual-recursion">.</para> + </listitem> + <listitem> + <para>There is a new flag <option>-fffi</option> which enables + FFI support without turning on the rest of the GHC + extensions.</para> + </listitem> + <listitem> + <para>The syntax for implicit parameter bindings has changed. + Previously the keyword <literal>with</literal> was used to + introduce implicit bindings, but now implicit bindings may be + introduced using <literal>let</literal> (see <xref + linkend="implicit-parameters">). As a result of this, + <literal>with</literal> is no longer a keyword when + <option>-fglasgow-exts</option> is turned on.</para> + + <para>The option <literal>-fwith</literal> may be used to + restore the old behaviour.</para> + </listitem> + <listitem> + <para>Infix type constructors are now allowed, and must begin + with a colon (as with data constructors). See <xref + linkend="infix-tycons">.</para> + </listitem> + <listitem> + <para>The <literal>do</literal>-notation syntax is now + rebindable in the same way as other built-in syntax. See + <xref linkend="rebindable-syntax">.</para> + </listitem> + <listitem> + <para>Support for using “frameworks” on + Darwin/MacOS X has been added. See the + <option>-framework</option> option in <xref + linkend="options-linker">, and the + <literal>framework_dirs</literal> field of a package spec in + <xref linkend="package-management">.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>User-visible interpreter (GHCi) changes</title> + <itemizedlist> + <listitem> + <para>New commands: <literal>:browse</literal>, <literal>:set + args</literal>, <literal>:set prog</literal>, <literal>:show + bindings</literal>, and <literal>:show modules</literal> (see + <xref linkend="ghci-commands">).</para> + </listitem> + <listitem> + <para>There is a much more flexible mechanism for manipulating + the scope for expressions typed at the prompt. For example, + one can now have both the <literal>Prelude</literal> and the + exports of several compiled modules in scope at the same + time. See <xref linkend="ghci-scope">.</para> + </listitem> + <listitem> + <para>GHCi now supports <literal>foreign import + "wrapper"</literal> FFI declarations.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>User-visible library changes</title> + <itemizedlist> + <listitem> + <para>GHC is in the process of moving to a new hierarchical + set of libraries. At the moment, we have two sets of + libraries, both described in accompanying documents:</para> + <itemizedlist> + <listitem> + <para>The “new libraries” which are + hierarchical and consist of the following packages: + <literal>base</literal>, <literal>haskell98</literal>, + <literal>haskell-src</literal>, and + <literal>network</literal>. Broadly speaking, + <literal>base</literal> contains the + <literal>Prelude</literal>, standard libraries and most of + the contents of the old <literal>lang</literal> + package. By default, the <literal>base</literal> and + <literal>haskell98</literal> packages are enabled.</para> + </listitem> + + <listitem> + <para>The <literal>hslibs</literal>, most of which are now + deprecated. Where possible, new code should be written to + use the new libraries instead. </para> + + <para>The following libraries in <literal>hslibs</literal> + have not moved yet:</para> + <itemizedlist> + <listitem> + <para>The packages <literal>win32</literal>, + <literal>xlib</literal>, <literal>graphics</literal>, + and <literal>posix</literal>.</para> + </listitem> + <listitem> + <para>The Edison libraries in the + <literal>data</literal> package.</para> + </listitem> + <listitem> + <para>In the <literal>lang</literal> package, the + modules <literal>TimeExts</literal>, + <literal>DirectoryExts</literal>, + <literal>SystemExts</literal>, and + <literal>NumExts</literal>.</para> + </listitem> + <listitem> + <para>The HaXml libraries in the + <literal>text</literal> package.</para> + </listitem> + <listitem> + <para>In the <literal>util</literal> package, the + modules <literal>MD5</literal>, + <literal>Select</literal>, <literal>Memo</literal>, + <literal>Observe</literal>, and + <literal>Readline</literal>.</para> + </listitem> + </itemizedlist> + + <para>All other libraries from <literal>hslibs</literal> + either have equivalents in the new libraries (see the + <literal>hslibs</literal> docs for details), or were + already deprecated and hence were not moved into the new + hierarchy.</para> + </listitem> + </itemizedlist> + </listitem> + + <listitem> + <para>The <literal>Read</literal> class is now based on a + parsing combinator library which is vastly more efficient than + the previous one. See the modules + <literal>Text.Read</literal>. + <literal>Text.ParserCombinators.ReadP</literal>, and + <literal>Text.ParserCombinators.ReadPrec</literal> in the + library documentation.</para> + + <para>The code generated by the compiler for derived + <literal>Read</literal> instances should be much shorter than + before.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>New experimental features</title> + <itemizedlist> + <listitem> + <para>Linear implicit parameters. See <xref + linkend="linear-implicit-parameters">.</para> + </listitem> + <listitem> + <para>The RTS has support for running in a multi-threaded + environment and making non-blocking (from Haskell's point of + view) calls to foreign C functions which would normally block. + To enable this behaviour, configure with the + <option>--enable-threaded-rts</option> option.</para> + </listitem> + <listitem> + <para>The compiler can now read in files containing Core + syntax (such as those produced by the + <option>-fext-core</option> option) and compile them. Input + files with the <literal>.hcr</literal> file extension are + assumed to contain Core syntax.</para> + </listitem> + </itemizedlist> + </sect2> + + <sect2> + <title>Internal changes</title> + <itemizedlist> + <listitem> + <para>Happy 1.13 is now required to build GHC, because of the + change in names of certain libraries.</para> + </listitem> + </itemizedlist> + </sect2> + +</sect1> + +<!-- Emacs stuff: + ;;; Local Variables: *** + ;;; mode: xml *** + ;;; sgml-parent-document: ("users_guide.xml" "book" "chapter" "sect1") *** + ;;; End: *** + --> |