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>.
257 By default, pattern bindings in GHC are now monomorphic.
258 This means that some valid Haskell 98 programs will get
259 rejected, but we believe they will be few in number.
260 To revert to the old behaviour use the
261 <option>-fno-mono-pat-binds</option> flag.
262 More details are in <xref linkend="options-language" />.
267 GHCi already does more defaulting than Haskell 98 so that, for
268 example, <literal>reverse []</literal> shows a result rather
269 than giving an ambiguous type variable error. There is now a
270 flag <option>-fextended-default-rules</option> to use these
271 defaulting rules with GHC too.
272 More details are in <xref linkend="extended-default-rules" />.
277 You can now give both class and instance declarations in
278 <filename>.hs-boot</filename> files. More details in
279 <xref linkend="mutual-recursion" />.
284 It is now possible, with the <literal>-I</literal> RTS flag,
285 to control the amount of idle time that happens before a major
291 The old syntax for FFI declarations (deprecated since 5.04)
292 is no longer accepted.
297 The <option>-split-objs</option> flag can now be used with
298 <option>--make</option>, and hence can be used by cabal.
305 <title>GHCi changes</title>
310 GHCi now allows tab completion of in-scope names and modules
311 on platforms that use readline (i.e. not Windows).
316 GHCi now has a <literal>:main</literal> command that allows
317 you to call the <literal>main</literal> function with
318 command-line arguments.
319 See <xref linkend="ghci-commands" /> for more information.
324 GHCi now has <literal>:ctags</literal> and
325 <literal>:etags</literal> commands to generate tags files for
326 vi-style and emacs-style editors respectively.
327 See <xref linkend="ghci-commands" /> for more information.
334 <title>Libraries</title>
336 Libraries are now divided into core libraries (those that are
337 necessary to build GHC) and extra libraries. Decoupling the extra
338 libraries means that they can release independently of GHC
339 releases, and makes development builds of GHC quicker as they no
340 longer need to build unnecessary libraries.
344 The hslibs libraries have finally been removed.
349 <title>Core Libraries</title>
355 Version number 2.0 (was 1.0).
360 We now have <literal>Read</literal> and
361 <literal>Show</literal> instances for up to 15-tuples (used
362 to be up to 5-tuples).
367 New module <literal>Control.Applicative</literal> that
368 describes a structure intermediate between a functor and
369 a monad: it provides pure expressions and sequencing, but
375 <literal>Control.Exception</literal> now exports
376 <literal>bracketOnError</literal>, which behaves like
377 <literal>bracket</literal> but only runs the final
378 action if the main action raised an error.
383 There is a new module
384 <literal>Control.Monad.Instances</literal> which
385 provides <literal>Monad</literal> and
386 <literal>Functor</literal> instances for
387 <literal>((->) r)</literal> (were in
388 <literal>mtl</literal>'s
389 <literal>Control.Monad.Reader</literal>),
390 a <literal>Functor</literal> instance for
391 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
392 <literal>Control.Monad.Error</literal>) and a
393 <literal>Functor</literal> instance for
394 <literal>((,) a)</literal> (new).
399 The <literal>MonadFix</literal> instance for
400 <literal>((->) r)</literal> is now in
401 <literal>Control.Monad.Fix</literal> (was in
402 <literal>mtl</literal>'s
403 <literal>Control.Monad.Reader</literal>).
408 <literal>Control.Monad.ST</literal> now exports
409 <literal>unsafeSTToIO</literal>.
414 The <literal>HasBounds</literal> class has been removed from
415 <literal>Data.Array.Base</literal>, and its
416 <literal>bounds</literal> method is now in the
417 <literal>IArray</literal> class. The
418 <literal>MArray</literal> class
419 has also gained a method <literal>getBounds</literal>.
424 <literal>Data.Array.Base</literal> now provides an
425 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
431 <literal>Data.Array.Storable</literal> now exports a
432 function <literal>unsafeForeignPtrToStorableArray</literal>.
437 The new <literal>Data.ByteString</literal> hierarchy
438 provides time and space-efficient byte vectors.
439 The old <literal>Data.PackedString</literal> module is now
440 deprecated as a result, although there is not yet a
441 replacement if you need full unicode support.
446 <literal>GHC.Exts</literal> now provides a function
447 <literal>inline</literal> which, provided the RHS is visible
448 to the compiler, forcibly inlines its argument.
449 Otherwise, it acts like <literal>id</literal>.
454 <literal>GHC.Exts</literal> now provides a function
455 <literal>lazy</literal> which forces GHC to think that its
456 argument is lazy in its first argument.
461 <literal>Data.FiniteMap</literal> has been removed
462 (deprecated since 6.4). Use <literal>Data.Map</literal>
468 <literal>Data.Char</literal> now exports
469 <literal>isLetter</literal>,
470 <literal>isMark</literal>,
471 <literal>isNumber</literal>,
472 <literal>isPunctuation</literal>,
473 <literal>isSymbol</literal>,
474 <literal>isSeparator</literal>,
475 <literal>isAsciiUpper</literal>,
476 <literal>isAsciiLower</literal> and
477 <literal>toTitle</literal>.
478 It also exports a function
479 <literal>generalCategory</literal> that tells you the
480 category of a character in terms of a datatype
481 <literal>GeneralCategory</literal>.
486 <literal>Data.Dynamic</literal> now exports a function
487 <literal>dynTypeRep</literal>.
492 There is a new module <literal>Data.Eq</literal> which
493 just exports the <literal>Eq</literal> class.
494 Likewise, a new module <literal>Data.Ord</literal>
495 exports the <literal>Ord</literal> class, as well as the
496 handy <literal>comparing</literal> function.
501 There is a new module <literal>Data.Fixed</literal>
502 providing fixed-precision arithmetic.
507 There is a new module <literal>Data.Foldable</literal>
508 providing a class for foldable datatypes. It gives instances
509 for <literal>Maybe</literal>, <literal>[]</literal> and
510 <literal>Array i</literal>.
515 There is a new module <literal>Data.Traversable</literal>
516 providing a class for data structures that can be traversed
517 from left to right. It gives instances
518 for <literal>Maybe</literal>, <literal>[]</literal> and
519 <literal>Array i</literal>.
524 <literal>Data.FunctorM</literal> has been deprecated;
525 use <literal>Data.Foldable</literal> and
526 <literal>Data.Traversable</literal> instead.
531 The <literal>toConstr</literal> definitions for tuples in
532 <literal>Data.Generics.Instances</literal> now actually
533 evaluate their arguments to tuples before returning
539 <literal>Data.IntMap</literal> now exports
540 <literal>notMember</literal>,
541 <literal>alter</literal>,
542 <literal>mapMaybe</literal>,
543 <literal>mapMaybeWithKey</literal>,
544 <literal>mapEither</literal> and
545 <literal>mapEitherWithKey</literal>.
546 It also has <literal>Monoid</literal>,
547 <literal>Foldable</literal> and <literal>Read</literal>
553 <literal>Data.IntSet</literal> now exports
554 <literal>notMember</literal>. It also has
555 <literal>Monoid</literal> and <literal>Read</literal>
561 <literal>Data.Map</literal> now exports
562 <literal>notMember</literal>,
563 <literal>alter</literal>,
564 <literal>mapMaybe</literal>,
565 <literal>mapMaybeWithKey</literal>,
566 <literal>mapEither</literal>,
567 <literal>mapEitherWithKey</literal>,
568 <literal>minView</literal> and
569 <literal>maxView</literal>.
570 It also has <literal>Monoid</literal>,
571 <literal>Traversable</literal>, <literal>Foldable</literal>
572 and <literal>Read</literal> instances.
577 <literal>Data.Set</literal> now exports
578 <literal>notMember</literal>,
579 <literal>minView</literal> and
580 <literal>maxView</literal>.
581 It also has <literal>Monoid</literal>,
582 <literal>Foldable</literal>
583 and <literal>Read</literal> instances.
587 The old, deprecated (since 6.4) interface consisting of
588 <literal>emptySet</literal>,
589 <literal>mkSet</literal>,
590 <literal>setToList</literal>,
591 <literal>unitSet</literal>,
592 <literal>elementOf</literal>,
593 <literal>isEmptySet</literal>,
594 <literal>cardinality</literal>,
595 <literal>unionManySets</literal>,
596 <literal>minusSet</literal>,
597 <literal>mapSet</literal>,
598 <literal>intersect</literal>,
599 <literal>addToSet</literal> and
600 <literal>delFromSet</literal> has been removed.
605 <literal>Data.Monoid</literal> no longer contains the
606 <literal>Monoid</literal>
607 instances for <literal>Map</literal>,
608 <literal>IntMap</literal>, <literal>Set</literal> and
609 <literal>IntSet</literal>. They have been moved to their own
610 modules, as above. The <literal>(a -> a)</literal> instance
611 has been replaced with a
612 <literal>Monoid b => Monoid (a -> b)</literal> instance.
613 The module also now exports
614 <literal>Dual</literal>,
615 <literal>Endo</literal>,
616 <literal>All</literal>,
617 <literal>Any</literal>,
618 <literal>Sum</literal> and
619 <literal>Product</literal> types, and
620 <literal>Monoid</literal> instances for them.
625 There is a new module <literal>Data.Sequence</literal>
626 for finite sequences. The <literal>Data.Queue</literal>
627 module is now deprecated in favour of this faster, more
628 featureful replacement.
633 <literal>Data.Tree</literal> now has
634 <literal>Data</literal>, <literal>Typeable</literal>,
635 <literal>Traversable</literal> and
636 <literal>Foldable</literal>
638 <literal>Tree</literal> datatype.
643 <literal>Data.Typeable</literal> now uses
644 <option>-fallow-overlapping-instances</option>, so the
645 generic instances can be overriden for your own datatypes.
650 <literal>Debug.Trace</literal> now exports
651 <literal>traceShow</literal>, which is the same as
652 <literal>trace</literal> except its first argument can be
653 any showable thing rather than being required to be a
659 <literal>Foreign.C.Types</literal> now also defines
660 <literal>CIntPtr</literal>,
661 <literal>CUIntPtr</literal>,
662 <literal>CIntMax</literal> and
663 <literal>CUIntMax</literal>.
668 <literal>Foreign.ForeignPtr</literal> now exports
669 <literal>FinalizerEnvPtr</literal>,
670 <literal>newForeignPtrEnv</literal> and
671 <literal>addForeignPtrFinalizerEnv</literal>.
672 Together, these allow the use of finalizers which are passed
673 an additional environment parameter.
678 <literal>Foreign.Marshal.Utils</literal> no longer exports
679 the <literal>withObject</literal> function, deprecated since
680 5.04; use <literal>with</literal> instead.
685 Foreign.Ptr now also defines
686 <literal>IntPtr</literal>,
687 <literal>ptrToIntPtr</literal>,
688 <literal>intPtrToPtr</literal>,
689 <literal>WordPtr</literal>,
690 <literal>ptrToWordPtr</literal> and
691 <literal>wordPtrToPtr</literal>.
696 There are now <literal>Bounded</literal> instances for up to
697 15-tuples (used to be up to 4-tuples).
702 The <literal>Text.Html</literal> and
703 <literal>Text.Html.BlockTable</literal> modules have now
704 been removed, with the new <literal>html</literal> and
705 <literal>xhtml</literal> packages providing replacements.
710 <literal>Text.Read</literal> now exports a function
711 <literal>parens</literal> which parses a value in an
712 arbitrary number of parentheses.
717 The <literal>ForeignPtr</literal> datatype has been altered
718 to make it more efficient. There are also new functions
719 <literal>mallocPlainForeignPtr</literal> and
720 <literal>mallocPlainForeignPtrBytes</literal> which
721 do not allow you to attach a finalizer to the
722 <literal>ForeignPtr</literal>.
727 The <literal>Text.Regex</literal> and
728 <literal>Text.Regex.Posix</literal> modules have been removed.
729 Instead, use the new <literal>regex-compat</literal> package
730 for a drop-in <literal>Text.Regex</literal> replacement, or
731 the new library in the new <literal>regex-posix</literal>
743 Version number 1.1.5 (was 1.1.4).
748 Support for JHC, symmetric to the support for the other
749 implementations, has been added throughout.
754 Support for object splitting and building in-place
755 has been added throughout.
760 Added a <filename>debianTemplate</filename> directory with
761 templates for building Debian packages from Cabal packages.
766 Added <filename>cabal-setup</filename>, a user interface to
767 building and installing Cabal packages.
772 Added <filename>cabal-install</filename>, an automated
773 installer for cabal packages.
778 There is now a <literal>Network.Hackage</literal> hierarchy
779 for code needed by hackage, the package server.
784 There are now modules
785 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
786 for each of <literal>GHC</literal>, <literal>NHC</literal>,
787 <literal>Hugs</literal> and <literal>JHC</literal>.
788 The <literal>Distribution.Simple.Build</literal> and
789 <literal>Distribution.Simple.Install</literal> modules have
790 shrunk correspondingly.
795 <literal>Distribution.GetOpt</literal> is no longer a
801 <literal>Distribution.Simple</literal> exports a function
802 <literal>defaultMainArgs</literal>, which is identical to
803 <literal>defaultMain</literal> except that the arguments are
804 given as a list of strings rather than being retrieved with
805 <literal>getArgs</literal>.
810 <literal>Distribution.Simple.Configure</literal>
812 <literal>LocalBuildInfo</literal>,
814 <literal>configDependency</literal> and
815 <literal>configCompilerAux</literal>.
820 <literal>Distribution.Simple.LocalBuildInfo</literal> now
821 exports <literal>mkHaddockDir</literal>,
822 <literal>distPref</literal>,
823 <literal>srcPref</literal>,
824 <literal>autogenModulesDir</literal> and
825 <literal>mkIncludeDir</literal>.
830 <literal>Distribution.PackageDescription</literal> now
831 exports <literal>haddockName</literal>.
836 <literal>Distribution.Simple.Utils</literal> now exports
837 <literal>copyDirectoryRecursiveVerbose</literal>,
838 <literal>dirOf</literal>,
839 <literal>distPref</literal>,
840 <literal>haddockPref</literal> and
841 <literal>srcPref</literal>.
842 It no longer exports <literal>mkGHCiLibName</literal>.
849 <title>haskell98</title>
853 No change (version 1.0).
860 <title>parsec</title>
864 Version number 2.0 (was 1.0).
876 <title>readline</title>
880 No change (version 1.0).
887 <title>regex-base</title>
896 New library that provides common functions for different
904 <title>regex-compat</title>
913 New package providing a replacement
914 <literal>Text.Regex</literal> module.
921 <title>regex-posix</title>
930 A new package providing POSIX regexes.
941 Version number 2.0 (was 1.0).
946 A new module <literal>Control.Monad.STM</literal>
948 <literal>MonadPlus</literal> instance for
949 <literal>STM</literal> and the function
950 <literal>check</literal> (both used to be in
951 <literal>Control.Concurrent.STM</literal>).
953 <literal>STM</literal>,
954 <literal>atomically</literal>,
955 <literal>retry</literal>,
956 <literal>orElse</literal> and
957 <literal>catchSTM</literal>.
962 There is a new module
963 <literal>Control.Sequential.STM</literal> for non-concurrent
964 transactions which nevertheless need to be atomic in the
971 <literal>Control.Concurrent.STM.TArray</literal> defines
972 <literal>TArray</literal>, a transactional array, and makes
973 it an instance of <literal>MArray</literal>.
978 <literal>Control.Concurrent.STM.TChan</literal> now provides
979 a function <literal>newTChanIO</literal>, which allows
980 <literal>TChan</literal>s to be created in the IO monad.
981 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
982 provides <literal>newTMVarIO</literal> and
983 <literal>newEmptyTMVarIO</literal>, and
984 <literal>Control.Concurrent.STM.TVar</literal> exports
985 <literal>newTVarIO</literal>.
990 <literal>Control.Concurrent.STM.TVar</literal> exports
991 <literal>registerDelay</literal>.
996 The <literal>Control.Concurrent.STM</literal> module has been
997 updated to re-export all the new modules.
1004 <title>template-haskell</title>
1008 Version number 2.0 (was 1.0).
1013 A <literal>Show</literal> instance is now derived for
1014 <literal>Info</literal>, <literal>Fixity</literal> and
1015 <literal>FixityDirection</literal> in
1016 <literal>Language.Haskell.TH.Syntax</literal>.
1021 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1022 a type <literal>PkgName</literal> and functions
1023 <literal>mkPkgName</literal> and
1024 <literal>pkgString</literal>
1025 for dealing with package names.
1030 The <literal>patGE</literal> function in
1031 <literal>Language.Haskell.TH.Lib</literal> now takes the
1032 final expression separately to the list of statements
1033 rather than splitting it off itself.
1044 No change (version 1.0).
1051 <title>Win32</title>
1055 Version number 2.0 (was 1.0).
1060 Now maintained by Esa Ilari Vuokko.
1065 There is a new module
1066 <literal>System.Win32.Console</literal>
1067 providing an interface to the Windows Console API.
1072 There is a new module
1073 <literal>System.Win32.DebugApi</literal>
1074 providing an interface to the Windows DebugApi.
1079 There is a new module
1080 <literal>System.Win32.FileMapping</literal>
1081 for working with memory-mapped files.
1086 There is a new module
1087 <literal>System.Win32.SimpleMAPI</literal>
1088 for using the Windows mail API.
1093 There is a new module
1094 <literal>System.Win32.Time</literal>
1095 for using the Windows time API.
1100 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1101 <literal>Graphics.Win32.Misc</literal> to
1102 <literal>System.Win32.Types</literal>.
1107 <literal>System.Win32.File</literal> has a new
1108 function <literal>getFileInformationByHandle</literal>
1109 and associated data types.
1114 <literal>System.Win32.Info</literal> has a new
1115 function <literal>getSystemInfo</literal> and associated
1121 <literal>System.Win32.Process</literal> now has many more
1127 <literal>System.Win32.Types</literal> has new types
1128 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1129 and <literal>SIZE_T</literal>. It also has new helper
1130 functions <literal>ddwordToDwords</literal> and
1131 <literal>dwordsToDdword</literal> to split and combine
1132 ddwords into high and low components.
1137 <literal>System.Win32</literal> re-exports
1138 <literal>System.Win32.FileMapping</literal>,
1139 <literal>System.Win32.Time</literal>
1140 and <literal>System.Win32.Console</literal>.
1145 <literal>System.Win32</literal> no longer exports
1146 <literal>LCID</literal>,
1147 <literal>LANGID</literal>,
1148 <literal>SortID</literal>,
1149 <literal>SubLANGID</literal>,
1150 <literal>PrimaryLANGID</literal>,
1151 <literal>mAKELCID</literal>,
1152 <literal>lANGIDFROMLCID</literal>,
1153 <literal>sORTIDFROMLCID</literal>,
1154 <literal>mAKELANGID</literal>,
1155 <literal>pRIMARYLANGID</literal> or
1156 <literal>sUBLANGID</literal> from
1157 <literal>System.Win32.NLS</literal>.
1165 <title>Extra Libraries</title>
1171 Version number 2.0 (was 1.0).
1176 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1177 Its <literal>Phase</literal> and <literal>Duration</literal>
1178 exports are now exported by
1179 <literal>Sound.ALUT.Loaders</literal> and its
1180 <literal>helloWorld</literal>,
1181 <literal>sine</literal>,
1182 <literal>square</literal>,
1183 <literal>sawtooth</literal>,
1184 <literal>impulse</literal> and
1185 <literal>whiteNoise</literal>
1186 exports are now constructors of the
1187 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1195 <title>arrows</title>
1199 Version number remains 0.1.
1204 <literal>Control.Sequence</literal> has been removed in
1205 favour of the new <literal>Control.Applicative</literal>
1206 module in <literal>base</literal>.
1222 <literal>cgi</literal> is a new package, developing on
1223 what used to be <literal>Network.CGI</literal> in the
1224 <literal>network</literal> package.
1235 Version number 5.3 (was 5.2).
1240 <literal>Data.Graph.Inductive.Graph</literal> no longer
1241 exports <literal>UContext</literal>.
1246 <literal>Data.Graph.Inductive.Graph</literal> now exports
1247 <literal>delLEdge</literal>.
1258 Version number remains 2.0.
1263 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1264 <literal>DisplayMode</literal> has a new constructor
1265 <literal>WithAuxBuffers</literal> and
1266 <literal>DisplayCapability</literal> has a new constructor
1267 <literal>DisplayAux</literal>. These represent freeglut-only
1273 There are new examples in
1274 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1275 <filename>RedBook/AAIndex.hs</filename>,
1276 <filename>RedBook/AARGB.hs</filename>,
1277 <filename>RedBook/AccAnti.hs</filename>,
1278 <filename>RedBook/AccPersp.hs</filename>,
1279 <filename>RedBook/Alpha3D.hs</filename>,
1280 <filename>RedBook/DOF.hs</filename>,
1281 <filename>RedBook/FogIndex.hs</filename>,
1282 <filename>RedBook/Multisamp.hs</filename>,
1283 <filename>RedBook/PointP.hs</filename>,
1284 <filename>RedBook/PolyOff.hs</filename>,
1285 <filename>RedBook/Stencil.hs</filename>,
1286 <filename>RedBook/Stroke.hs</filename> and
1287 <filename>RedBook/Torus.hs</filename>,
1289 <filename>RedBook/Font.hs</filename> and
1290 <filename>RedBook/Histogram.hs</filename> have been
1298 <title>haskell-src</title>
1302 No change (version 1.0).
1309 <title>HaXml</title>
1313 Version number 1.16 (was 1.12.1).
1318 There are now lazy versions of the parsing modules
1319 <literal>Text.XML.HaXml.ParseLazy</literal>
1320 (a lazy non-validating XML parser) and
1321 <literal>Text.XML.HaXml.Html.ParseLazy</literal>
1322 (a lazy HTML parser).
1327 There are lazy versions of two of the example tools,
1328 <literal>CanonicaliseLazy</literal> and
1329 <literal>XtractLazy</literal>.
1334 <literal>Text.XML.HaXml.Haskell2Xml</literal> and
1335 <literal>Text.XML.HaXml.Xml2Haskell</literal> have been
1336 removed, with <literal>Text.XML.HaXml.XmlContent</literal>
1338 You must now use <literal>{-! derive : XmlContent !-}</literal>
1339 rather than <literal>{-! derive :Haskell2Xml !-}</literal>
1340 to have instances derived for your classes.
1345 Now also provides the
1346 <literal>Text.ParserCombinators.HuttonMeijer</literal>
1347 monadic parser combinator library.
1352 Provides another new set of parser combinators, as well as a lazy
1353 variant, a variant that carries around state, and a
1354 variant that does both. The modules are
1355 <literal>Text.ParserCombinators.Poly</literal>,
1356 <literal>Text.ParserCombinators.PolyLazy</literal>,
1357 <literal>Text.ParserCombinators.PolyState</literal> and
1358 <literal>Text.ParserCombinators.PolyStateLazy</literal>
1361 <literal>Text.ParserCombinators.TextParser</literal>, which
1362 is the <literal>Poly</literal> parser combinators
1363 specialised for strings.
1368 Now provides a SAX-like parser in
1369 <literal>Text.XML.HaXml.SAX</literal>.
1374 Now provides a module
1375 <literal>Text.XML.HaXml.TypeMapping</literal>, which
1376 defines an explicit representation for Haskell types.
1377 This allows generation of a DTD from a Haskell value.
1382 The <literal>Posn</literal> type has been pulled out from
1383 <literal>Text.XML.HaXml.Lex</literal> into its own module
1384 <literal>Text.XML.HaXml.Posn</literal>. Some helper
1385 functions are also exported.
1390 The APIs to the pre-existing modules have also substantially
1402 No change (version 3.1).
1418 <literal>html</literal> is a new package, developing on
1419 what used to be <literal>Text.Html</literal> and
1420 <literal>Text.Html.BlockTable</literal> in the
1421 <literal>base</literal> package.
1426 <literal>Text.Html.BlockTable</literal> exports a new
1427 function <literal>empty</literal>.
1434 <title>HUnit</title>
1438 No change (version 1.1).
1456 <title>monads</title>
1460 Version number 2.0.1 (was 1.1).
1465 In <literal>Monad.Id</literal>, <literal>run</literal> has
1466 been renamed <literal>runId</literal>.
1471 The <literal>Monad.BackT</literal> module has been removed;
1472 use the new <literal>Monad.SearchT</literal> module instead.
1477 There is a new module <literal>Monad.ForEach</literal>
1478 containing a class <literal>ForEach</literal>, for
1479 applying a monadic function to each element in a container.
1480 It provides instances for <literal>[]</literal> and
1481 <literal>Maybe</literal>.
1486 The following combinators have been moved from
1487 <literal>Monad.Prelude</literal> to a new module
1488 <literal>Monad.Combinators</literal>:
1489 <literal>(@@)</literal>,
1490 <literal>(#)</literal>,
1491 <literal>(<#)</literal>,
1492 <literal>(<##)</literal>,
1493 <literal>concatMap</literal> and
1494 <literal>partitionM</literal>.
1495 <literal>Monad.Combinators</literal> also defines the
1496 following new combinators:
1497 <literal>ifM</literal>,
1498 <literal>whenM</literal>,
1499 <literal>andM</literal>,
1500 <literal>orM</literal>,
1501 <literal>allM</literal>,
1502 <literal>anyM</literal>,
1503 <literal>forEach2</literal>,
1504 <literal>forEach2_</literal>,
1505 <literal>forEach3</literal> and
1506 <literal>forEach3_</literal>, and re-exports
1507 <literal>Control.Monad</literal>.
1513 <literal>Monad.Cont</literal>,
1514 <literal>Monad.Except</literal>,
1515 <literal>Monad.Reader</literal>,
1516 <literal>Monad.State</literal> and
1517 <literal>Monad.Writer</literal> have been removed, but their
1518 monad transformer counterparts remain. If you want the
1519 monads then just transform the identity monad instead.
1524 The <literal>Monad.ExceptT</literal> module now also exports
1525 runExceptWith and unsafeRunExcept. It also now defines an
1526 instance <literal>ContM (ExceptT x m)</literal>.
1531 In <literal>Monad.Prelude</literal>, the
1532 <literal>get</literal> method of the
1533 <literal>ReaderM</literal> module has been renamed
1534 <literal>getR</literal>. The <literal>local</literal> method
1535 has been removed with a new class
1536 <literal>ReadUpdM</literal>, with methods
1537 <literal>updateR</literal>
1538 and <literal>setR</literal>, taking its place.
1539 The <literal>letLocal</literal> function has also been removed.
1544 In <literal>Monad.Prelude</literal>,
1545 <literal>update</literal> has been made a method of
1546 <literal>StateM</literal>.
1548 <literal>peek</literal> and <literal>poke</literal> methods
1549 have been renamed <literal>get</literal> and
1550 <literal>set</literal> respectively, and both have a default
1551 definition in terms of <literal>update</literal>.
1552 The <literal>poke_</literal> function has also been renamed
1553 <literal>set_</literal>.
1558 In <literal>Monad.Prelude</literal>,
1559 <literal>handle</literal> has been taken out of the
1560 <literal>ExceptM</literal> class and put into a new
1561 class <literal>HandlerM</literal> along with a new method
1562 <literal>checkExcept</literal>.
1563 There are also new functions <literal>withHandler</literal>
1564 and <literal>handle_</literal>.
1569 The <literal>TakeWriterM</literal> class has been renamed
1570 <literal>CollectorM</literal>, and rather than a single
1571 method <literal>takeFrom</literal> it has methods
1572 <literal>censor</literal> and <literal>collect</literal>
1573 with default definitions in terms of each other.
1578 <literal>Monad.Prelude</literal> defines a type
1579 <literal>Cont</literal> and functions
1580 <literal>returnCC</literal> and <literal>cJump</literal>.
1585 <literal>Monad.Prelude</literal> exports functions
1586 <literal>inReader</literal>,
1587 <literal>inWriter</literal>,
1588 <literal>inState</literal> and
1589 <literal>inExcept</literal>.
1590 These make it easy to turn a pure representation of an
1591 effectful computation into an actual computation.
1596 The <literal>zipWith3M</literal> and
1597 <literal>zipWith3M_</literal> functions have been removed
1598 from <literal>Monad.Prelude</literal>.
1603 <literal>Monad.Prelude</literal> now re-exports
1604 <literal>Monad.Combinators</literal> and
1605 <literal>Monad.ForEach</literal>, but no longer re-exports
1606 <literal>Monad</literal>.
1611 There is a new module <literal>Monad.Transformers</literal>
1613 <literal>Monad.Id</literal>,
1614 <literal>Monad.ReaderT</literal>,
1615 <literal>Monad.WriterT</literal>,
1616 <literal>Monad.StateT</literal>,
1617 <literal>Monad.ExceptT</literal>,
1618 <literal>Monad.SearchT</literal> and
1619 <literal>Monad.ContT</literal>.
1630 No change (version 1.0).
1637 <title>network</title>
1641 Version number 2.0 (was 1.0).
1646 <literal>Network.CGI</literal> has been removed; use the
1647 <literal>cgi</literal> package instead.
1652 <literal>Network.BSD</literal> no longer exports
1653 <literal>symlink</literal> or <literal>readlink</literal>;
1655 <literal>System.Posix.Files.createSymbolicLink</literal> and
1656 <literal>System.Posix.Files.readSymbolicLink</literal>
1662 <literal>Network.BSD</literal> now exports
1663 <literal>defaultProtocol</literal>.
1668 <literal>Network.Socket.SocketStatus</literal> now has a
1669 constructor <literal>ConvertedToHandle</literal> for sockets
1670 that have been converted to handles.
1675 <literal>Network.Socket.Family</literal> now has the
1676 following additional constructors:
1677 <literal>AF_NETROM</literal>,
1678 <literal>AF_BRIDGE</literal>,
1679 <literal>AF_ATMPVC</literal>,
1680 <literal>AF_ROSE</literal>,
1681 <literal>AF_NETBEUI</literal>,
1682 <literal>AF_SECURITY</literal>,
1683 <literal>AF_PACKET</literal>,
1684 <literal>AF_ASH</literal>,
1685 <literal>AF_ECONET</literal>,
1686 <literal>AF_ATMSVC</literal>,
1687 <literal>AF_IRDA</literal>,
1688 <literal>AF_PPPOX</literal>,
1689 <literal>AF_WANPIPE</literal> and
1690 <literal>AF_BLUETOOTH</literal>.
1695 In <literal>Network.URI</literal>,
1696 <literal>parseabsoluteURI</literal> has been deprecated with
1697 a new function <literal>parseAbsoluteURI</literal> taking
1705 <title>ObjectIO</title>
1709 No change (version 1.0).
1716 <title>OpenAL</title>
1720 Version number 1.3 (was 1.2).
1732 <title>OpenGL</title>
1736 Version number 2.1 (was 2.0).
1748 <title>QuickCheck</title>
1752 No change (version 1.0).
1768 <literal>time</literal> is a new package, for dealing with
1769 dates, times and time intervals.
1780 Version number remains 1.1.
1785 In <literal>Graphics.X11.Xlib.Types</literal>,
1786 <literal>XGCValues</literal> has been renamed
1787 <literal>GCValues</literal> and
1788 <literal>XSetWindowAttributes</literal> has been renamed
1789 <literal>SetWindowAttributes</literal>.
1794 In <literal>Graphics.X11.Xlib.Misc</literal>,
1795 <literal>allocaXSetWindowAttributes</literal> has been
1796 renamed <literal>allocaSetWindowAttributes</literal>.
1801 The <literal>FontStruct</literal> type has moved from
1802 <literal>Graphics.X11.Xlib.Types</literal> to
1803 <literal>Graphics.X11.Xlib.Font</literal>.
1809 <literal>Point</literal>,
1810 <literal>Rectangle</literal>,
1811 <literal>Arc</literal>,
1812 <literal>Segment</literal> and
1813 <literal>Color</literal> types in
1814 <literal>Graphics.X11.Xlib.Types</literal>
1815 are now proper datatypes rather than synonyms for tuples.
1816 They all have a <literal>Storable</literal> instance.
1821 The <literal>Byte</literal> and <literal>Short</literal>
1822 types from <literal>Graphics.X11.Xlib.Types</literal> have
1824 The following type synonyms, which had already been marked
1825 "Backwards compatibility", have also been removed:
1826 <literal>ListPoint</literal>,
1827 <literal>ListRectangle</literal>,
1828 <literal>ListArc</literal>,
1829 <literal>ListSegment</literal> and
1830 <literal>ListColor</literal>.
1835 <literal>Eq</literal>,
1836 <literal>Ord</literal>,
1837 <literal>Show</literal>,
1838 <literal>Typeable</literal> and
1839 <literal>Data</literal> are now derived for:
1840 <literal>XEvent</literal>,
1841 <literal>FdSet</literal> and
1842 <literal>TimeZone</literal> in
1843 <literal>Graphics.X11.Xlib.Event</literal>,
1844 <literal>FontStruct</literal> in
1845 <literal>Graphics.X11.Xlib.Font</literal>,
1846 <literal>XErrorEvent</literal>,
1847 <literal>XComposeStatus</literal> and
1848 <literal>XTextProperty</literal> in
1849 <literal>Graphics.X11.Xlib.Misc</literal>,
1850 <literal>Region</literal> in
1851 <literal>Graphics.X11.Xlib.Region</literal>,
1852 <literal>Display</literal>,
1853 <literal>Screen</literal>,
1854 <literal>Visual</literal>,
1855 <literal>GC</literal>,
1856 <literal>GCValues</literal>,
1857 <literal>SetWindowAttributes</literal>,
1858 <literal>Point</literal>,
1859 <literal>Rectangle</literal>,
1860 <literal>Arc</literal>,
1861 <literal>Segment</literal> and
1862 <literal>Color</literal> in
1863 <literal>Graphics.X11.Xlib.Types</literal>.
1870 <title>xhtml</title>
1879 <literal>xhtml</literal> is a new package, developing on
1880 what used to be <literal>Text.Html</literal> and
1881 <literal>Text.Html.BlockTable</literal> in the
1882 <literal>base</literal> package.
1890 <title>Internal changes</title>
1894 GHC development now has its own integrated
1895 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1901 GHC has now moved to darcs. See
1903 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1904 wiki</ulink> for more details. The sources have moved around a
1905 bit within the tree as a result, most notably the GHC sources
1906 are no longer kept within a <filename>ghc/</filename>
1912 The native code generator is now capable of compiling loops,
1913 which gets us a big step closer to being able to compile
1914 entirely without gcc on well-supported arches.