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's modules are now also bundled into a
21 <literal>ghc</literal> package, allowing programs to make use
22 of GHC as a library. The interface has not yet been properly
23 designed, so is subject to change.
28 GHC now handles impredicative polymorphism and there are
29 changes to the way scoped type variables work; see
30 <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
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>
48 The restriction that you cannot use two packages together if
49 they contain a module with the same name has been removed.
50 In implementation terms, the package name is now included in
51 every exported symbol name in the object file, so that
52 modules with the same name in different packages do not
53 clash. See <xref linkend="package-overlaps" />.
58 GHC now treats source files as UTF-8 (ASCII is a strict
59 subset of UTF-8, so ASCII source files will continue to
60 work as before). However, invalid UTF-8 sequences are
61 ignored in comments, so ASCII code with comments in, for
62 example, Latin-1 will also work.
67 GADTs can now use record syntax. Also, if the datatype could
68 have been declared with Haskell 98 syntax then deriving
69 clauses are permitted. For more info see <xref linkend="gadt" />.
74 There is a new pragma <literal>LANGUAGE</literal> which allows
75 extensions to be specified portably, i.e. without having to
76 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
77 GHC-specific options. The arguments to the pragma are the same
78 extensions that Cabal knows about. More info in
79 <xref linkend="language-pragma" />.
84 When you use <command>ghc --make</command>, GHC will now take
85 the executable filename from the name of the file containing
86 the <literal>Main</literal> module rather than using
87 <filename>a.out</filename>. The <filename>.exe</filename>
88 extension is appended on Windows, and it can of course be
89 overridden with <option>-o</option>.
94 GHC's garbage collector now deals more intelligently with
95 mutable data, so you mostly no longer need to worry about GC
96 performance when a lot of memory is taken up by
97 <literal>STArray</literal>s, <literal>IOArray</literal>s,
98 <literal>STRef</literal>s or <literal>IORef</literal>s.
103 GHC now allows more generalisation when typing mutually
104 recursive bindings, resulting in more programs being accepted.
105 See <xref linkend="typing-binds" /> for more details.
110 The rules for instance declarations have been further relaxed.
111 You are now permitted to have instances whose heads contain
112 only type variables, e.g.
114 instance C a</programlisting>
115 and instances whose constraints are not only type variables,
118 instance C2 Int a => C3 [a] b</programlisting>
119 For more details, see <xref linkend="instance-rules" />.
124 The following flags (and, where appropriate, their inverses)
125 used to be static (can only be given on
126 the command line) but are now dynamic (can also be given in
127 a <literal>GHC_OPTIONS</literal> pragma or with
128 <literal>:set</literal> in GHCi):
130 <option>-hcsuf</option>,
131 <option>-hidir</option>,
132 <option>-hisuf</option>,
134 <option>-odir</option>,
135 <option>-ohi</option>,
136 <option>-osuf</option>,
137 <option>-keep-hc-file</option>,
138 <option>-keep-s-file</option>,
139 <option>-keep-raw-s-file</option>,
140 <option>-keep-tmp-files</option>,
141 <option>-tmpdir</option>,
143 <option>-package</option>,
144 <option>-hide-package</option>,
145 <option>-ignore-package</option>,
146 <option>-package-conf</option>,
147 <option>-no-user-package-conf</option>,
148 <option>-fcontext-stack</option>,
149 <option>-fexcess-precision</option>,
150 <option>-fignore-asserts</option>,
151 <option>-fignore-interface-pragmas</option>,
153 <option>-framework</option>,
154 <option>-framework-path</option>,
157 <option>-main-is</option>,
158 <option>-no-hs-main</option>,
159 <option>-split-objs</option>,
160 <option>-pgmL</option>,
161 <option>-pgmP</option>,
162 <option>-pgmc</option>,
163 <option>-pgma</option>,
164 <option>-pgml</option>,
165 <option>-pgmdll</option>,
166 <option>-pgmdep</option>,
167 <option>-pgmF</option>,
168 <option>-optl</option>,
169 <option>-optdll</option>,
170 <option>-optdep</option>,
171 <option>-fno-asm-mangling</option>.
172 See <xref linkend="static-dynamic-flags" /> for more on
173 the meaning of static and dynamic flags, and
174 <xref linkend="flag-reference" /> for more on the flags
180 There is a new flag <option>-x</option> for overriding the
181 default behaviour for source files; see
182 <xref linkend="overriding-suffixes" /> details.
187 The <option>-fglobalise-toplev-names</option>
188 flag has been removed.
193 The <option>-fallow-overlapping-instances</option> flag is
194 implied by the <option>-fallow-incoherent-instances</option>
200 The directory that the <filename>foo_stub.c</filename> and
201 <filename>foo_stub.h</filename> files are put in can now be
202 controlled with the <option>-stubdir</option> flag.
203 See <xref linkend="options-output" /> for more details.
208 When the <option>-fno-implicit-prelude</option> is given,
209 the equality test performed when pattern matching against an
210 overloaded numeric literal now uses the
211 <literal>(==)</literal> in scope, rather than the one from
212 <literal>Prelude</literal>. Likewise, the subtraction and
213 inequality test performed when pattern matching against
214 <literal>n+k</literal> patterns uses the
215 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
220 Another change to <option>-fno-implicit-prelude</option>:
221 with the exception of the arrow syntax, the types of
222 functions used by sugar (such as do notation, numeric
223 literal patterns) need not match the types of the
224 <literal>Prelude</literal> functions normally used.
229 The <literal>InstalledPackageInfo</literal> syntax has
231 instead of <literal>extra-libs</literal> we have
232 <literal>extra-libraries</literal>,
233 instead of <literal>extra-hugs-opts</literal> we have
234 <literal>hugs-options</literal>,
235 instead of <literal>extra-cc-opts</literal> we have
236 <literal>cc-options</literal>,
237 instead of <literal>extra-ld-opts</literal> we have
238 <literal>ld-options</literal>,
239 and instead of <literal>extra-frameworks</literal> we have
240 <literal>frameworks</literal>.
241 See <xref linkend="installed-pkg-info" /> for details.
246 If you <literal>newtype</literal> the IO monad, e.g.
248 newtype MyIO a = MyIO (IO a)</programlisting>
249 then GHC will now allow you to have FFI calls return
250 <literal>MyIO <replaceable>t</replaceable></literal>
252 <literal>IO <replaceable>t</replaceable></literal>.
253 See <xref linkend="ffi-newtype-io"/>
256 <listitem> <para> GHC's mechansim for deriving user-defined classes
257 for newtypes has been further generalised, to multi-parameter type
258 classes and higher-kinded types. See <xref
259 linkend="newtype-deriving"/>.
263 By default, pattern bindings in GHC are now monomorphic.
264 This means that some valid Haskell 98 programs will get
265 rejected, but we believe they will be few in number.
266 To revert to the old behaviour use the
267 <option>-fno-mono-pat-binds</option> flag.
268 More details are in <xref linkend="options-language" />.
273 GHCi already does more defaulting than Haskell 98 so that, for
274 example, <literal>reverse []</literal> shows a result rather
275 than giving an ambiguous type variable error. There is now a
276 flag <option>-fextended-default-rules</option> to use these
277 defaulting rules with GHC too.
278 More details are in <xref linkend="extended-default-rules" />.
283 You can now give both class and instance declarations in
284 <filename>.hs-boot</filename> files. More details in
285 <xref linkend="mutual-recursion" />.
290 Linear implicit parameters have been scheduled for removal for some
291 time. In 6.6 we've removed them from the user manual, and they may
292 well disappear from the compiler itself in 6.6.1.
297 It is now possible, with the <literal>-I</literal> RTS flag,
298 to control the amount of idle time that happens before a major
304 The old syntax for FFI declarations (deprecated since 5.04)
305 is no longer accepted.
310 The <option>-split-objs</option> flag can now be used with
311 <option>--make</option>, and hence can be used by cabal.
316 Template Haskell used to have limited support for type signatures in
317 patterns, but since that design is in flux for Haskell (let alone
318 Template Haskell), we've removed type signatures in patterns from
326 <title>GHCi changes</title>
331 GHCi now allows tab completion of in-scope names and modules
332 on platforms that use readline (i.e. not Windows).
337 GHCi now has a <literal>:main</literal> command that allows
338 you to call the <literal>main</literal> function with
339 command-line arguments.
340 See <xref linkend="ghci-commands" /> for more information.
345 GHCi now has <literal>:ctags</literal> and
346 <literal>:etags</literal> commands to generate tags files for
347 vi-style and emacs-style editors respectively.
348 See <xref linkend="ghci-commands" /> for more information.
355 <title>Libraries</title>
357 Libraries are now divided into core libraries (those that are
358 necessary to build GHC) and extra libraries. Decoupling the extra
359 libraries means that they can release independently of GHC
360 releases, and makes development builds of GHC quicker as they no
361 longer need to build unnecessary libraries.
365 The hslibs libraries have finally been removed.
370 <title>Core Libraries</title>
376 Version number 2.0 (was 1.0).
381 We now have <literal>Read</literal> and
382 <literal>Show</literal> instances for up to 15-tuples (used
383 to be up to 5-tuples).
388 New module <literal>Control.Applicative</literal> that
389 describes a structure intermediate between a functor and
390 a monad: it provides pure expressions and sequencing, but
396 <literal>Control.Exception</literal> now exports
397 <literal>bracketOnError</literal>, which behaves like
398 <literal>bracket</literal> but only runs the final
399 action if the main action raised an error.
404 There is a new module
405 <literal>Control.Monad.Instances</literal> which
406 provides <literal>Monad</literal> and
407 <literal>Functor</literal> instances for
408 <literal>((->) r)</literal> (were in
409 <literal>mtl</literal>'s
410 <literal>Control.Monad.Reader</literal>),
411 a <literal>Functor</literal> instance for
412 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
413 <literal>Control.Monad.Error</literal>) and a
414 <literal>Functor</literal> instance for
415 <literal>((,) a)</literal> (new).
420 The <literal>MonadFix</literal> instance for
421 <literal>((->) r)</literal> is now in
422 <literal>Control.Monad.Fix</literal> (was in
423 <literal>mtl</literal>'s
424 <literal>Control.Monad.Reader</literal>).
429 <literal>Control.Monad.ST</literal> now exports
430 <literal>unsafeSTToIO</literal>.
435 The <literal>HasBounds</literal> class has been removed from
436 <literal>Data.Array.Base</literal>, and its
437 <literal>bounds</literal> method is now in the
438 <literal>IArray</literal> class. The
439 <literal>MArray</literal> class
440 has also gained a method <literal>getBounds</literal>.
445 <literal>Data.Array.Base</literal> now provides an
446 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
452 <literal>Data.Array.Storable</literal> now exports a
453 function <literal>unsafeForeignPtrToStorableArray</literal>.
458 The new <literal>Data.ByteString</literal> hierarchy
459 provides time and space-efficient byte vectors.
460 The old <literal>Data.PackedString</literal> module is now
461 deprecated as a result, although there is not yet a
462 replacement if you need full unicode support.
467 <literal>GHC.Exts</literal> now provides a function
468 <literal>inline</literal> which, provided the RHS is visible
469 to the compiler, forcibly inlines its argument.
470 Otherwise, it acts like <literal>id</literal>.
475 <literal>GHC.Exts</literal> now provides a function
476 <literal>lazy</literal> which forces GHC to think that its
477 argument is lazy in its first argument.
482 <literal>Data.FiniteMap</literal> has been removed
483 (deprecated since 6.4). Use <literal>Data.Map</literal>
489 <literal>Data.Char</literal> now exports
490 <literal>isLetter</literal>,
491 <literal>isMark</literal>,
492 <literal>isNumber</literal>,
493 <literal>isPunctuation</literal>,
494 <literal>isSymbol</literal>,
495 <literal>isSeparator</literal>,
496 <literal>isAsciiUpper</literal>,
497 <literal>isAsciiLower</literal> and
498 <literal>toTitle</literal>.
499 It also exports a function
500 <literal>generalCategory</literal> that tells you the
501 category of a character in terms of a datatype
502 <literal>GeneralCategory</literal>.
507 <literal>Data.Dynamic</literal> now exports a function
508 <literal>dynTypeRep</literal>.
513 There is a new module <literal>Data.Eq</literal> which
514 just exports the <literal>Eq</literal> class.
515 Likewise, a new module <literal>Data.Ord</literal>
516 exports the <literal>Ord</literal> class, as well as the
517 handy <literal>comparing</literal> function.
522 There is a new module <literal>Data.Fixed</literal>
523 providing fixed-precision arithmetic.
528 There is a new module <literal>Data.Foldable</literal>
529 providing a class for foldable datatypes. It gives instances
530 for <literal>Maybe</literal>, <literal>[]</literal> and
531 <literal>Array i</literal>.
536 There is a new module <literal>Data.Traversable</literal>
537 providing a class for data structures that can be traversed
538 from left to right. It gives instances
539 for <literal>Maybe</literal>, <literal>[]</literal> and
540 <literal>Array i</literal>.
545 <literal>Data.FunctorM</literal> has been deprecated;
546 use <literal>Data.Foldable</literal> and
547 <literal>Data.Traversable</literal> instead.
552 The <literal>toConstr</literal> definitions for tuples in
553 <literal>Data.Generics.Instances</literal> now actually
554 evaluate their arguments to tuples before returning
560 <literal>Data.IntMap</literal> now exports
561 <literal>notMember</literal>,
562 <literal>alter</literal>,
563 <literal>mapMaybe</literal>,
564 <literal>mapMaybeWithKey</literal>,
565 <literal>mapEither</literal> and
566 <literal>mapEitherWithKey</literal>.
567 It also has <literal>Monoid</literal>,
568 <literal>Foldable</literal> and <literal>Read</literal>
574 <literal>Data.IntSet</literal> now exports
575 <literal>notMember</literal>. It also has
576 <literal>Monoid</literal> and <literal>Read</literal>
582 <literal>Data.Map</literal> now exports
583 <literal>notMember</literal>,
584 <literal>alter</literal>,
585 <literal>mapMaybe</literal>,
586 <literal>mapMaybeWithKey</literal>,
587 <literal>mapEither</literal>,
588 <literal>mapEitherWithKey</literal>,
589 <literal>minView</literal> and
590 <literal>maxView</literal>.
591 It also has <literal>Monoid</literal>,
592 <literal>Traversable</literal>, <literal>Foldable</literal>
593 and <literal>Read</literal> instances.
598 <literal>Data.Set</literal> now exports
599 <literal>notMember</literal>,
600 <literal>minView</literal> and
601 <literal>maxView</literal>.
602 It also has <literal>Monoid</literal>,
603 <literal>Foldable</literal>
604 and <literal>Read</literal> instances.
608 The old, deprecated (since 6.4) interface consisting of
609 <literal>emptySet</literal>,
610 <literal>mkSet</literal>,
611 <literal>setToList</literal>,
612 <literal>unitSet</literal>,
613 <literal>elementOf</literal>,
614 <literal>isEmptySet</literal>,
615 <literal>cardinality</literal>,
616 <literal>unionManySets</literal>,
617 <literal>minusSet</literal>,
618 <literal>mapSet</literal>,
619 <literal>intersect</literal>,
620 <literal>addToSet</literal> and
621 <literal>delFromSet</literal> has been removed.
626 <literal>Data.Monoid</literal> no longer contains the
627 <literal>Monoid</literal>
628 instances for <literal>Map</literal>,
629 <literal>IntMap</literal>, <literal>Set</literal> and
630 <literal>IntSet</literal>. They have been moved to their own
631 modules, as above. The <literal>(a -> a)</literal> instance
632 has been replaced with a
633 <literal>Monoid b => Monoid (a -> b)</literal> instance.
634 The module also now exports
635 <literal>Dual</literal>,
636 <literal>Endo</literal>,
637 <literal>All</literal>,
638 <literal>Any</literal>,
639 <literal>Sum</literal> and
640 <literal>Product</literal> types, and
641 <literal>Monoid</literal> instances for them.
646 There is a new module <literal>Data.Sequence</literal>
647 for finite sequences. The <literal>Data.Queue</literal>
648 module is now deprecated in favour of this faster, more
649 featureful replacement.
654 <literal>Data.Tree</literal> now has
655 <literal>Data</literal>, <literal>Typeable</literal>,
656 <literal>Traversable</literal> and
657 <literal>Foldable</literal>
659 <literal>Tree</literal> datatype.
664 <literal>Data.Typeable</literal> now uses
665 <option>-fallow-overlapping-instances</option>, so the
666 generic instances can be overriden for your own datatypes.
671 <literal>Debug.Trace</literal> now exports
672 <literal>traceShow</literal>, which is the same as
673 <literal>trace</literal> except its first argument can be
674 any showable thing rather than being required to be a
680 <literal>Foreign.C.Types</literal> now also defines
681 <literal>CIntPtr</literal>,
682 <literal>CUIntPtr</literal>,
683 <literal>CIntMax</literal> and
684 <literal>CUIntMax</literal>.
689 <literal>Foreign.ForeignPtr</literal> now exports
690 <literal>FinalizerEnvPtr</literal>,
691 <literal>newForeignPtrEnv</literal> and
692 <literal>addForeignPtrFinalizerEnv</literal>.
693 Together, these allow the use of finalizers which are passed
694 an additional environment parameter.
699 <literal>Foreign.Marshal.Utils</literal> no longer exports
700 the <literal>withObject</literal> function, deprecated since
701 5.04; use <literal>with</literal> instead.
706 Foreign.Ptr now also defines
707 <literal>IntPtr</literal>,
708 <literal>ptrToIntPtr</literal>,
709 <literal>intPtrToPtr</literal>,
710 <literal>WordPtr</literal>,
711 <literal>ptrToWordPtr</literal> and
712 <literal>wordPtrToPtr</literal>.
717 There are now <literal>Bounded</literal> instances for up to
718 15-tuples (used to be up to 4-tuples).
723 The <literal>Text.Html</literal> and
724 <literal>Text.Html.BlockTable</literal> modules have now
725 been removed, with the new <literal>html</literal> and
726 <literal>xhtml</literal> packages providing replacements.
731 <literal>Text.Read</literal> now exports a function
732 <literal>parens</literal> which parses a value in an
733 arbitrary number of parentheses.
738 The <literal>ForeignPtr</literal> datatype has been altered
739 to make it more efficient. There are also new functions
740 <literal>mallocPlainForeignPtr</literal> and
741 <literal>mallocPlainForeignPtrBytes</literal> which
742 do not allow you to attach a finalizer to the
743 <literal>ForeignPtr</literal>.
748 The <literal>Text.Regex</literal> and
749 <literal>Text.Regex.Posix</literal> modules have been removed.
750 Instead, use the new <literal>regex-compat</literal> package
751 for a drop-in <literal>Text.Regex</literal> replacement, or
752 the new library in the new <literal>regex-posix</literal>
764 Version number 1.1.5 (was 1.1.4).
769 Support for JHC, symmetric to the support for the other
770 implementations, has been added throughout.
775 Support for object splitting and building in-place
776 has been added throughout.
781 Added a <filename>debianTemplate</filename> directory with
782 templates for building Debian packages from Cabal packages.
787 Added <filename>cabal-setup</filename>, a user interface to
788 building and installing Cabal packages.
793 Added <filename>cabal-install</filename>, an automated
794 installer for cabal packages.
799 There is now a <literal>Network.Hackage</literal> hierarchy
800 for code needed by hackage, the package server.
805 There are now modules
806 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
807 for each of <literal>GHC</literal>, <literal>NHC</literal>,
808 <literal>Hugs</literal> and <literal>JHC</literal>.
809 The <literal>Distribution.Simple.Build</literal> and
810 <literal>Distribution.Simple.Install</literal> modules have
811 shrunk correspondingly.
816 <literal>Distribution.GetOpt</literal> is no longer a
822 <literal>Distribution.Simple</literal> exports a function
823 <literal>defaultMainArgs</literal>, which is identical to
824 <literal>defaultMain</literal> except that the arguments are
825 given as a list of strings rather than being retrieved with
826 <literal>getArgs</literal>.
831 <literal>Distribution.Simple.Configure</literal>
833 <literal>LocalBuildInfo</literal>,
835 <literal>configDependency</literal> and
836 <literal>configCompilerAux</literal>.
841 <literal>Distribution.Simple.LocalBuildInfo</literal> now
842 exports <literal>mkHaddockDir</literal>,
843 <literal>distPref</literal>,
844 <literal>srcPref</literal>,
845 <literal>autogenModulesDir</literal> and
846 <literal>mkIncludeDir</literal>.
851 <literal>Distribution.PackageDescription</literal> now
852 exports <literal>haddockName</literal>.
857 <literal>Distribution.Simple.Utils</literal> now exports
858 <literal>copyDirectoryRecursiveVerbose</literal>,
859 <literal>dirOf</literal>,
860 <literal>distPref</literal>,
861 <literal>haddockPref</literal> and
862 <literal>srcPref</literal>.
863 It no longer exports <literal>mkGHCiLibName</literal>.
870 <title>haskell98</title>
874 No change (version 1.0).
881 <title>parsec</title>
885 Version number 2.0 (was 1.0).
897 <title>readline</title>
901 No change (version 1.0).
908 <title>regex-base</title>
917 New library that provides common functions for different
925 <title>regex-compat</title>
934 New package providing a replacement
935 <literal>Text.Regex</literal> module.
942 <title>regex-posix</title>
951 A new package providing POSIX regexes.
962 Version number 2.0 (was 1.0).
967 A new module <literal>Control.Monad.STM</literal>
969 <literal>MonadPlus</literal> instance for
970 <literal>STM</literal> and the function
971 <literal>check</literal> (both used to be in
972 <literal>Control.Concurrent.STM</literal>).
974 <literal>STM</literal>,
975 <literal>atomically</literal>,
976 <literal>retry</literal>,
977 <literal>orElse</literal> and
978 <literal>catchSTM</literal>.
984 <literal>Control.Concurrent.STM.TArray</literal> defines
985 <literal>TArray</literal>, a transactional array, and makes
986 it an instance of <literal>MArray</literal>.
991 <literal>Control.Concurrent.STM.TChan</literal> now provides
992 a function <literal>newTChanIO</literal>, which allows
993 <literal>TChan</literal>s to be created in the IO monad.
994 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
995 provides <literal>newTMVarIO</literal> and
996 <literal>newEmptyTMVarIO</literal>, and
997 <literal>Control.Concurrent.STM.TVar</literal> exports
998 <literal>newTVarIO</literal>.
1003 <literal>Control.Concurrent.STM.TVar</literal> exports
1004 <literal>registerDelay</literal>.
1009 The <literal>Control.Concurrent.STM</literal> module has been
1010 updated to re-export all the new modules.
1017 <title>template-haskell</title>
1021 Version number 2.0 (was 1.0).
1026 A <literal>Show</literal> instance is now derived for
1027 <literal>Info</literal>, <literal>Fixity</literal> and
1028 <literal>FixityDirection</literal> in
1029 <literal>Language.Haskell.TH.Syntax</literal>.
1034 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1035 a type <literal>PkgName</literal> and functions
1036 <literal>mkPkgName</literal> and
1037 <literal>pkgString</literal>
1038 for dealing with package names.
1043 The <literal>patGE</literal> function in
1044 <literal>Language.Haskell.TH.Lib</literal> now takes the
1045 final expression separately to the list of statements
1046 rather than splitting it off itself.
1057 No change (version 1.0).
1064 <title>Win32</title>
1068 Version number 2.0 (was 1.0).
1073 Now maintained by Esa Ilari Vuokko.
1078 There is a new module
1079 <literal>System.Win32.Console</literal>
1080 providing an interface to the Windows Console API.
1085 There is a new module
1086 <literal>System.Win32.DebugApi</literal>
1087 providing an interface to the Windows DebugApi.
1092 There is a new module
1093 <literal>System.Win32.FileMapping</literal>
1094 for working with memory-mapped files.
1099 There is a new module
1100 <literal>System.Win32.SimpleMAPI</literal>
1101 for using the Windows mail API.
1106 There is a new module
1107 <literal>System.Win32.Time</literal>
1108 for using the Windows time API.
1113 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1114 <literal>Graphics.Win32.Misc</literal> to
1115 <literal>System.Win32.Types</literal>.
1120 <literal>System.Win32.File</literal> has a new
1121 function <literal>getFileInformationByHandle</literal>
1122 and associated data types.
1127 <literal>System.Win32.Info</literal> has a new
1128 function <literal>getSystemInfo</literal> and associated
1134 <literal>System.Win32.Process</literal> now has many more
1140 <literal>System.Win32.Types</literal> has new types
1141 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1142 and <literal>SIZE_T</literal>. It also has new helper
1143 functions <literal>ddwordToDwords</literal> and
1144 <literal>dwordsToDdword</literal> to split and combine
1145 ddwords into high and low components.
1150 <literal>System.Win32</literal> re-exports
1151 <literal>System.Win32.FileMapping</literal>,
1152 <literal>System.Win32.Time</literal>
1153 and <literal>System.Win32.Console</literal>.
1161 <title>Extra Libraries</title>
1167 Version number 2.0 (was 1.0).
1172 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1173 Its <literal>Phase</literal> and <literal>Duration</literal>
1174 exports are now exported by
1175 <literal>Sound.ALUT.Loaders</literal> and its
1176 <literal>helloWorld</literal>,
1177 <literal>sine</literal>,
1178 <literal>square</literal>,
1179 <literal>sawtooth</literal>,
1180 <literal>impulse</literal> and
1181 <literal>whiteNoise</literal>
1182 exports are now constructors of the
1183 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1191 <title>arrows</title>
1195 Version number 0.2 (was 0.1).
1200 <literal>Control.Sequence</literal> has been removed in
1201 favour of the new <literal>Control.Applicative</literal>
1202 module in <literal>base</literal>.
1218 <literal>cgi</literal> is a new package, developing on
1219 what used to be <literal>Network.CGI</literal> in the
1220 <literal>network</literal> package.
1231 Version number 5.3 (was 5.2).
1236 <literal>Data.Graph.Inductive.Graph</literal> no longer
1237 exports <literal>UContext</literal>.
1242 <literal>Data.Graph.Inductive.Graph</literal> now exports
1243 <literal>delLEdge</literal>.
1254 Version number remains 2.0.
1259 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1260 <literal>DisplayMode</literal> has a new constructor
1261 <literal>WithAuxBuffers</literal> and
1262 <literal>DisplayCapability</literal> has a new constructor
1263 <literal>DisplayAux</literal>. These represent freeglut-only
1269 There are new examples in
1270 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1271 <filename>RedBook/AAIndex.hs</filename>,
1272 <filename>RedBook/AARGB.hs</filename>,
1273 <filename>RedBook/AccAnti.hs</filename>,
1274 <filename>RedBook/AccPersp.hs</filename>,
1275 <filename>RedBook/Alpha3D.hs</filename>,
1276 <filename>RedBook/DOF.hs</filename>,
1277 <filename>RedBook/FogIndex.hs</filename>,
1278 <filename>RedBook/Multisamp.hs</filename>,
1279 <filename>RedBook/PointP.hs</filename>,
1280 <filename>RedBook/PolyOff.hs</filename>,
1281 <filename>RedBook/Stencil.hs</filename>,
1282 <filename>RedBook/Stroke.hs</filename> and
1283 <filename>RedBook/Torus.hs</filename>,
1285 <filename>RedBook/Font.hs</filename> and
1286 <filename>RedBook/Histogram.hs</filename> have been
1294 <title>haskell-src</title>
1298 No change (version 1.0).
1309 No change (version 3.1).
1325 <literal>html</literal> is a new package, developing on
1326 what used to be <literal>Text.Html</literal> and
1327 <literal>Text.Html.BlockTable</literal> in the
1328 <literal>base</literal> package.
1333 <literal>Text.Html.BlockTable</literal> exports a new
1334 function <literal>empty</literal>.
1341 <title>HUnit</title>
1345 No change (version 1.1).
1356 No change (version 1.0).
1363 <title>network</title>
1367 Version number 2.0 (was 1.0).
1372 <literal>Network.CGI</literal> has been removed; use the
1373 <literal>cgi</literal> package instead.
1378 <literal>Network.BSD</literal> no longer exports
1379 <literal>symlink</literal> or <literal>readlink</literal>;
1381 <literal>System.Posix.Files.createSymbolicLink</literal> and
1382 <literal>System.Posix.Files.readSymbolicLink</literal>
1388 <literal>Network.BSD</literal> now exports
1389 <literal>defaultProtocol</literal>.
1394 <literal>Network.Socket.SocketStatus</literal> now has a
1395 constructor <literal>ConvertedToHandle</literal> for sockets
1396 that have been converted to handles.
1401 <literal>Network.Socket.Family</literal> now has the
1402 following additional constructors:
1403 <literal>AF_NETROM</literal>,
1404 <literal>AF_BRIDGE</literal>,
1405 <literal>AF_ATMPVC</literal>,
1406 <literal>AF_ROSE</literal>,
1407 <literal>AF_NETBEUI</literal>,
1408 <literal>AF_SECURITY</literal>,
1409 <literal>AF_PACKET</literal>,
1410 <literal>AF_ASH</literal>,
1411 <literal>AF_ECONET</literal>,
1412 <literal>AF_ATMSVC</literal>,
1413 <literal>AF_IRDA</literal>,
1414 <literal>AF_PPPOX</literal>,
1415 <literal>AF_WANPIPE</literal> and
1416 <literal>AF_BLUETOOTH</literal>.
1421 In <literal>Network.URI</literal>,
1422 <literal>parseabsoluteURI</literal> has been deprecated with
1423 a new function <literal>parseAbsoluteURI</literal> taking
1431 <title>ObjectIO</title>
1435 No change (version 1.0).
1442 <title>OpenAL</title>
1446 Version number 1.3 (was 1.2).
1458 <title>OpenGL</title>
1462 Version number 2.1 (was 2.0).
1474 <title>QuickCheck</title>
1478 No change (version 1.0).
1494 <literal>time</literal> is a new package, for dealing with
1495 dates, times and time intervals.
1506 Version number 1.2 (was 1.1).
1511 In <literal>Graphics.X11.Xlib.Types</literal>,
1512 <literal>XGCValues</literal> has been renamed
1513 <literal>GCValues</literal> and
1514 <literal>XSetWindowAttributes</literal> has been renamed
1515 <literal>SetWindowAttributes</literal>.
1520 In <literal>Graphics.X11.Xlib.Misc</literal>,
1521 <literal>allocaXSetWindowAttributes</literal> has been
1522 renamed <literal>allocaSetWindowAttributes</literal>.
1527 The <literal>FontStruct</literal> type has moved from
1528 <literal>Graphics.X11.Xlib.Types</literal> to
1529 <literal>Graphics.X11.Xlib.Font</literal>.
1535 <literal>Point</literal>,
1536 <literal>Rectangle</literal>,
1537 <literal>Arc</literal>,
1538 <literal>Segment</literal> and
1539 <literal>Color</literal> types in
1540 <literal>Graphics.X11.Xlib.Types</literal>
1541 are now proper datatypes rather than synonyms for tuples.
1542 They all have a <literal>Storable</literal> instance.
1547 The <literal>Byte</literal> and <literal>Short</literal>
1548 types from <literal>Graphics.X11.Xlib.Types</literal> have
1550 The following type synonyms, which had already been marked
1551 "Backwards compatibility", have also been removed:
1552 <literal>ListPoint</literal>,
1553 <literal>ListRectangle</literal>,
1554 <literal>ListArc</literal>,
1555 <literal>ListSegment</literal> and
1556 <literal>ListColor</literal>.
1561 <literal>Eq</literal>,
1562 <literal>Ord</literal>,
1563 <literal>Show</literal>,
1564 <literal>Typeable</literal> and
1565 <literal>Data</literal> are now derived for:
1566 <literal>XEvent</literal>,
1567 <literal>FdSet</literal> and
1568 <literal>TimeZone</literal> in
1569 <literal>Graphics.X11.Xlib.Event</literal>,
1570 <literal>FontStruct</literal> in
1571 <literal>Graphics.X11.Xlib.Font</literal>,
1572 <literal>XErrorEvent</literal>,
1573 <literal>XComposeStatus</literal> and
1574 <literal>XTextProperty</literal> in
1575 <literal>Graphics.X11.Xlib.Misc</literal>,
1576 <literal>Region</literal> in
1577 <literal>Graphics.X11.Xlib.Region</literal>,
1578 <literal>Display</literal>,
1579 <literal>Screen</literal>,
1580 <literal>Visual</literal>,
1581 <literal>GC</literal>,
1582 <literal>GCValues</literal>,
1583 <literal>SetWindowAttributes</literal>,
1584 <literal>Point</literal>,
1585 <literal>Rectangle</literal>,
1586 <literal>Arc</literal>,
1587 <literal>Segment</literal> and
1588 <literal>Color</literal> in
1589 <literal>Graphics.X11.Xlib.Types</literal>.
1596 <title>xhtml</title>
1605 <literal>xhtml</literal> is a new package, developing on
1606 what used to be <literal>Text.Html</literal> and
1607 <literal>Text.Html.BlockTable</literal> in the
1608 <literal>base</literal> package.
1616 <title>Internal changes</title>
1620 GHC development now has its own integrated
1621 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1627 GHC has now moved to darcs. See
1629 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1630 wiki</ulink> for more details. The sources have moved around a
1631 bit within the tree as a result, most notably the GHC sources
1632 are no longer kept within a <filename>ghc/</filename>
1638 The native code generator is now capable of compiling loops,
1639 which gets us a big step closer to being able to compile
1640 entirely without gcc on well-supported arches.