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="sec-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="sec-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>-pgmdep</option>,
175 <option>-pgmF</option>,
176 <option>-optl</option>,
177 <option>-optdll</option>,
178 <option>-optdep</option>,
179 <option>-fno-asm-mangling</option>.
180 See <xref linkend="static-dynamic-flags" /> for more on
181 the meaning of static and dynamic flags, and
182 <xref linkend="flag-reference" /> for more on the flags
188 There is a new flag <option>-x</option> for overriding the
189 default behaviour for source files; see
190 <xref linkend="overriding-suffixes" /> details.
196 <option>-no-recomp</option><indexterm><primary><option>-no-recomp</option></primary></indexterm>
198 <option>-fforce-recomp</option><indexterm><primary><option>-fforce-recomp</option></primary></indexterm>.
199 (the old name is still accepted for backwards compatibility,
200 but will be removed in the future).
205 The <option>-fglobalise-toplev-names</option>
206 flag has been removed.
211 The <option>-fallow-overlapping-instances</option> flag is
212 implied by the <option>-fallow-incoherent-instances</option>
218 The directory that the <filename>foo_stub.c</filename> and
219 <filename>foo_stub.h</filename> files are put in can now be
220 controlled with the <option>-stubdir</option> flag.
221 See <xref linkend="options-output" /> for more details.
226 When the <option>-fno-implicit-prelude</option> is given,
227 the equality test performed when pattern matching against an
228 overloaded numeric literal now uses the
229 <literal>(==)</literal> in scope, rather than the one from
230 <literal>Prelude</literal>. Likewise, the subtraction and
231 inequality test performed when pattern matching against
232 <literal>n+k</literal> patterns uses the
233 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
238 Another change to <option>-fno-implicit-prelude</option>:
239 with the exception of the arrow syntax, the types of
240 functions used by sugar (such as do notation, numeric
241 literal patterns) need not match the types of the
242 <literal>Prelude</literal> functions normally used.
247 The <literal>InstalledPackageInfo</literal> syntax has
249 instead of <literal>extra-libs</literal> we have
250 <literal>extra-libraries</literal>,
251 instead of <literal>extra-hugs-opts</literal> we have
252 <literal>hugs-options</literal>,
253 instead of <literal>extra-cc-opts</literal> we have
254 <literal>cc-options</literal>,
255 instead of <literal>extra-ld-opts</literal> we have
256 <literal>ld-options</literal>,
257 and instead of <literal>extra-frameworks</literal> we have
258 <literal>frameworks</literal>.
259 See <xref linkend="installed-pkg-info" /> for details.
264 If you <literal>newtype</literal> the IO monad, e.g.
266 newtype MyIO a = MyIO (IO a)</programlisting>
267 then GHC will now allow you to have FFI calls return
268 <literal>MyIO <replaceable>t</replaceable></literal>
270 <literal>IO <replaceable>t</replaceable></literal>.
271 See <xref linkend="ffi-newtype-io"/>
274 <listitem> <para> GHC's mechansim for deriving user-defined classes
275 for newtypes has been further generalised, to multi-parameter type
276 classes and higher-kinded types. See <xref
277 linkend="newtype-deriving"/>.
281 By default, pattern bindings in GHC are now monomorphic.
282 This means that some valid Haskell 98 programs will get
283 rejected, but we believe they will be few in number.
284 To revert to the old behaviour use the
285 <option>-fno-mono-pat-binds</option> flag.
286 More details are in <xref linkend="options-language" />.
291 GHCi already does more defaulting than Haskell 98 so that, for
292 example, <literal>reverse []</literal> shows a result rather
293 than giving an ambiguous type variable error. There is now a
294 flag <option>-fextended-default-rules</option> to use these
295 defaulting rules with GHC too.
296 More details are in <xref linkend="extended-default-rules" />.
301 You can now give both class and instance declarations in
302 <filename>.hs-boot</filename> files. More details in
303 <xref linkend="mutual-recursion" />.
308 Linear implicit parameters have been scheduled for removal for some
309 time. In 6.6 we've removed them from the user manual, and they may
310 well disappear from the compiler itself in 6.6.1.
315 If the program is idle for a certain amount of time then GHC
316 will now take the opportunity to do a major garbage collection.
317 The amount of idle time that is required before that happens
318 is controlled by the new <literal>-I</literal> RTS flag.
319 There is more detail in <xref linkend="rts-options-gc" />.
324 It is now possible to control the frequency that the RTS clock
325 ticks at with the new <literal>-V</literal> RTS flag. This is
326 normally handled automatically by other flags, but this flag
327 is needed if you want to increase the resolution of the time
329 For more details see <xref linkend="rts-options-misc" />.
334 The old syntax for FFI declarations (deprecated since 5.04)
335 is no longer accepted.
340 The <option>-split-objs</option> flag, which when used to compile
341 libraries means executables using the library will be smaller,
342 can now be used with <option>--make</option> and hence
343 can be used by cabal.
344 See <xref linkend="options-linker" /> for more information.
349 Template Haskell used to have limited support for type signatures in
350 patterns, but since that design is in flux for Haskell (let alone
351 Template Haskell), we've removed type signatures in patterns from
357 GHC now supports postfix operators, as a simple generalisation of
358 left sections (<xref linkend="postfix-operators"/>).
363 Parallel arrays, as enabled by <literal>-fparr</literal>, no
364 longer work. They'll be coming back shortly, in full glory.
371 <title>GHCi changes</title>
376 GHCi now allows tab completion of in-scope names and modules
377 on platforms that use readline (i.e. not Windows).
382 GHCi now has a <literal>:main</literal> command that allows
383 you to call the <literal>main</literal> function with
384 command-line arguments.
385 See <xref linkend="ghci-commands" /> for more information.
390 GHCi now has <literal>:ctags</literal> and
391 <literal>:etags</literal> commands to generate tags files for
392 vi-style and emacs-style editors respectively.
393 See <xref linkend="ghci-commands" /> for more information.
398 GHCi now has an <literal>:edit</literal> command which pops
399 up an editor on the most recently loaded file, or a
400 specified file. See <xref linkend="ghci-commands" /> for
406 GHCi now invokes <literal>print</literal> by default on the
407 result of IO actions and bindings at the prompt. This is
408 occasionally not what you want, so it can be disabled (at
409 least for bindings) with
410 <literal>:set -fno-print-bind-result</literal>. See <xref
411 linkend="ghci-stmts" />.</para>
417 <title>Libraries</title>
419 Libraries are now divided into core libraries (those that are
420 necessary to build GHC) and extra libraries. Decoupling the extra
421 libraries means that they can release independently of GHC
422 releases, and makes development builds of GHC quicker as they no
423 longer need to build unnecessary libraries.
427 The hslibs libraries have finally been removed.
432 <title>Core Libraries</title>
438 Version number 2.0 (was 1.0).
443 We now have <literal>Read</literal> and
444 <literal>Show</literal> instances for up to 15-tuples (used
445 to be up to 5-tuples).
450 New module <literal>Control.Applicative</literal> that
451 describes a structure intermediate between a functor and
452 a monad: it provides pure expressions and sequencing, but
458 <literal>Control.Exception</literal> now exports
459 <literal>bracketOnError</literal>, which behaves like
460 <literal>bracket</literal> but only runs the final
461 action if the main action raised an error.
466 There is a new module
467 <literal>Control.Monad.Instances</literal> which
468 provides <literal>Monad</literal> and
469 <literal>Functor</literal> instances for
470 <literal>((->) r)</literal> (were in
471 <literal>mtl</literal>'s
472 <literal>Control.Monad.Reader</literal>),
473 a <literal>Functor</literal> instance for
474 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
475 <literal>Control.Monad.Error</literal>) and a
476 <literal>Functor</literal> instance for
477 <literal>((,) a)</literal> (new).
482 The <literal>MonadFix</literal> instance for
483 <literal>((->) r)</literal> is now in
484 <literal>Control.Monad.Fix</literal> (was in
485 <literal>mtl</literal>'s
486 <literal>Control.Monad.Reader</literal>).
491 <literal>Control.Monad.ST</literal> now exports
492 <literal>unsafeSTToIO</literal>.
497 The <literal>HasBounds</literal> class has been removed from
498 <literal>Data.Array.Base</literal>, and its
499 <literal>bounds</literal> method is now in the
500 <literal>IArray</literal> class. The
501 <literal>MArray</literal> class
502 has also gained a method <literal>getBounds</literal>.
507 <literal>Data.Array.Base</literal> now provides an
508 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
514 <literal>Data.Array.Storable</literal> now exports a
515 function <literal>unsafeForeignPtrToStorableArray</literal>.
520 The new <literal>Data.ByteString</literal> hierarchy
521 provides time and space-efficient byte vectors.
522 The old <literal>Data.PackedString</literal> module is now
523 deprecated as a result, although there is not yet a
524 replacement if you need full unicode support.
529 <literal>GHC.Exts</literal> now provides a function
530 <literal>inline</literal> which, provided the RHS is visible
531 to the compiler, forcibly inlines its argument.
532 Otherwise, it acts like <literal>id</literal>.
533 For more details, see <xref linkend="special-ids" />.
538 <literal>GHC.Exts</literal> now provides a function
539 <literal>lazy</literal> which forces GHC to think that its
540 argument 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.0 (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.0 (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.
1277 Version number 5.3 (was 5.2).
1282 <literal>Data.Graph.Inductive.Graph</literal> no longer
1283 exports <literal>UContext</literal>.
1288 <literal>Data.Graph.Inductive.Graph</literal> now exports
1289 <literal>delLEdge</literal>.
1300 Version number remains 2.0.
1305 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1306 <literal>DisplayMode</literal> has a new constructor
1307 <literal>WithAuxBuffers</literal> and
1308 <literal>DisplayCapability</literal> has a new constructor
1309 <literal>DisplayAux</literal>. These represent freeglut-only
1315 There are new examples in
1316 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1317 <filename>RedBook/AAIndex.hs</filename>,
1318 <filename>RedBook/AARGB.hs</filename>,
1319 <filename>RedBook/AccAnti.hs</filename>,
1320 <filename>RedBook/AccPersp.hs</filename>,
1321 <filename>RedBook/Alpha3D.hs</filename>,
1322 <filename>RedBook/DOF.hs</filename>,
1323 <filename>RedBook/FogIndex.hs</filename>,
1324 <filename>RedBook/Multisamp.hs</filename>,
1325 <filename>RedBook/PointP.hs</filename>,
1326 <filename>RedBook/PolyOff.hs</filename>,
1327 <filename>RedBook/Stencil.hs</filename>,
1328 <filename>RedBook/Stroke.hs</filename> and
1329 <filename>RedBook/Torus.hs</filename>,
1331 <filename>RedBook/Font.hs</filename> and
1332 <filename>RedBook/Histogram.hs</filename> have been
1340 <title>haskell-src</title>
1344 No change (version 1.0).
1355 No change (version 3.1).
1371 <literal>html</literal> is a new package, developing on
1372 what used to be <literal>Text.Html</literal> and
1373 <literal>Text.Html.BlockTable</literal> in the
1374 <literal>base</literal> package.
1379 <literal>Text.Html.BlockTable</literal> exports a new
1380 function <literal>empty</literal>.
1387 <title>HUnit</title>
1391 No change (version 1.1).
1402 No change (version 1.0).
1409 <title>network</title>
1413 Version number 2.0 (was 1.0).
1418 <literal>Network.CGI</literal> has been removed; use the
1419 <literal>cgi</literal> package instead.
1424 <literal>Network.BSD</literal> no longer exports
1425 <literal>symlink</literal> or <literal>readlink</literal>;
1427 <literal>System.Posix.Files.createSymbolicLink</literal> and
1428 <literal>System.Posix.Files.readSymbolicLink</literal>
1434 <literal>Network.BSD</literal> now exports
1435 <literal>defaultProtocol</literal>.
1440 <literal>Network.Socket.SocketStatus</literal> now has a
1441 constructor <literal>ConvertedToHandle</literal> for sockets
1442 that have been converted to handles.
1447 <literal>Network.Socket.Family</literal> now has the
1448 following additional constructors:
1449 <literal>AF_NETROM</literal>,
1450 <literal>AF_BRIDGE</literal>,
1451 <literal>AF_ATMPVC</literal>,
1452 <literal>AF_ROSE</literal>,
1453 <literal>AF_NETBEUI</literal>,
1454 <literal>AF_SECURITY</literal>,
1455 <literal>AF_PACKET</literal>,
1456 <literal>AF_ASH</literal>,
1457 <literal>AF_ECONET</literal>,
1458 <literal>AF_ATMSVC</literal>,
1459 <literal>AF_IRDA</literal>,
1460 <literal>AF_PPPOX</literal>,
1461 <literal>AF_WANPIPE</literal> and
1462 <literal>AF_BLUETOOTH</literal>.
1467 In <literal>Network.URI</literal>,
1468 <literal>parseabsoluteURI</literal> has been deprecated with
1469 a new function <literal>parseAbsoluteURI</literal> taking
1477 <title>ObjectIO</title>
1481 No change (version 1.0).
1488 <title>OpenAL</title>
1492 Version number 1.3 (was 1.2).
1504 <title>OpenGL</title>
1508 Version number 2.1 (was 2.0).
1520 <title>QuickCheck</title>
1524 No change (version 1.0).
1540 <literal>time</literal> is a new package, for dealing with
1541 dates, times and time intervals.
1552 Version number 1.2 (was 1.1).
1557 In <literal>Graphics.X11.Xlib.Types</literal>,
1558 <literal>XGCValues</literal> has been renamed
1559 <literal>GCValues</literal> and
1560 <literal>XSetWindowAttributes</literal> has been renamed
1561 <literal>SetWindowAttributes</literal>.
1566 In <literal>Graphics.X11.Xlib.Misc</literal>,
1567 <literal>allocaXSetWindowAttributes</literal> has been
1568 renamed <literal>allocaSetWindowAttributes</literal>.
1573 The <literal>FontStruct</literal> type has moved from
1574 <literal>Graphics.X11.Xlib.Types</literal> to
1575 <literal>Graphics.X11.Xlib.Font</literal>.
1581 <literal>Point</literal>,
1582 <literal>Rectangle</literal>,
1583 <literal>Arc</literal>,
1584 <literal>Segment</literal> and
1585 <literal>Color</literal> types in
1586 <literal>Graphics.X11.Xlib.Types</literal>
1587 are now proper datatypes rather than synonyms for tuples.
1588 They all have a <literal>Storable</literal> instance.
1593 The <literal>Byte</literal> and <literal>Short</literal>
1594 types from <literal>Graphics.X11.Xlib.Types</literal> have
1596 The following type synonyms, which had already been marked
1597 "Backwards compatibility", have also been removed:
1598 <literal>ListPoint</literal>,
1599 <literal>ListRectangle</literal>,
1600 <literal>ListArc</literal>,
1601 <literal>ListSegment</literal> and
1602 <literal>ListColor</literal>.
1607 <literal>Eq</literal>,
1608 <literal>Ord</literal>,
1609 <literal>Show</literal>,
1610 <literal>Typeable</literal> and
1611 <literal>Data</literal> are now derived for:
1612 <literal>XEvent</literal>,
1613 <literal>FdSet</literal> and
1614 <literal>TimeZone</literal> in
1615 <literal>Graphics.X11.Xlib.Event</literal>,
1616 <literal>FontStruct</literal> in
1617 <literal>Graphics.X11.Xlib.Font</literal>,
1618 <literal>XErrorEvent</literal>,
1619 <literal>XComposeStatus</literal> and
1620 <literal>XTextProperty</literal> in
1621 <literal>Graphics.X11.Xlib.Misc</literal>,
1622 <literal>Region</literal> in
1623 <literal>Graphics.X11.Xlib.Region</literal>,
1624 <literal>Display</literal>,
1625 <literal>Screen</literal>,
1626 <literal>Visual</literal>,
1627 <literal>GC</literal>,
1628 <literal>GCValues</literal>,
1629 <literal>SetWindowAttributes</literal>,
1630 <literal>Point</literal>,
1631 <literal>Rectangle</literal>,
1632 <literal>Arc</literal>,
1633 <literal>Segment</literal> and
1634 <literal>Color</literal> in
1635 <literal>Graphics.X11.Xlib.Types</literal>.
1642 <title>xhtml</title>
1651 <literal>xhtml</literal> is a new package, developing on
1652 what used to be <literal>Text.Html</literal> and
1653 <literal>Text.Html.BlockTable</literal> in the
1654 <literal>base</literal> package.
1662 <title>GHC As A Library</title>
1667 The internal modules of GHC are now available as a library, package
1668 name <literal>ghc</literal>.
1669 The interface has not been designed with use by other programs
1670 in mind, so expect the API to vary radically in future
1674 An introduction to using the library can be found
1675 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1680 <title>Internal changes</title>
1684 GHC development now has its own integrated
1685 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1691 GHC has now moved to darcs. See
1693 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1694 wiki</ulink> for more details. The sources have moved around a
1695 bit within the tree as a result, most notably the GHC sources
1696 are no longer kept within a <filename>ghc/</filename>
1702 The native code generator is now capable of compiling loops,
1703 which gets us a big step closer to being able to compile
1704 entirely without gcc on well-supported arches.