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>, where <literal>lazy f</literal>
540 behaves like <literal>f</literal>, except GHC is forced
541 to believe that it is lazy in its first argument.
542 For more details, see <xref linkend="special-ids" />.
547 <literal>Data.FiniteMap</literal> has been removed
548 (deprecated since 6.4). Use <literal>Data.Map</literal>
554 <literal>Data.Char</literal> now exports
555 <literal>isLetter</literal>,
556 <literal>isMark</literal>,
557 <literal>isNumber</literal>,
558 <literal>isPunctuation</literal>,
559 <literal>isSymbol</literal>,
560 <literal>isSeparator</literal>,
561 <literal>isAsciiUpper</literal>,
562 <literal>isAsciiLower</literal> and
563 <literal>toTitle</literal>.
564 It also exports a function
565 <literal>generalCategory</literal> that tells you the
566 category of a character in terms of a datatype
567 <literal>GeneralCategory</literal>.
572 <literal>Data.Dynamic</literal> now exports a function
573 <literal>dynTypeRep</literal>.
578 There is a new module <literal>Data.Eq</literal> which
579 just exports the <literal>Eq</literal> class.
580 Likewise, a new module <literal>Data.Ord</literal>
581 exports the <literal>Ord</literal> class, as well as the
582 handy <literal>comparing</literal> function.
587 There is a new module <literal>Data.Fixed</literal>
588 providing fixed-precision arithmetic.
593 There is a new module <literal>Data.Foldable</literal>
594 providing a class for foldable datatypes. It gives instances
595 for <literal>Maybe</literal>, <literal>[]</literal> and
596 <literal>Array i</literal>.
601 There is a new module <literal>Data.Traversable</literal>
602 providing a class for data structures that can be traversed
603 from left to right. It gives instances
604 for <literal>Maybe</literal>, <literal>[]</literal> and
605 <literal>Array i</literal>.
610 <literal>Data.FunctorM</literal> has been deprecated;
611 use <literal>Data.Foldable</literal> and
612 <literal>Data.Traversable</literal> instead.
617 The <literal>toConstr</literal> definitions for tuples in
618 <literal>Data.Generics.Instances</literal> now actually
619 evaluate their arguments to tuples before returning
625 <literal>Data.IntMap</literal> now exports
626 <literal>notMember</literal>,
627 <literal>alter</literal>,
628 <literal>mapMaybe</literal>,
629 <literal>mapMaybeWithKey</literal>,
630 <literal>mapEither</literal> and
631 <literal>mapEitherWithKey</literal>.
632 It also has <literal>Monoid</literal>,
633 <literal>Foldable</literal> and <literal>Read</literal>
639 <literal>Data.IntSet</literal> now exports
640 <literal>notMember</literal>. It also has
641 <literal>Monoid</literal> and <literal>Read</literal>
647 <literal>Data.Map</literal> now exports
648 <literal>notMember</literal>,
649 <literal>alter</literal>,
650 <literal>mapMaybe</literal>,
651 <literal>mapMaybeWithKey</literal>,
652 <literal>mapEither</literal>,
653 <literal>mapEitherWithKey</literal>,
654 <literal>minView</literal> and
655 <literal>maxView</literal>.
656 It also has <literal>Monoid</literal>,
657 <literal>Traversable</literal>, <literal>Foldable</literal>
658 and <literal>Read</literal> instances.
663 <literal>Data.Set</literal> now exports
664 <literal>notMember</literal>,
665 <literal>minView</literal> and
666 <literal>maxView</literal>.
667 It also has <literal>Monoid</literal>,
668 <literal>Foldable</literal>
669 and <literal>Read</literal> instances.
673 The old, deprecated (since 6.4) interface consisting of
674 <literal>emptySet</literal>,
675 <literal>mkSet</literal>,
676 <literal>setToList</literal>,
677 <literal>unitSet</literal>,
678 <literal>elementOf</literal>,
679 <literal>isEmptySet</literal>,
680 <literal>cardinality</literal>,
681 <literal>unionManySets</literal>,
682 <literal>minusSet</literal>,
683 <literal>mapSet</literal>,
684 <literal>intersect</literal>,
685 <literal>addToSet</literal> and
686 <literal>delFromSet</literal> has been removed.
691 <literal>Data.Monoid</literal> no longer contains the
692 <literal>Monoid</literal>
693 instances for <literal>Map</literal>,
694 <literal>IntMap</literal>, <literal>Set</literal> and
695 <literal>IntSet</literal>. They have been moved to their own
696 modules, as above. The <literal>(a -> a)</literal> instance
697 has been replaced with a
698 <literal>Monoid b => Monoid (a -> b)</literal> instance.
699 The module also now exports
700 <literal>Dual</literal>,
701 <literal>Endo</literal>,
702 <literal>All</literal>,
703 <literal>Any</literal>,
704 <literal>Sum</literal> and
705 <literal>Product</literal> types, and
706 <literal>Monoid</literal> instances for them.
711 There is a new module <literal>Data.Sequence</literal>
712 for finite sequences. The <literal>Data.Queue</literal>
713 module is now deprecated in favour of this faster, more
714 featureful replacement.
719 <literal>Data.Tree</literal> now has
720 <literal>Data</literal>, <literal>Typeable</literal>,
721 <literal>Traversable</literal> and
722 <literal>Foldable</literal>
724 <literal>Tree</literal> datatype.
729 <literal>Data.Typeable</literal> now uses
730 <option>-fallow-overlapping-instances</option>, so the
731 generic instances can be overriden for your own datatypes.
736 <literal>Debug.Trace</literal> now exports
737 <literal>traceShow</literal>, which is the same as
738 <literal>trace</literal> except its first argument can be
739 any showable thing rather than being required to be a
745 <literal>Foreign.C.Types</literal> now also defines
746 <literal>CIntPtr</literal>,
747 <literal>CUIntPtr</literal>,
748 <literal>CIntMax</literal> and
749 <literal>CUIntMax</literal>.
754 <literal>Foreign.ForeignPtr</literal> now exports
755 <literal>FinalizerEnvPtr</literal>,
756 <literal>newForeignPtrEnv</literal> and
757 <literal>addForeignPtrFinalizerEnv</literal>.
758 Together, these allow the use of finalizers which are passed
759 an additional environment parameter.
764 <literal>Foreign.Marshal.Utils</literal> no longer exports
765 the <literal>withObject</literal> function, deprecated since
766 5.04; use <literal>with</literal> instead.
771 Foreign.Ptr now also defines
772 <literal>IntPtr</literal>,
773 <literal>ptrToIntPtr</literal>,
774 <literal>intPtrToPtr</literal>,
775 <literal>WordPtr</literal>,
776 <literal>ptrToWordPtr</literal> and
777 <literal>wordPtrToPtr</literal>.
782 There are now <literal>Bounded</literal> instances for up to
783 15-tuples (used to be up to 4-tuples).
788 The <literal>Text.Html</literal> and
789 <literal>Text.Html.BlockTable</literal> modules have now
790 been removed, with the new <literal>html</literal> and
791 <literal>xhtml</literal> packages providing replacements.
796 <literal>Text.Read</literal> now exports a function
797 <literal>parens</literal> which parses a value in an
798 arbitrary number of parentheses.
803 The <literal>ForeignPtr</literal> datatype has been altered
804 to make it more efficient. There are also new functions
805 <literal>mallocPlainForeignPtr</literal> and
806 <literal>mallocPlainForeignPtrBytes</literal> which
807 do not allow you to attach a finalizer to the
808 <literal>ForeignPtr</literal>.
813 The <literal>Text.Regex</literal> and
814 <literal>Text.Regex.Posix</literal> modules have been removed.
815 Instead, use the new <literal>regex-compat</literal> package
816 for a drop-in <literal>Text.Regex</literal> replacement, or
817 the new library in the new <literal>regex-posix</literal>
829 Version number 1.1.6 (was 1.1.4).
834 Support for JHC, symmetric to the support for the other
835 implementations, has been added throughout.
840 Support for object splitting and building in-place
841 has been added throughout.
846 Added a <filename>debianTemplate</filename> directory with
847 templates for building Debian packages from Cabal packages.
852 There are now modules
853 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
854 for each of <literal>GHC</literal>, <literal>NHC</literal>,
855 <literal>Hugs</literal> and <literal>JHC</literal>.
856 The <literal>Distribution.Simple.Build</literal> and
857 <literal>Distribution.Simple.Install</literal> modules have
858 shrunk correspondingly.
863 <literal>Distribution.GetOpt</literal> is no longer a
869 <literal>Distribution.Simple</literal> exports a function
870 <literal>defaultMainArgs</literal>, which is identical to
871 <literal>defaultMain</literal> except that the arguments are
872 given as a list of strings rather than being retrieved with
873 <literal>getArgs</literal>.
878 <literal>Distribution.Simple.Configure</literal>
880 <literal>LocalBuildInfo</literal>,
882 <literal>configDependency</literal> and
883 <literal>configCompilerAux</literal>.
888 <literal>Distribution.Simple.LocalBuildInfo</literal> now
889 exports <literal>mkHaddockDir</literal>,
890 <literal>distPref</literal>,
891 <literal>srcPref</literal>,
892 <literal>autogenModulesDir</literal> and
893 <literal>mkIncludeDir</literal>.
898 <literal>Distribution.PackageDescription</literal> now
899 exports <literal>haddockName</literal>.
904 <literal>Distribution.Simple.Utils</literal> now exports
905 <literal>copyDirectoryRecursiveVerbose</literal>,
906 <literal>dirOf</literal>,
907 <literal>distPref</literal>,
908 <literal>haddockPref</literal> and
909 <literal>srcPref</literal>.
910 It no longer exports <literal>mkGHCiLibName</literal>.
917 <title>haskell98</title>
921 No change (version 1.0).
928 <title>parsec</title>
932 Version number 2.0 (was 1.0).
944 <title>readline</title>
948 No change (version 1.0).
955 <title>regex-base</title>
964 New library that provides common functions for different
972 <title>regex-compat</title>
981 New package providing a replacement
982 <literal>Text.Regex</literal> module.
989 <title>regex-posix</title>
998 A new package providing POSIX regexes.
1009 Version number 2.0 (was 1.0).
1014 A new module <literal>Control.Monad.STM</literal>
1016 <literal>MonadPlus</literal> instance for
1017 <literal>STM</literal> and the function
1018 <literal>check</literal> (both used to be in
1019 <literal>Control.Concurrent.STM</literal>).
1021 <literal>STM</literal>,
1022 <literal>atomically</literal>,
1023 <literal>retry</literal>,
1024 <literal>orElse</literal> and
1025 <literal>catchSTM</literal>.
1031 <literal>Control.Concurrent.STM.TArray</literal> defines
1032 <literal>TArray</literal>, a transactional array, and makes
1033 it an instance of <literal>MArray</literal>.
1038 <literal>Control.Concurrent.STM.TChan</literal> now provides
1039 a function <literal>newTChanIO</literal>, which allows
1040 <literal>TChan</literal>s to be created in the IO monad.
1041 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1042 provides <literal>newTMVarIO</literal> and
1043 <literal>newEmptyTMVarIO</literal>, and
1044 <literal>Control.Concurrent.STM.TVar</literal> exports
1045 <literal>newTVarIO</literal>.
1050 <literal>Control.Concurrent.STM.TVar</literal> exports
1051 <literal>registerDelay</literal>.
1056 The <literal>Control.Concurrent.STM</literal> module has been
1057 updated to re-export all the new modules.
1064 <title>template-haskell</title>
1068 Version number 2.0 (was 1.0).
1073 A <literal>Show</literal> instance is now derived for
1074 <literal>Info</literal>, <literal>Fixity</literal> and
1075 <literal>FixityDirection</literal> in
1076 <literal>Language.Haskell.TH.Syntax</literal>.
1081 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1082 a type <literal>PkgName</literal> and functions
1083 <literal>mkPkgName</literal> and
1084 <literal>pkgString</literal>
1085 for dealing with package names.
1090 The <literal>patGE</literal> function in
1091 <literal>Language.Haskell.TH.Lib</literal> now takes the
1092 final expression separately to the list of statements
1093 rather than splitting it off itself.
1104 No change (version 1.0).
1111 <title>Win32</title>
1115 Version number 2.0 (was 1.0).
1120 Now maintained by Esa Ilari Vuokko.
1125 There is a new module
1126 <literal>System.Win32.Console</literal>
1127 providing an interface to the Windows Console API.
1132 There is a new module
1133 <literal>System.Win32.DebugApi</literal>
1134 providing an interface to the Windows DebugApi.
1139 There is a new module
1140 <literal>System.Win32.FileMapping</literal>
1141 for working with memory-mapped files.
1146 There is a new module
1147 <literal>System.Win32.SimpleMAPI</literal>
1148 for using the Windows mail API.
1153 There is a new module
1154 <literal>System.Win32.Time</literal>
1155 for using the Windows time API.
1160 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1161 <literal>Graphics.Win32.Misc</literal> to
1162 <literal>System.Win32.Types</literal>.
1167 <literal>System.Win32.File</literal> has a new
1168 function <literal>getFileInformationByHandle</literal>
1169 and associated data types.
1174 <literal>System.Win32.Info</literal> has a new
1175 function <literal>getSystemInfo</literal> and associated
1181 <literal>System.Win32.Process</literal> now has many more
1187 <literal>System.Win32.Types</literal> has new types
1188 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1189 and <literal>SIZE_T</literal>. It also has new helper
1190 functions <literal>ddwordToDwords</literal> and
1191 <literal>dwordsToDdword</literal> to split and combine
1192 ddwords into high and low components.
1197 <literal>System.Win32</literal> re-exports
1198 <literal>System.Win32.FileMapping</literal>,
1199 <literal>System.Win32.Time</literal>
1200 and <literal>System.Win32.Console</literal>.
1208 <title>Extra Libraries</title>
1214 Version number 2.0 (was 1.0).
1219 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1220 Its <literal>Phase</literal> and <literal>Duration</literal>
1221 exports are now exported by
1222 <literal>Sound.ALUT.Loaders</literal> and its
1223 <literal>helloWorld</literal>,
1224 <literal>sine</literal>,
1225 <literal>square</literal>,
1226 <literal>sawtooth</literal>,
1227 <literal>impulse</literal> and
1228 <literal>whiteNoise</literal>
1229 exports are now constructors of the
1230 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1238 <title>arrows</title>
1242 Version number 0.2 (was 0.1).
1247 <literal>Control.Sequence</literal> has been removed in
1248 favour of the new <literal>Control.Applicative</literal>
1249 module in <literal>base</literal>.
1265 <literal>cgi</literal> is a new package, developing on
1266 what used to be <literal>Network.CGI</literal> in the
1267 <literal>network</literal> package.
1278 Version number 5.3 (was 5.2).
1283 <literal>Data.Graph.Inductive.Graph</literal> no longer
1284 exports <literal>UContext</literal>.
1289 <literal>Data.Graph.Inductive.Graph</literal> now exports
1290 <literal>delLEdge</literal>.
1301 Version number remains 2.0.
1306 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1307 <literal>DisplayMode</literal> has a new constructor
1308 <literal>WithAuxBuffers</literal> and
1309 <literal>DisplayCapability</literal> has a new constructor
1310 <literal>DisplayAux</literal>. These represent freeglut-only
1316 There are new examples in
1317 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1318 <filename>RedBook/AAIndex.hs</filename>,
1319 <filename>RedBook/AARGB.hs</filename>,
1320 <filename>RedBook/AccAnti.hs</filename>,
1321 <filename>RedBook/AccPersp.hs</filename>,
1322 <filename>RedBook/Alpha3D.hs</filename>,
1323 <filename>RedBook/DOF.hs</filename>,
1324 <filename>RedBook/FogIndex.hs</filename>,
1325 <filename>RedBook/Multisamp.hs</filename>,
1326 <filename>RedBook/PointP.hs</filename>,
1327 <filename>RedBook/PolyOff.hs</filename>,
1328 <filename>RedBook/Stencil.hs</filename>,
1329 <filename>RedBook/Stroke.hs</filename> and
1330 <filename>RedBook/Torus.hs</filename>,
1332 <filename>RedBook/Font.hs</filename> and
1333 <filename>RedBook/Histogram.hs</filename> have been
1341 <title>haskell-src</title>
1345 No change (version 1.0).
1356 No change (version 3.1).
1372 <literal>html</literal> is a new package, developing on
1373 what used to be <literal>Text.Html</literal> and
1374 <literal>Text.Html.BlockTable</literal> in the
1375 <literal>base</literal> package.
1380 <literal>Text.Html.BlockTable</literal> exports a new
1381 function <literal>empty</literal>.
1388 <title>HUnit</title>
1392 No change (version 1.1).
1403 No change (version 1.0).
1410 <title>network</title>
1414 Version number 2.0 (was 1.0).
1419 <literal>Network.CGI</literal> has been removed; use the
1420 <literal>cgi</literal> package instead.
1425 <literal>Network.BSD</literal> no longer exports
1426 <literal>symlink</literal> or <literal>readlink</literal>;
1428 <literal>System.Posix.Files.createSymbolicLink</literal> and
1429 <literal>System.Posix.Files.readSymbolicLink</literal>
1435 <literal>Network.BSD</literal> now exports
1436 <literal>defaultProtocol</literal>.
1441 <literal>Network.Socket.SocketStatus</literal> now has a
1442 constructor <literal>ConvertedToHandle</literal> for sockets
1443 that have been converted to handles.
1448 <literal>Network.Socket.Family</literal> now has the
1449 following additional constructors:
1450 <literal>AF_NETROM</literal>,
1451 <literal>AF_BRIDGE</literal>,
1452 <literal>AF_ATMPVC</literal>,
1453 <literal>AF_ROSE</literal>,
1454 <literal>AF_NETBEUI</literal>,
1455 <literal>AF_SECURITY</literal>,
1456 <literal>AF_PACKET</literal>,
1457 <literal>AF_ASH</literal>,
1458 <literal>AF_ECONET</literal>,
1459 <literal>AF_ATMSVC</literal>,
1460 <literal>AF_IRDA</literal>,
1461 <literal>AF_PPPOX</literal>,
1462 <literal>AF_WANPIPE</literal> and
1463 <literal>AF_BLUETOOTH</literal>.
1468 In <literal>Network.URI</literal>,
1469 <literal>parseabsoluteURI</literal> has been deprecated with
1470 a new function <literal>parseAbsoluteURI</literal> taking
1478 <title>ObjectIO</title>
1482 No change (version 1.0).
1489 <title>OpenAL</title>
1493 Version number 1.3 (was 1.2).
1505 <title>OpenGL</title>
1509 Version number 2.1 (was 2.0).
1521 <title>QuickCheck</title>
1525 No change (version 1.0).
1541 <literal>time</literal> is a new package, for dealing with
1542 dates, times and time intervals.
1553 Version number 1.2 (was 1.1).
1558 In <literal>Graphics.X11.Xlib.Types</literal>,
1559 <literal>XGCValues</literal> has been renamed
1560 <literal>GCValues</literal> and
1561 <literal>XSetWindowAttributes</literal> has been renamed
1562 <literal>SetWindowAttributes</literal>.
1567 In <literal>Graphics.X11.Xlib.Misc</literal>,
1568 <literal>allocaXSetWindowAttributes</literal> has been
1569 renamed <literal>allocaSetWindowAttributes</literal>.
1574 The <literal>FontStruct</literal> type has moved from
1575 <literal>Graphics.X11.Xlib.Types</literal> to
1576 <literal>Graphics.X11.Xlib.Font</literal>.
1582 <literal>Point</literal>,
1583 <literal>Rectangle</literal>,
1584 <literal>Arc</literal>,
1585 <literal>Segment</literal> and
1586 <literal>Color</literal> types in
1587 <literal>Graphics.X11.Xlib.Types</literal>
1588 are now proper datatypes rather than synonyms for tuples.
1589 They all have a <literal>Storable</literal> instance.
1594 The <literal>Byte</literal> and <literal>Short</literal>
1595 types from <literal>Graphics.X11.Xlib.Types</literal> have
1597 The following type synonyms, which had already been marked
1598 "Backwards compatibility", have also been removed:
1599 <literal>ListPoint</literal>,
1600 <literal>ListRectangle</literal>,
1601 <literal>ListArc</literal>,
1602 <literal>ListSegment</literal> and
1603 <literal>ListColor</literal>.
1608 <literal>Eq</literal>,
1609 <literal>Ord</literal>,
1610 <literal>Show</literal>,
1611 <literal>Typeable</literal> and
1612 <literal>Data</literal> are now derived for:
1613 <literal>XEvent</literal>,
1614 <literal>FdSet</literal> and
1615 <literal>TimeZone</literal> in
1616 <literal>Graphics.X11.Xlib.Event</literal>,
1617 <literal>FontStruct</literal> in
1618 <literal>Graphics.X11.Xlib.Font</literal>,
1619 <literal>XErrorEvent</literal>,
1620 <literal>XComposeStatus</literal> and
1621 <literal>XTextProperty</literal> in
1622 <literal>Graphics.X11.Xlib.Misc</literal>,
1623 <literal>Region</literal> in
1624 <literal>Graphics.X11.Xlib.Region</literal>,
1625 <literal>Display</literal>,
1626 <literal>Screen</literal>,
1627 <literal>Visual</literal>,
1628 <literal>GC</literal>,
1629 <literal>GCValues</literal>,
1630 <literal>SetWindowAttributes</literal>,
1631 <literal>Point</literal>,
1632 <literal>Rectangle</literal>,
1633 <literal>Arc</literal>,
1634 <literal>Segment</literal> and
1635 <literal>Color</literal> in
1636 <literal>Graphics.X11.Xlib.Types</literal>.
1643 <title>xhtml</title>
1652 <literal>xhtml</literal> is a new package, developing on
1653 what used to be <literal>Text.Html</literal> and
1654 <literal>Text.Html.BlockTable</literal> in the
1655 <literal>base</literal> package.
1663 <title>GHC As A Library</title>
1668 The internal modules of GHC are now available as a library, package
1669 name <literal>ghc</literal>.
1670 The interface has not been designed with use by other programs
1671 in mind, so expect the API to vary radically in future
1675 An introduction to using the library can be found
1676 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1681 <title>Internal changes</title>
1685 GHC development now has its own integrated
1686 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1692 GHC has now moved to darcs. See
1694 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1695 wiki</ulink> for more details. The sources have moved around a
1696 bit within the tree as a result, most notably the GHC sources
1697 are no longer kept within a <filename>ghc/</filename>
1703 The native code generator is now capable of compiling loops,
1704 which gets us a big step closer to being able to compile
1705 entirely without gcc on well-supported arches.