1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-6">
3 <title>Release notes for version 6.6</title>
6 <title>User-visible compiler changes</title>
11 when you compile with <option>-threaded</option>, you now get
12 an RTS flag <option>-N</option> that allows you to specify the
13 number of OS threads that GHC should use. Defaults to 1.
14 See <xref linkend="using-smp" /> and <xref
15 linkend="lang-parallel" />.
20 GHC now handles impredicative polymorphism; see <xref linkend="impredicative-polymorphism" />.
25 There are significant changes to the way scoped type variables work,
26 and some programs that used to compile may no longer do so.
27 The new story is documented in <xref linkend="scoped-type-variables" />.
28 (<ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
29 gives some background, but the user manual should be complete (tell
31 certainly takes precedence if there is any conflict.)
36 GHC now supports bang patterns to require a function is strict
37 in a given argument, e.g.
39 f (!x, y) = [x,y]</programlisting>
42 f (x, y) | x `seq` False = undefined
43 | otherwise = [x,y]</programlisting>
44 See <xref linkend="bang-patterns" /> for more details.
49 The restriction that you cannot use two packages together if
50 they contain a module with the same name has been removed.
51 In implementation terms, the package name is now included in
52 every exported symbol name in the object file, so that
53 modules with the same name in different packages do not
54 clash. See <xref linkend="package-overlaps" />.
59 GHC now treats source files as UTF-8 (ASCII is a strict
60 subset of UTF-8, so ASCII source files will continue to
61 work as before). However, invalid UTF-8 sequences are
62 ignored in comments, so ASCII code with comments in, for
63 example, Latin-1 will also work.
67 A way to have Latin-1 source files pre-processed by GHC is
68 described in <xref linkend="pre-processor" />.
73 GADTs can now use record syntax. Also, if the datatype could
74 have been declared with Haskell 98 syntax then deriving
75 clauses are permitted. For more info see <xref linkend="gadt" />.
80 There is a new pragma <literal>LANGUAGE</literal> which allows
81 extensions to be specified portably, i.e. without having to
82 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
83 GHC-specific options. The arguments to the pragma are the same
84 extensions that Cabal knows about. More info in
85 <xref linkend="language-pragma" />.
90 When you use <command>ghc --make</command>, GHC will now take
91 the executable filename from the name of the file containing
92 the <literal>Main</literal> module rather than using
93 <filename>a.out</filename>. The <filename>.exe</filename>
94 extension is appended on Windows, and it can of course be
95 overridden with <option>-o</option>.
100 GHC's garbage collector now deals more intelligently with
101 mutable data, so you mostly no longer need to worry about GC
102 performance when a lot of memory is taken up by
103 <literal>STArray</literal>s, <literal>IOArray</literal>s,
104 <literal>STRef</literal>s or <literal>IORef</literal>s.
106 <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
111 GHC now allows more generalisation when typing mutually
112 recursive bindings, resulting in more programs being accepted.
113 See <xref linkend="typing-binds" /> for more details.
118 The rules for instance declarations have been further relaxed.
119 You are now permitted to have instances whose heads contain
120 only type variables, e.g.
122 instance C a</programlisting>
123 and instances whose constraints are not only type variables,
126 instance C2 Int a => C3 [a] b</programlisting>
127 For more details, see <xref linkend="instance-rules" />.
132 The following flags (and, where appropriate, their inverses)
133 used to be static (can only be given on
134 the command line) but are now dynamic (can also be given in
135 a <literal>GHC_OPTIONS</literal> pragma or with
136 <literal>:set</literal> in GHCi):
138 <option>-hcsuf</option>,
139 <option>-hidir</option>,
140 <option>-hisuf</option>,
142 <option>-odir</option>,
143 <option>-ohi</option>,
144 <option>-osuf</option>,
145 <option>-keep-hc-file</option>,
146 <option>-keep-s-file</option>,
147 <option>-keep-raw-s-file</option>,
148 <option>-keep-tmp-files</option>,
149 <option>-tmpdir</option>,
151 <option>-package</option>,
152 <option>-hide-package</option>,
153 <option>-ignore-package</option>,
154 <option>-package-conf</option>,
155 <option>-no-user-package-conf</option>,
156 <option>-fcontext-stack</option>,
157 <option>-fexcess-precision</option>,
158 <option>-fignore-asserts</option>,
159 <option>-fignore-interface-pragmas</option>,
161 <option>-framework</option>,
162 <option>-framework-path</option>,
165 <option>-main-is</option>,
166 <option>-no-hs-main</option>,
167 <option>-split-objs</option>,
168 <option>-pgmL</option>,
169 <option>-pgmP</option>,
170 <option>-pgmc</option>,
171 <option>-pgma</option>,
172 <option>-pgml</option>,
173 <option>-pgmdll</option>,
174 <option>-pgmF</option>,
175 <option>-optl</option>,
176 <option>-optdll</option>,
177 <option>-optdep</option>,
178 <option>-fno-asm-mangling</option>.
179 See <xref linkend="static-dynamic-flags" /> for more on
180 the meaning of static and dynamic flags, and
181 <xref linkend="flag-reference" /> for more on the flags
187 There is a new flag <option>-x</option> for overriding the
188 default behaviour for source files; see
189 <xref linkend="overriding-suffixes" /> details.
195 <option>-no-recomp</option><indexterm><primary><option>-no-recomp</option></primary></indexterm>
197 <option>-fforce-recomp</option><indexterm><primary><option>-fforce-recomp</option></primary></indexterm>.
198 (the old name is still accepted for backwards compatibility,
199 but will be removed in the future).
204 The <option>-fglobalise-toplev-names</option>
205 flag has been removed.
210 The <option>-fallow-overlapping-instances</option> flag is
211 implied by the <option>-fallow-incoherent-instances</option>
217 The directory that the <filename>foo_stub.c</filename> and
218 <filename>foo_stub.h</filename> files are put in can now be
219 controlled with the <option>-stubdir</option> flag.
220 See <xref linkend="options-output" /> for more details.
225 When the <option>-fno-implicit-prelude</option> is given,
226 the equality test performed when pattern matching against an
227 overloaded numeric literal now uses the
228 <literal>(==)</literal> in scope, rather than the one from
229 <literal>Prelude</literal>. Likewise, the subtraction and
230 inequality test performed when pattern matching against
231 <literal>n+k</literal> patterns uses the
232 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
237 Another change to <option>-fno-implicit-prelude</option>:
238 with the exception of the arrow syntax, the types of
239 functions used by sugar (such as do notation, numeric
240 literal patterns) need not match the types of the
241 <literal>Prelude</literal> functions normally used.
246 The <literal>InstalledPackageInfo</literal> syntax has
248 instead of <literal>extra-libs</literal> we have
249 <literal>extra-libraries</literal>,
250 instead of <literal>extra-hugs-opts</literal> we have
251 <literal>hugs-options</literal>,
252 instead of <literal>extra-cc-opts</literal> we have
253 <literal>cc-options</literal>,
254 instead of <literal>extra-ld-opts</literal> we have
255 <literal>ld-options</literal>,
256 and instead of <literal>extra-frameworks</literal> we have
257 <literal>frameworks</literal>.
258 See <xref linkend="installed-pkg-info" /> for details.
263 If you <literal>newtype</literal> the IO monad, e.g.
265 newtype MyIO a = MyIO (IO a)</programlisting>
266 then GHC will now allow you to have FFI calls return
267 <literal>MyIO <replaceable>t</replaceable></literal>
269 <literal>IO <replaceable>t</replaceable></literal>.
270 See <xref linkend="ffi-newtype-io"/>
273 <listitem> <para> GHC's mechansim for deriving user-defined classes
274 for newtypes has been further generalised, to multi-parameter type
275 classes and higher-kinded types. See <xref
276 linkend="newtype-deriving"/>.
280 By default, pattern bindings in GHC are now monomorphic.
281 This means that some valid Haskell 98 programs will get
282 rejected, but we believe they will be few in number.
283 To revert to the old behaviour use the
284 <option>-fno-mono-pat-binds</option> flag.
285 More details are in <xref linkend="options-language" />.
290 GHCi already does more defaulting than Haskell 98 so that, for
291 example, <literal>reverse []</literal> shows a result rather
292 than giving an ambiguous type variable error. There is now a
293 flag <option>-fextended-default-rules</option> to use these
294 defaulting rules with GHC too.
295 More details are in <xref linkend="extended-default-rules" />.
300 You can now give both class and instance declarations in
301 <filename>.hs-boot</filename> files. More details in
302 <xref linkend="mutual-recursion" />.
307 Linear implicit parameters have been scheduled for removal for some
308 time. In 6.6 we've removed them from the user manual, and they may
309 well disappear from the compiler itself in 6.6.1.
314 If the program is idle for a certain amount of time then GHC
315 will now take the opportunity to do a major garbage collection.
316 The amount of idle time that is required before that happens
317 is controlled by the new <literal>-I</literal> RTS flag.
318 There is more detail in <xref linkend="rts-options-gc" />.
323 It is now possible to control the frequency that the RTS clock
324 ticks at with the new <literal>-V</literal> RTS flag. This is
325 normally handled automatically by other flags, but this flag
326 is needed if you want to increase the resolution of the time
328 For more details see <xref linkend="rts-options-misc" />.
333 The old syntax for FFI declarations (deprecated since 5.04)
334 is no longer accepted.
339 The <option>-split-objs</option> flag, which when used to compile
340 libraries means executables using the library will be smaller,
341 can now be used with <option>--make</option> and hence
342 can be used by cabal.
343 See <xref linkend="options-linker" /> for more information.
348 Template Haskell used to have limited support for type signatures in
349 patterns, but since that design is in flux for Haskell (let alone
350 Template Haskell), we've removed type signatures in patterns from
356 GHC now supports postfix operators, as a simple generalisation of
357 left sections (<xref linkend="postfix-operators"/>).
362 Parallel arrays, as enabled by <literal>-fparr</literal>, no
363 longer work. They'll be coming back shortly, in full glory.
370 <title>GHCi changes</title>
375 GHCi now allows tab completion of in-scope names and modules
376 on platforms that use readline (i.e. not Windows).
381 GHCi now has a <literal>:main</literal> command that allows
382 you to call the <literal>main</literal> function with
383 command-line arguments.
384 See <xref linkend="ghci-commands" /> for more information.
389 GHCi now has <literal>:ctags</literal> and
390 <literal>:etags</literal> commands to generate tags files for
391 vi-style and emacs-style editors respectively.
392 See <xref linkend="ghci-commands" /> for more information.
397 GHCi now has an <literal>:edit</literal> command which pops
398 up an editor on the most recently loaded file, or a
399 specified file. See <xref linkend="ghci-commands" /> for
405 GHCi now invokes <literal>print</literal> by default on the
406 result of IO actions and bindings at the prompt. This is
407 occasionally not what you want, so it can be disabled (at
408 least for bindings) with
409 <literal>:set -fno-print-bind-result</literal>. See <xref
410 linkend="ghci-stmts" />.</para>
416 <title>Libraries</title>
418 Libraries are now divided into core libraries (those that are
419 necessary to build GHC) and extra libraries. Decoupling the extra
420 libraries means that they can release independently of GHC
421 releases, and makes development builds of GHC quicker as they no
422 longer need to build unnecessary libraries.
426 The hslibs libraries have finally been removed.
431 <title>Core Libraries</title>
437 Version number 2.1 (was 1.0).
442 We now have <literal>Read</literal> and
443 <literal>Show</literal> instances for up to 15-tuples (used
444 to be up to 5-tuples).
449 New module <literal>Control.Applicative</literal> that
450 describes a structure intermediate between a functor and
451 a monad: it provides pure expressions and sequencing, but
457 <literal>Control.Exception</literal> now exports
458 <literal>bracketOnError</literal>, which behaves like
459 <literal>bracket</literal> but only runs the final
460 action if the main action raised an error.
465 There is a new module
466 <literal>Control.Monad.Instances</literal> which
467 provides <literal>Monad</literal> and
468 <literal>Functor</literal> instances for
469 <literal>((->) r)</literal> (were in
470 <literal>mtl</literal>'s
471 <literal>Control.Monad.Reader</literal>),
472 a <literal>Functor</literal> instance for
473 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
474 <literal>Control.Monad.Error</literal>) and a
475 <literal>Functor</literal> instance for
476 <literal>((,) a)</literal> (new).
481 The <literal>MonadFix</literal> instance for
482 <literal>((->) r)</literal> is now in
483 <literal>Control.Monad.Fix</literal> (was in
484 <literal>mtl</literal>'s
485 <literal>Control.Monad.Reader</literal>).
490 <literal>Control.Monad.ST</literal> now exports
491 <literal>unsafeSTToIO</literal>.
496 The <literal>HasBounds</literal> class has been removed from
497 <literal>Data.Array.Base</literal>, and its
498 <literal>bounds</literal> method is now in the
499 <literal>IArray</literal> class. The
500 <literal>MArray</literal> class
501 has also gained a method <literal>getBounds</literal>.
506 <literal>Data.Array.Base</literal> now provides an
507 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
513 <literal>Data.Array.Storable</literal> now exports a
514 function <literal>unsafeForeignPtrToStorableArray</literal>.
519 The new <literal>Data.ByteString</literal> hierarchy
520 provides time and space-efficient byte vectors.
521 The old <literal>Data.PackedString</literal> module is now
522 deprecated as a result, although there is not yet a
523 replacement if you need full unicode support.
528 <literal>GHC.Exts</literal> now provides a function
529 <literal>inline</literal> which, provided the RHS is visible
530 to the compiler, forcibly inlines its argument.
531 Otherwise, it acts like <literal>id</literal>.
532 For more details, see <xref linkend="special-ids" />.
537 <literal>GHC.Exts</literal> now provides a function
538 <literal>lazy</literal>, where <literal>lazy f</literal>
539 behaves like <literal>f</literal>, except GHC is forced
540 to believe that it is lazy in its first argument.
541 For more details, see <xref linkend="special-ids" />.
546 <literal>Data.FiniteMap</literal> has been removed
547 (deprecated since 6.4). Use <literal>Data.Map</literal>
553 <literal>Data.Char</literal> now exports
554 <literal>isLetter</literal>,
555 <literal>isMark</literal>,
556 <literal>isNumber</literal>,
557 <literal>isPunctuation</literal>,
558 <literal>isSymbol</literal>,
559 <literal>isSeparator</literal>,
560 <literal>isAsciiUpper</literal>,
561 <literal>isAsciiLower</literal> and
562 <literal>toTitle</literal>.
563 It also exports a function
564 <literal>generalCategory</literal> that tells you the
565 category of a character in terms of a datatype
566 <literal>GeneralCategory</literal>.
571 <literal>Data.Dynamic</literal> now exports a function
572 <literal>dynTypeRep</literal>.
577 There is a new module <literal>Data.Eq</literal> which
578 just exports the <literal>Eq</literal> class.
579 Likewise, a new module <literal>Data.Ord</literal>
580 exports the <literal>Ord</literal> class, as well as the
581 handy <literal>comparing</literal> function.
586 There is a new module <literal>Data.Fixed</literal>
587 providing fixed-precision arithmetic.
592 There is a new module <literal>Data.Foldable</literal>
593 providing a class for foldable datatypes. It gives instances
594 for <literal>Maybe</literal>, <literal>[]</literal> and
595 <literal>Array i</literal>.
600 There is a new module <literal>Data.Traversable</literal>
601 providing a class for data structures that can be traversed
602 from left to right. It gives instances
603 for <literal>Maybe</literal>, <literal>[]</literal> and
604 <literal>Array i</literal>.
609 <literal>Data.FunctorM</literal> has been deprecated;
610 use <literal>Data.Foldable</literal> and
611 <literal>Data.Traversable</literal> instead.
616 The <literal>toConstr</literal> definitions for tuples in
617 <literal>Data.Generics.Instances</literal> now actually
618 evaluate their arguments to tuples before returning
624 <literal>Data.IntMap</literal> now exports
625 <literal>notMember</literal>,
626 <literal>alter</literal>,
627 <literal>mapMaybe</literal>,
628 <literal>mapMaybeWithKey</literal>,
629 <literal>mapEither</literal> and
630 <literal>mapEitherWithKey</literal>.
631 It also has <literal>Monoid</literal>,
632 <literal>Foldable</literal> and <literal>Read</literal>
638 <literal>Data.IntSet</literal> now exports
639 <literal>notMember</literal>. It also has
640 <literal>Monoid</literal> and <literal>Read</literal>
646 <literal>Data.Map</literal> now exports
647 <literal>notMember</literal>,
648 <literal>alter</literal>,
649 <literal>mapMaybe</literal>,
650 <literal>mapMaybeWithKey</literal>,
651 <literal>mapEither</literal>,
652 <literal>mapEitherWithKey</literal>,
653 <literal>minView</literal> and
654 <literal>maxView</literal>.
655 It also has <literal>Monoid</literal>,
656 <literal>Traversable</literal>, <literal>Foldable</literal>
657 and <literal>Read</literal> instances.
662 <literal>Data.Set</literal> now exports
663 <literal>notMember</literal>,
664 <literal>minView</literal> and
665 <literal>maxView</literal>.
666 It also has <literal>Monoid</literal>,
667 <literal>Foldable</literal>
668 and <literal>Read</literal> instances.
672 The old, deprecated (since 6.4) interface consisting of
673 <literal>emptySet</literal>,
674 <literal>mkSet</literal>,
675 <literal>setToList</literal>,
676 <literal>unitSet</literal>,
677 <literal>elementOf</literal>,
678 <literal>isEmptySet</literal>,
679 <literal>cardinality</literal>,
680 <literal>unionManySets</literal>,
681 <literal>minusSet</literal>,
682 <literal>mapSet</literal>,
683 <literal>intersect</literal>,
684 <literal>addToSet</literal> and
685 <literal>delFromSet</literal> has been removed.
690 <literal>Data.Monoid</literal> no longer contains the
691 <literal>Monoid</literal>
692 instances for <literal>Map</literal>,
693 <literal>IntMap</literal>, <literal>Set</literal> and
694 <literal>IntSet</literal>. They have been moved to their own
695 modules, as above. The <literal>(a -> a)</literal> instance
696 has been replaced with a
697 <literal>Monoid b => Monoid (a -> b)</literal> instance.
698 The module also now exports
699 <literal>Dual</literal>,
700 <literal>Endo</literal>,
701 <literal>All</literal>,
702 <literal>Any</literal>,
703 <literal>Sum</literal> and
704 <literal>Product</literal> types, and
705 <literal>Monoid</literal> instances for them.
710 There is a new module <literal>Data.Sequence</literal>
711 for finite sequences. The <literal>Data.Queue</literal>
712 module is now deprecated in favour of this faster, more
713 featureful replacement.
718 <literal>Data.Tree</literal> now has
719 <literal>Data</literal>, <literal>Typeable</literal>,
720 <literal>Traversable</literal> and
721 <literal>Foldable</literal>
723 <literal>Tree</literal> datatype.
728 <literal>Data.Typeable</literal> now uses
729 <option>-fallow-overlapping-instances</option>, so the
730 generic instances can be overriden for your own datatypes.
735 <literal>Debug.Trace</literal> now exports
736 <literal>traceShow</literal>, which is the same as
737 <literal>trace</literal> except its first argument can be
738 any showable thing rather than being required to be a
744 <literal>Foreign.C.Types</literal> now also defines
745 <literal>CIntPtr</literal>,
746 <literal>CUIntPtr</literal>,
747 <literal>CIntMax</literal> and
748 <literal>CUIntMax</literal>.
753 <literal>Foreign.ForeignPtr</literal> now exports
754 <literal>FinalizerEnvPtr</literal>,
755 <literal>newForeignPtrEnv</literal> and
756 <literal>addForeignPtrFinalizerEnv</literal>.
757 Together, these allow the use of finalizers which are passed
758 an additional environment parameter.
763 <literal>Foreign.Marshal.Utils</literal> no longer exports
764 the <literal>withObject</literal> function, deprecated since
765 5.04; use <literal>with</literal> instead.
770 Foreign.Ptr now also defines
771 <literal>IntPtr</literal>,
772 <literal>ptrToIntPtr</literal>,
773 <literal>intPtrToPtr</literal>,
774 <literal>WordPtr</literal>,
775 <literal>ptrToWordPtr</literal> and
776 <literal>wordPtrToPtr</literal>.
781 There are now <literal>Bounded</literal> instances for up to
782 15-tuples (used to be up to 4-tuples).
787 The <literal>Text.Html</literal> and
788 <literal>Text.Html.BlockTable</literal> modules have now
789 been removed, with the new <literal>html</literal> and
790 <literal>xhtml</literal> packages providing replacements.
795 <literal>Text.Read</literal> now exports a function
796 <literal>parens</literal> which parses a value in an
797 arbitrary number of parentheses.
802 The <literal>ForeignPtr</literal> datatype has been altered
803 to make it more efficient. There are also new functions
804 <literal>mallocPlainForeignPtr</literal> and
805 <literal>mallocPlainForeignPtrBytes</literal> which
806 do not allow you to attach a finalizer to the
807 <literal>ForeignPtr</literal>.
812 The <literal>Text.Regex</literal> and
813 <literal>Text.Regex.Posix</literal> modules have been removed.
814 Instead, use the new <literal>regex-compat</literal> package
815 for a drop-in <literal>Text.Regex</literal> replacement, or
816 the new library in the new <literal>regex-posix</literal>
828 Version number 1.1.6 (was 1.1.4).
833 Support for JHC, symmetric to the support for the other
834 implementations, has been added throughout.
839 Support for object splitting and building in-place
840 has been added throughout.
845 Added a <filename>debianTemplate</filename> directory with
846 templates for building Debian packages from Cabal packages.
851 There are now modules
852 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
853 for each of <literal>GHC</literal>, <literal>NHC</literal>,
854 <literal>Hugs</literal> and <literal>JHC</literal>.
855 The <literal>Distribution.Simple.Build</literal> and
856 <literal>Distribution.Simple.Install</literal> modules have
857 shrunk correspondingly.
862 <literal>Distribution.GetOpt</literal> is no longer a
868 <literal>Distribution.Simple</literal> exports a function
869 <literal>defaultMainArgs</literal>, which is identical to
870 <literal>defaultMain</literal> except that the arguments are
871 given as a list of strings rather than being retrieved with
872 <literal>getArgs</literal>.
877 <literal>Distribution.Simple.Configure</literal>
879 <literal>LocalBuildInfo</literal>,
881 <literal>configDependency</literal> and
882 <literal>configCompilerAux</literal>.
887 <literal>Distribution.Simple.LocalBuildInfo</literal> now
888 exports <literal>mkHaddockDir</literal>,
889 <literal>distPref</literal>,
890 <literal>srcPref</literal>,
891 <literal>autogenModulesDir</literal> and
892 <literal>mkIncludeDir</literal>.
897 <literal>Distribution.PackageDescription</literal> now
898 exports <literal>haddockName</literal>.
903 <literal>Distribution.Simple.Utils</literal> now exports
904 <literal>copyDirectoryRecursiveVerbose</literal>,
905 <literal>dirOf</literal>,
906 <literal>distPref</literal>,
907 <literal>haddockPref</literal> and
908 <literal>srcPref</literal>.
909 It no longer exports <literal>mkGHCiLibName</literal>.
916 <title>haskell98</title>
920 No change (version 1.0).
927 <title>parsec</title>
931 Version number 2.0 (was 1.0).
943 <title>readline</title>
947 No change (version 1.0).
954 <title>regex-base</title>
963 New library that provides common functions for different
971 <title>regex-compat</title>
980 New package providing a replacement
981 <literal>Text.Regex</literal> module.
988 <title>regex-posix</title>
997 A new package providing POSIX regexes.
1008 Version number 2.1 (was 1.0).
1013 A new module <literal>Control.Monad.STM</literal>
1015 <literal>MonadPlus</literal> instance for
1016 <literal>STM</literal> and the function
1017 <literal>check</literal> (both used to be in
1018 <literal>Control.Concurrent.STM</literal>).
1020 <literal>STM</literal>,
1021 <literal>atomically</literal>,
1022 <literal>retry</literal>,
1023 <literal>orElse</literal> and
1024 <literal>catchSTM</literal>.
1030 <literal>Control.Concurrent.STM.TArray</literal> defines
1031 <literal>TArray</literal>, a transactional array, and makes
1032 it an instance of <literal>MArray</literal>.
1037 <literal>Control.Concurrent.STM.TChan</literal> now provides
1038 a function <literal>newTChanIO</literal>, which allows
1039 <literal>TChan</literal>s to be created in the IO monad.
1040 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1041 provides <literal>newTMVarIO</literal> and
1042 <literal>newEmptyTMVarIO</literal>, and
1043 <literal>Control.Concurrent.STM.TVar</literal> exports
1044 <literal>newTVarIO</literal>.
1049 <literal>Control.Concurrent.STM.TVar</literal> exports
1050 <literal>registerDelay</literal>.
1055 The <literal>Control.Concurrent.STM</literal> module has been
1056 updated to re-export all the new modules.
1063 <title>template-haskell</title>
1067 Version number 2.0 (was 1.0).
1072 A <literal>Show</literal> instance is now derived for
1073 <literal>Info</literal>, <literal>Fixity</literal> and
1074 <literal>FixityDirection</literal> in
1075 <literal>Language.Haskell.TH.Syntax</literal>.
1080 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1081 a type <literal>PkgName</literal> and functions
1082 <literal>mkPkgName</literal> and
1083 <literal>pkgString</literal>
1084 for dealing with package names.
1089 The <literal>patGE</literal> function in
1090 <literal>Language.Haskell.TH.Lib</literal> now takes the
1091 final expression separately to the list of statements
1092 rather than splitting it off itself.
1103 No change (version 1.0).
1110 <title>Win32</title>
1114 Version number 2.1 (was 1.0).
1119 Now maintained by Esa Ilari Vuokko.
1124 There is a new module
1125 <literal>System.Win32.Console</literal>
1126 providing an interface to the Windows Console API.
1131 There is a new module
1132 <literal>System.Win32.DebugApi</literal>
1133 providing an interface to the Windows DebugApi.
1138 There is a new module
1139 <literal>System.Win32.FileMapping</literal>
1140 for working with memory-mapped files.
1145 There is a new module
1146 <literal>System.Win32.SimpleMAPI</literal>
1147 for using the Windows mail API.
1152 There is a new module
1153 <literal>System.Win32.Time</literal>
1154 for using the Windows time API.
1159 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1160 <literal>Graphics.Win32.Misc</literal> to
1161 <literal>System.Win32.Types</literal>.
1166 <literal>System.Win32.File</literal> has a new
1167 function <literal>getFileInformationByHandle</literal>
1168 and associated data types.
1173 <literal>System.Win32.Info</literal> has a new
1174 function <literal>getSystemInfo</literal> and associated
1180 <literal>System.Win32.Process</literal> now has many more
1186 <literal>System.Win32.Types</literal> has new types
1187 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1188 and <literal>SIZE_T</literal>. It also has new helper
1189 functions <literal>ddwordToDwords</literal> and
1190 <literal>dwordsToDdword</literal> to split and combine
1191 ddwords into high and low components.
1196 <literal>System.Win32</literal> re-exports
1197 <literal>System.Win32.FileMapping</literal>,
1198 <literal>System.Win32.Time</literal>
1199 and <literal>System.Win32.Console</literal>.
1207 <title>Extra Libraries</title>
1213 Version number 2.0 (was 1.0).
1218 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1219 Its <literal>Phase</literal> and <literal>Duration</literal>
1220 exports are now exported by
1221 <literal>Sound.ALUT.Loaders</literal> and its
1222 <literal>helloWorld</literal>,
1223 <literal>sine</literal>,
1224 <literal>square</literal>,
1225 <literal>sawtooth</literal>,
1226 <literal>impulse</literal> and
1227 <literal>whiteNoise</literal>
1228 exports are now constructors of the
1229 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1237 <title>arrows</title>
1241 Version number 0.2 (was 0.1).
1246 <literal>Control.Sequence</literal> has been removed in
1247 favour of the new <literal>Control.Applicative</literal>
1248 module in <literal>base</literal>.
1264 <literal>cgi</literal> is a new package, developing on
1265 what used to be <literal>Network.CGI</literal> in the
1266 <literal>network</literal> package.
1271 The <literal>Network.CGI.Compat</literal> module provides
1272 a similar interface to the old <literal>Network.CGI</literal>
1273 module, but it uses <literal>Text.XHtml</literal> rather than
1274 <literal>Text.Html</literal>.
1285 Version number 5.3 (was 5.2).
1290 <literal>Data.Graph.Inductive.Graph</literal> no longer
1291 exports <literal>UContext</literal>.
1296 <literal>Data.Graph.Inductive.Graph</literal> now exports
1297 <literal>delLEdge</literal>.
1308 Version number remains 2.0.
1313 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1314 <literal>DisplayMode</literal> has a new constructor
1315 <literal>WithAuxBuffers</literal> and
1316 <literal>DisplayCapability</literal> has a new constructor
1317 <literal>DisplayAux</literal>. These represent freeglut-only
1323 There are new examples in
1324 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1325 <filename>RedBook/AAIndex.hs</filename>,
1326 <filename>RedBook/AARGB.hs</filename>,
1327 <filename>RedBook/AccAnti.hs</filename>,
1328 <filename>RedBook/AccPersp.hs</filename>,
1329 <filename>RedBook/Alpha3D.hs</filename>,
1330 <filename>RedBook/DOF.hs</filename>,
1331 <filename>RedBook/FogIndex.hs</filename>,
1332 <filename>RedBook/Multisamp.hs</filename>,
1333 <filename>RedBook/PointP.hs</filename>,
1334 <filename>RedBook/PolyOff.hs</filename>,
1335 <filename>RedBook/Stencil.hs</filename>,
1336 <filename>RedBook/Stroke.hs</filename> and
1337 <filename>RedBook/Torus.hs</filename>,
1339 <filename>RedBook/Font.hs</filename> and
1340 <filename>RedBook/Histogram.hs</filename> have been
1348 <title>haskell-src</title>
1352 No change (version 1.0).
1363 No change (version 3.1).
1379 <literal>html</literal> is a new package, developing on
1380 what used to be <literal>Text.Html</literal> and
1381 <literal>Text.Html.BlockTable</literal> in the
1382 <literal>base</literal> package.
1387 <literal>Text.Html.BlockTable</literal> exports a new
1388 function <literal>empty</literal>.
1395 <title>HUnit</title>
1399 No change (version 1.1).
1410 No change (version 1.0).
1417 <title>network</title>
1421 Version number 2.0 (was 1.0).
1426 <literal>Network.CGI</literal> has been removed; use the
1427 <literal>cgi</literal> package instead.
1432 <literal>Network.BSD</literal> no longer exports
1433 <literal>symlink</literal> or <literal>readlink</literal>;
1435 <literal>System.Posix.Files.createSymbolicLink</literal> and
1436 <literal>System.Posix.Files.readSymbolicLink</literal>
1442 <literal>Network.BSD</literal> now exports
1443 <literal>defaultProtocol</literal>.
1448 <literal>Network.Socket.SocketStatus</literal> now has a
1449 constructor <literal>ConvertedToHandle</literal> for sockets
1450 that have been converted to handles.
1455 <literal>Network.Socket.Family</literal> now has the
1456 following additional constructors:
1457 <literal>AF_NETROM</literal>,
1458 <literal>AF_BRIDGE</literal>,
1459 <literal>AF_ATMPVC</literal>,
1460 <literal>AF_ROSE</literal>,
1461 <literal>AF_NETBEUI</literal>,
1462 <literal>AF_SECURITY</literal>,
1463 <literal>AF_PACKET</literal>,
1464 <literal>AF_ASH</literal>,
1465 <literal>AF_ECONET</literal>,
1466 <literal>AF_ATMSVC</literal>,
1467 <literal>AF_IRDA</literal>,
1468 <literal>AF_PPPOX</literal>,
1469 <literal>AF_WANPIPE</literal> and
1470 <literal>AF_BLUETOOTH</literal>.
1475 In <literal>Network.URI</literal>,
1476 <literal>parseabsoluteURI</literal> has been deprecated with
1477 a new function <literal>parseAbsoluteURI</literal> taking
1485 <title>ObjectIO</title>
1489 No change (version 1.0).
1496 <title>OpenAL</title>
1500 Version number 1.3 (was 1.2).
1512 <title>OpenGL</title>
1516 Version number 2.1 (was 2.0).
1528 <title>QuickCheck</title>
1532 No change (version 1.0).
1548 <literal>time</literal> is a new package, for dealing with
1549 dates, times and time intervals.
1560 Version number 1.2 (was 1.1).
1565 In <literal>Graphics.X11.Xlib.Types</literal>,
1566 <literal>XGCValues</literal> has been renamed
1567 <literal>GCValues</literal> and
1568 <literal>XSetWindowAttributes</literal> has been renamed
1569 <literal>SetWindowAttributes</literal>.
1574 In <literal>Graphics.X11.Xlib.Misc</literal>,
1575 <literal>allocaXSetWindowAttributes</literal> has been
1576 renamed <literal>allocaSetWindowAttributes</literal>.
1581 The <literal>FontStruct</literal> type has moved from
1582 <literal>Graphics.X11.Xlib.Types</literal> to
1583 <literal>Graphics.X11.Xlib.Font</literal>.
1589 <literal>Point</literal>,
1590 <literal>Rectangle</literal>,
1591 <literal>Arc</literal>,
1592 <literal>Segment</literal> and
1593 <literal>Color</literal> types in
1594 <literal>Graphics.X11.Xlib.Types</literal>
1595 are now proper datatypes rather than synonyms for tuples.
1596 They all have a <literal>Storable</literal> instance.
1601 The <literal>Byte</literal> and <literal>Short</literal>
1602 types from <literal>Graphics.X11.Xlib.Types</literal> have
1604 The following type synonyms, which had already been marked
1605 "Backwards compatibility", have also been removed:
1606 <literal>ListPoint</literal>,
1607 <literal>ListRectangle</literal>,
1608 <literal>ListArc</literal>,
1609 <literal>ListSegment</literal> and
1610 <literal>ListColor</literal>.
1615 <literal>Eq</literal>,
1616 <literal>Ord</literal>,
1617 <literal>Show</literal>,
1618 <literal>Typeable</literal> and
1619 <literal>Data</literal> are now derived for:
1620 <literal>XEvent</literal>,
1621 <literal>FdSet</literal> and
1622 <literal>TimeZone</literal> in
1623 <literal>Graphics.X11.Xlib.Event</literal>,
1624 <literal>FontStruct</literal> in
1625 <literal>Graphics.X11.Xlib.Font</literal>,
1626 <literal>XErrorEvent</literal>,
1627 <literal>XComposeStatus</literal> and
1628 <literal>XTextProperty</literal> in
1629 <literal>Graphics.X11.Xlib.Misc</literal>,
1630 <literal>Region</literal> in
1631 <literal>Graphics.X11.Xlib.Region</literal>,
1632 <literal>Display</literal>,
1633 <literal>Screen</literal>,
1634 <literal>Visual</literal>,
1635 <literal>GC</literal>,
1636 <literal>GCValues</literal>,
1637 <literal>SetWindowAttributes</literal>,
1638 <literal>Point</literal>,
1639 <literal>Rectangle</literal>,
1640 <literal>Arc</literal>,
1641 <literal>Segment</literal> and
1642 <literal>Color</literal> in
1643 <literal>Graphics.X11.Xlib.Types</literal>.
1650 <title>xhtml</title>
1659 <literal>xhtml</literal> is a new package, developing on
1660 what used to be <literal>Text.Html</literal> and
1661 <literal>Text.Html.BlockTable</literal> in the
1662 <literal>base</literal> package.
1670 <title>GHC As A Library</title>
1675 The internal modules of GHC are now available as a library, package
1676 name <literal>ghc</literal>.
1677 The interface has not been designed with use by other programs
1678 in mind, so expect the API to vary radically in future
1682 An introduction to using the library can be found
1683 <ulink url="http://www.haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1688 <title>Internal changes</title>
1692 GHC development now has its own integrated
1693 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1699 GHC has now moved to darcs. See
1701 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1702 wiki</ulink> for more details. The sources have moved around a
1703 bit within the tree as a result, most notably the GHC sources
1704 are no longer kept within a <filename>ghc/</filename>
1710 The native code generator is now capable of compiling loops,
1711 which gets us a big step closer to being able to compile
1712 entirely without gcc on well-supported arches.