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>
10 The following flags (and, where appropriate, their inverses)
11 used to be static (can only be given on
12 the command line) but are now dynamic (can also be given in
13 a <literal>GHC_OPTIONS</literal> pragma or with
14 <literal>:set</literal> in GHCi):
16 <option>-hcsuf</option>,
17 <option>-hidir</option>,
18 <option>-hisuf</option>,
20 <option>-odir</option>,
21 <option>-ohi</option>,
22 <option>-osuf</option>,
23 <option>-keep-hc-file</option>,
24 <option>-keep-s-file</option>,
25 <option>-keep-raw-s-file</option>,
26 <option>-keep-tmp-files</option>,
27 <option>-tmpdir</option>,
29 <option>-package</option>,
30 <option>-hide-package</option>,
31 <option>-ignore-package</option>,
32 <option>-package-conf</option>,
33 <option>-no-user-package-conf</option>,
34 <option>-fcontext-stack</option>,
35 <option>-fexcess-precision</option>,
36 <option>-fignore-asserts</option>,
37 <option>-fignore-interface-pragmas</option>,
39 <option>-framework</option>,
40 <option>-framework-path</option>,
43 <option>-main-is</option>,
44 <option>-no-hs-main</option>,
45 <option>-split-objs</option>,
46 <option>-pgmL</option>,
47 <option>-pgmP</option>,
48 <option>-pgmc</option>,
49 <option>-pgma</option>,
50 <option>-pgml</option>,
51 <option>-pgmdll</option>,
52 <option>-pgmdep</option>,
53 <option>-pgmF</option>,
54 <option>-optl</option>,
55 <option>-optdll</option>,
56 <option>-optdep</option>,
57 <option>-fno-asm-mangling</option>.
58 See <xref linkend="static-dynamic-flags" /> for more on
59 the meaning of static and dynamic flags, and
60 <xref linkend="flag-reference" /> for more on the flags
66 There is a new flag <option>-x</option> for overriding the
67 default behaviour for source files; see
68 <xref linkend="overriding-suffixes" /> details.
73 The <option>-fglobalise-toplev-names</option>
74 flag has been removed.
79 The <option>-fallow-overlapping-instances</option> flag is
80 implied by the <option>-fallow-incoherent-instances</option>
86 The directory that the <filename>foo_stub.c</filename> and
87 <filename>foo_stub.h</filename> files are put in can now be
88 controlled with the <option>-stubdir</option> flag.
89 See <xref linkend="options-output" /> for more details.
94 The equality test performed when pattern matching against
95 an overloaded numeric literal now uses the
96 <literal>(==)</literal> in scope, rather than the one from
97 <literal>Prelude</literal>. Likewise, the subtraction and
98 inequality test performed when pattern matching against
99 <literal>n+k</literal> patterns uses the
100 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
105 With the exception of the arrow syntax, the types of functions
106 used by sugar (such as do notation, numeric literal patterns)
107 need not match the types of the <literal>Prelude</literal>
108 functions normally used.
113 GADTs can now use record syntax. Also, if the datatype could
114 have been declared with Haskell 98 syntax then deriving
115 clauses are permitted. For more info see <xref linkend="gadt" />.
120 There is a new pragma <literal>LANGUAGE</literal> which allows
121 extensions to be specified portably, i.e. without having to
122 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
123 GHC-specific options. The arguments to the pragma are the same
124 extensions that Cabal knows about. More info in
125 <xref linkend="language-pragma" />.
130 GHC now allows more generalisation when typing mutually
131 recursive bindings, resulting in more programs being accepted.
132 See <xref linkend="typing-binds" /> for more details.
137 The <literal>InstalledPackageInfo</literal> syntax has
139 instead of <literal>extra-libs</literal> we have
140 <literal>extra-libraries</literal>,
141 instead of <literal>extra-hugs-opts</literal> we have
142 <literal>hugs-options</literal>,
143 instead of <literal>extra-cc-opts</literal> we have
144 <literal>cc-options</literal>,
145 instead of <literal>extra-ld-opts</literal> we have
146 <literal>ld-options</literal>,
147 and instead of <literal>extra-frameworks</literal> we have
148 <literal>frameworks</literal>.
149 See <xref linkend="installed-pkg-info" /> for details.
154 GHC now treats source files as UTF-8 (ASCII is a strict
155 subset of UTF-8, so ASCII source files will continue to
156 work as before). However, invalid UTF-8 sequences are
157 ignored in comments, so ASCII code with comments in, for
158 example, Latin-1 will also work.
163 When you use <command>ghc --make</command>, GHC will now take
164 the executable filename from the name of the file containing
165 the <literal>Main</literal> module rather than using
166 <filename>a.out</filename>. The <filename>.exe</filename>
167 extension is appended on Windows, and it can of course be
168 overridden with <option>-o</option>.
173 If you <literal>newtype</literal> the IO monad, e.g.
175 newtype MyIO a = MyIO (IO a)</programlisting>
176 then GHC will now allow you to have FFI calls return
177 <literal>MyIO <replaceable>t</replaceable></literal>
179 <literal>IO <replaceable>t</replaceable></literal>.
184 By default, pattern bindings in GHC are now monomorphic.
185 This means that some valid Haskell 98 programs will get
186 rejected, but we believe they will be few in number.
187 To revert to the old behaviour use the
188 <option>-fno-mono-pat-binds</option> flag.
189 More details are in <xref linkend="options-language" />.
194 GHCi already does more defaulting than Haskell 98 so that, for
195 example, <literal>reverse []</literal> shows a result rather
196 than giving an ambiguous type variable error. There is now a
197 flag <option>-fextended-default-rules</option> to use these
198 defaulting rules with GHC too.
199 More details are in <xref linkend="extended-default-rules" />.
204 You can now give both class and instance declarations in
205 <filename>.hs-boot</filename> files. More details in
206 <xref linkend="mutual-recursion" />.
211 It is now possible, with the <literal>-I</literal> RTS flag,
212 to control the amount of idle time that happens before a major
218 GHC now includes the package name in symbol names; the upshot
219 of this is that it is possible to link a program that uses
220 multiple packages each containing a module of the same name.
225 GHCi now has a <literal>:main</literal> command that allows
226 you to call the <literal>main</literal> function with
227 command-line arguments.
228 See <xref linkend="ghci-commands" /> for more information.
233 GHCi now has <literal>:ctags</literal> and
234 <literal>:etags</literal> commands to generate tags files for
235 vi-style and emacs-style editors respectively.
236 See <xref linkend="ghci-commands" /> for more information.
241 The rules for instance declarations have been further relaxed.
242 You are now permitted to have instances whose heads contain
243 only type variables, e.g.
245 instance C a</programlisting>
246 and instances whose constraints are not only type variables,
249 instance C2 Int a => C3 [a] b</programlisting>
250 For more details, see <xref linkend="instance-rules" />.
255 GHCi now allows tab completion of in-scope names.
260 The old syntax for FFI declarations (deprecated since 5.04)
261 is no longer accepted.
266 The <option>-split-objs</option> flag can now be used with
267 <option>--make</option>, and hence can be used by cabal.
272 GHC now supports bang patterns to require a function is strict
273 in a given argument, e.g.
275 f (!x, y) = [x,y]</programlisting>
278 f (x, y) | x `seq` False = undefined
279 | otherwise = [x,y]</programlisting>
284 GHC now handles impredicative polymorphism; see
285 <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
291 GHC's modules are now also bundled into a
292 <literal>ghc</literal> package, allowing programs to make use
293 of GHC as a library. The interface has not yet been properly
294 designed, so is subject to change.
299 GHC's garbage collector now deals more intelligently with
300 mutable data, so you no longer need to worry about GC
301 performance when a lot of memory is taken up by
302 <literal>STArray</literal>s, <literal>IOArray</literal>s,
303 <literal>STRef</literal>s or <literal>IORef</literal>s.
308 GHC now supports SMP:
309 when you compile with <option>-threaded</option>, you now get
310 an RTS flag <option>-N</option> that allows you to specify the
311 number of OS threads that GHC should use. Defaults to 1.
318 <title>Libraries</title>
320 Libraries are now divided into core libraries (those that are
321 necessary to build GHC) and extra libraries. Decoupling the extra
322 libraries means that they can release independently of GHC
323 releases, and makes development builds of GHC quicker as they no
324 longer need to build unnecessary libraries.
328 The hslibs libraries have finally been removed.
333 <title>Core Libraries</title>
339 Version number 2.0 (was 1.0).
344 We now have <literal>Read</literal> and
345 <literal>Show</literal> instances for up to 15-tuples (used
346 to be up to 5-tuples).
351 New module <literal>Control.Applicative</literal> that
352 describes a structure intermediate between a functor and
353 a monad: it provides pure expressions and sequencing, but
359 <literal>Control.Exception</literal> now exports
360 <literal>bracketOnError</literal>, which behaves like
361 <literal>bracket</literal> but only runs the final
362 action if the main action raised an error.
367 There is a new module
368 <literal>Control.Monad.Instances</literal> which
369 provides <literal>Monad</literal> and
370 <literal>Functor</literal> instances for
371 <literal>((->) r)</literal> (were in
372 <literal>mtl</literal>'s
373 <literal>Control.Monad.Reader</literal>),
374 a <literal>Functor</literal> instance for
375 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
376 <literal>Control.Monad.Error</literal>) and a
377 <literal>Functor</literal> instance for
378 <literal>((,) a)</literal> (new).
383 The <literal>MonadFix</literal> instance for
384 <literal>((->) r)</literal> is now in
385 <literal>Control.Monad.Fix</literal> (was in
386 <literal>mtl</literal>'s
387 <literal>Control.Monad.Reader</literal>).
392 <literal>Control.Monad.ST</literal> now exports
393 <literal>unsafeSTToIO</literal>.
398 The <literal>HasBounds</literal> class has been removed from
399 <literal>Data.Array.Base</literal>, and its
400 <literal>bounds</literal> method is now in the
401 <literal>IArray</literal> class. The
402 <literal>MArray</literal> class
403 has also gained a method <literal>getBounds</literal>.
408 <literal>Data.Array.Base</literal> now provides an
409 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
415 <literal>Data.Array.Storable</literal> now exports a
416 function <literal>unsafeForeignPtrToStorableArray</literal>.
421 The new <literal>Data.ByteString</literal> hierarchy
422 provides time and space-efficient byte vectors.
423 The old <literal>Data.PackedString</literal> module is now
424 deprecated as a result, although there is not yet a
425 replacement if you need full unicode support.
430 <literal>GHC.Exts</literal> now provides a function
431 <literal>inline</literal> which, provided the RHS is visible
432 to the compiler, forcibly inlines its argument.
433 Otherwise, it acts like <literal>id</literal>.
438 <literal>GHC.Exts</literal> now provides a function
439 <literal>lazy</literal> which forces GHC to think that its
440 argument is lazy in its first argument.
445 <literal>Data.FiniteMap</literal> has been removed
446 (deprecated since 6.4). Use <literal>Data.Map</literal>
452 <literal>Data.Char</literal> now exports
453 <literal>isLetter</literal>,
454 <literal>isMark</literal>,
455 <literal>isNumber</literal>,
456 <literal>isPunctuation</literal>,
457 <literal>isSymbol</literal>,
458 <literal>isSeparator</literal>,
459 <literal>isAsciiUpper</literal>,
460 <literal>isAsciiLower</literal> and
461 <literal>toTitle</literal>.
462 It also exports a function
463 <literal>generalCategory</literal> that tells you the
464 category of a character in terms of a datatype
465 <literal>GeneralCategory</literal>.
470 <literal>Data.Dynamic</literal> now exports a function
471 <literal>dynTypeRep</literal>.
476 There is a new module <literal>Data.Eq</literal> which
477 just exports the <literal>Eq</literal> class.
478 Likewise, a new module <literal>Data.Ord</literal>
479 exports the <literal>Ord</literal> class, as well as the
480 handy <literal>comparing</literal> function.
485 There is a new module <literal>Data.Fixed</literal>
486 providing fixed-precision arithmetic.
491 There is a new module <literal>Data.Foldable</literal>
492 providing a class for foldable datatypes. It gives instances
493 for <literal>Maybe</literal>, <literal>[]</literal> and
494 <literal>Array i</literal>.
499 There is a new module <literal>Data.Traversable</literal>
500 providing a class for data structures that can be traversed
501 from left to right. It gives instances
502 for <literal>Maybe</literal>, <literal>[]</literal> and
503 <literal>Array i</literal>.
508 <literal>Data.FunctorM</literal> has been deprecated;
509 use <literal>Data.Foldable</literal> and
510 <literal>Data.Traversable</literal> instead.
515 The <literal>toConstr</literal> definitions for tuples in
516 <literal>Data.Generics.Instances</literal> now actually
517 evaluate their arguments to tuples before returning
523 <literal>Data.IntMap</literal> now exports
524 <literal>notMember</literal>,
525 <literal>alter</literal>,
526 <literal>mapMaybe</literal>,
527 <literal>mapMaybeWithKey</literal>,
528 <literal>mapEither</literal> and
529 <literal>mapEitherWithKey</literal>.
530 It also has <literal>Monoid</literal>,
531 <literal>Foldable</literal> and <literal>Read</literal>
537 <literal>Data.IntSet</literal> now exports
538 <literal>notMember</literal>. It also has
539 <literal>Monoid</literal> and <literal>Read</literal>
545 <literal>Data.Map</literal> now exports
546 <literal>notMember</literal>,
547 <literal>alter</literal>,
548 <literal>mapMaybe</literal>,
549 <literal>mapMaybeWithKey</literal>,
550 <literal>mapEither</literal>,
551 <literal>mapEitherWithKey</literal>,
552 <literal>minView</literal> and
553 <literal>maxView</literal>.
554 It also has <literal>Monoid</literal>,
555 <literal>Traversable</literal>, <literal>Foldable</literal>
556 and <literal>Read</literal> instances.
561 <literal>Data.Set</literal> now exports
562 <literal>notMember</literal>,
563 <literal>minView</literal> and
564 <literal>maxView</literal>.
565 It also has <literal>Monoid</literal>,
566 <literal>Foldable</literal>
567 and <literal>Read</literal> instances.
571 The old, deprecated (since 6.4) interface consisting of
572 <literal>emptySet</literal>,
573 <literal>mkSet</literal>,
574 <literal>setToList</literal>,
575 <literal>unitSet</literal>,
576 <literal>elementOf</literal>,
577 <literal>isEmptySet</literal>,
578 <literal>cardinality</literal>,
579 <literal>unionManySets</literal>,
580 <literal>minusSet</literal>,
581 <literal>mapSet</literal>,
582 <literal>intersect</literal>,
583 <literal>addToSet</literal> and
584 <literal>delFromSet</literal> has been removed.
589 <literal>Data.Monoid</literal> no longer contains the
590 <literal>Monoid</literal>
591 instances for <literal>Map</literal>,
592 <literal>IntMap</literal>, <literal>Set</literal> and
593 <literal>IntSet</literal>. They have been moved to their own
594 modules, as above. The <literal>(a -> a)</literal> instance
595 has been replaced with a
596 <literal>Monoid b => Monoid (a -> b)</literal> instance.
597 The module also now exports
598 <literal>Dual</literal>,
599 <literal>Endo</literal>,
600 <literal>All</literal>,
601 <literal>Any</literal>,
602 <literal>Sum</literal> and
603 <literal>Product</literal> types, and
604 <literal>Monoid</literal> instances for them.
609 There is a new module <literal>Data.Sequence</literal>
610 for finite sequences. The <literal>Data.Queue</literal>
611 module is now deprecated in favour of this faster, more
612 featureful replacement.
617 <literal>Data.Tree</literal> now has
618 <literal>Data</literal>, <literal>Typeable</literal>,
619 <literal>Traversable</literal> and
620 <literal>Foldable</literal>
622 <literal>Tree</literal> datatype.
627 <literal>Data.Typeable</literal> now uses
628 <option>-fallow-overlapping-instances</option>, so the
629 generic instances can be overriden for your own datatypes.
634 <literal>Debug.Trace</literal> now exports
635 <literal>traceShow</literal>, which is the same as
636 <literal>trace</literal> except its first argument can be
637 any showable thing rather than being required to be a
643 <literal>Foreign.C.Types</literal> now also defines
644 <literal>CIntPtr</literal>,
645 <literal>CUIntPtr</literal>,
646 <literal>CIntMax</literal> and
647 <literal>CUIntMax</literal>.
652 <literal>Foreign.ForeignPtr</literal> now exports
653 <literal>FinalizerEnvPtr</literal>,
654 <literal>newForeignPtrEnv</literal> and
655 <literal>addForeignPtrFinalizerEnv</literal>.
656 Together, these allow the use of finalizers which are passed
657 an additional environment parameter.
662 <literal>Foreign.Marshal.Utils</literal> no longer exports
663 the <literal>withObject</literal> function, deprecated since
664 5.04; use <literal>with</literal> instead.
669 Foreign.Ptr now also defines
670 <literal>IntPtr</literal>,
671 <literal>ptrToIntPtr</literal>,
672 <literal>intPtrToPtr</literal>,
673 <literal>WordPtr</literal>,
674 <literal>ptrToWordPtr</literal> and
675 <literal>wordPtrToPtr</literal>.
680 There are now <literal>Bounded</literal> instances for up to
681 15-tuples (used to be up to 4-tuples).
686 The <literal>Text.Html</literal> and
687 <literal>Text.Html.BlockTable</literal> modules have now
688 been removed, with the new <literal>html</literal> and
689 <literal>xhtml</literal> packages providing replacements.
694 <literal>Text.Read</literal> now exports a function
695 <literal>parens</literal> which parses a value in an
696 arbitrary number of parentheses.
701 The <literal>ForeignPtr</literal> datatype has been altered
702 to make it more efficient. There are also new functions
703 <literal>mallocPlainForeignPtr</literal> and
704 <literal>mallocPlainForeignPtrBytes</literal> which
705 do not allow you to attach a finalizer to the
706 <literal>ForeignPtr</literal>.
711 The <literal>Text.Regex</literal> and
712 <literal>Text.Regex.Posix</literal> modules have been removed.
713 Instead, use the new <literal>regex-compat</literal> package
714 for a drop-in <literal>Text.Regex</literal> replacement, or
715 the new library in the new <literal>regex-posix</literal>
727 Version number 1.1.5 (was 1.1.4).
732 Support for JHC, symmetric to the support for the other
733 implementations, has been added throughout.
738 Support for object splitting and building in-place
739 has been added throughout.
744 Added a <filename>debianTemplate</filename> directory with
745 templates for building Debian packages from Cabal packages.
750 Added <filename>cabal-setup</filename>, a user interface to
751 building and installing Cabal packages.
756 Added <filename>cabal-install</filename>, an automated
757 installer for cabal packages.
762 There is now a <literal>Network.Hackage</literal> hierarchy
763 for code needed by hackage, the package server.
768 There are now modules
769 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
770 for each of <literal>GHC</literal>, <literal>NHC</literal>,
771 <literal>Hugs</literal> and <literal>JHC</literal>.
772 The <literal>Distribution.Simple.Build</literal> and
773 <literal>Distribution.Simple.Install</literal> modules have
774 shrunk correspondingly.
779 <literal>Distribution.GetOpt</literal> is no longer a
785 <literal>Distribution.Simple</literal> exports a function
786 <literal>defaultMainArgs</literal>, which is identical to
787 <literal>defaultMain</literal> except that the arguments are
788 given as a list of strings rather than being retrieved with
789 <literal>getArgs</literal>.
794 <literal>Distribution.Simple.Configure</literal>
796 <literal>LocalBuildInfo</literal>,
798 <literal>configDependency</literal> and
799 <literal>configCompilerAux</literal>.
804 <literal>Distribution.Simple.LocalBuildInfo</literal> now
805 exports <literal>mkHaddockDir</literal>,
806 <literal>distPref</literal>,
807 <literal>srcPref</literal>,
808 <literal>autogenModulesDir</literal> and
809 <literal>mkIncludeDir</literal>.
814 <literal>Distribution.PackageDescription</literal> now
815 exports <literal>haddockName</literal>.
820 <literal>Distribution.Simple.Utils</literal> now exports
821 <literal>copyDirectoryRecursiveVerbose</literal>,
822 <literal>dirOf</literal>,
823 <literal>distPref</literal>,
824 <literal>haddockPref</literal> and
825 <literal>srcPref</literal>.
826 It no longer exports <literal>mkGHCiLibName</literal>.
833 <title>haskell98</title>
837 No change (version 1.0).
844 <title>parsec</title>
848 Version number 2.0 (was 1.0).
860 <title>readline</title>
864 No change (version 1.0).
871 <title>regex-base</title>
880 New library that provides common functions for different
888 <title>regex-compat</title>
897 New package providing a replacement
898 <literal>Text.Regex</literal> module.
905 <title>regex-posix</title>
914 A new package providing POSIX regexes.
925 Version number 2.0 (was 1.0).
930 A new module <literal>Control.Monad.STM</literal>
932 <literal>MonadPlus</literal> instance for
933 <literal>STM</literal> and the function
934 <literal>check</literal> (both used to be in
935 <literal>Control.Concurrent.STM</literal>).
937 <literal>STM</literal>,
938 <literal>atomically</literal>,
939 <literal>retry</literal>,
940 <literal>orElse</literal> and
941 <literal>catchSTM</literal>.
946 There is a new module
947 <literal>Control.Sequential.STM</literal> for non-concurrent
948 transactions which nevertheless need to be atomic in the
955 <literal>Control.Concurrent.STM.TArray</literal> defines
956 <literal>TArray</literal>, a transactional array, and makes
957 it an instance of <literal>MArray</literal>.
962 <literal>Control.Concurrent.STM.TChan</literal> now provides
963 a function <literal>newTChanIO</literal>, which allows
964 <literal>TChan</literal>s to be created in the IO monad.
965 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
966 provides <literal>newTMVarIO</literal> and
967 <literal>newEmptyTMVarIO</literal>, and
968 <literal>Control.Concurrent.STM.TVar</literal> exports
969 <literal>newTVarIO</literal>.
974 <literal>Control.Concurrent.STM.TVar</literal> exports
975 <literal>registerDelay</literal>.
980 The <literal>Control.Concurrent.STM</literal> module has been
981 updated to re-export all the new modules.
988 <title>template-haskell</title>
992 Version number 2.0 (was 1.0).
997 A <literal>Show</literal> instance is now derived for
998 <literal>Info</literal>, <literal>Fixity</literal> and
999 <literal>FixityDirection</literal> in
1000 <literal>Language.Haskell.TH.Syntax</literal>.
1005 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1006 a type <literal>PkgName</literal> and functions
1007 <literal>mkPkgName</literal> and
1008 <literal>pkgString</literal>
1009 for dealing with package names.
1014 The <literal>patGE</literal> function in
1015 <literal>Language.Haskell.TH.Lib</literal> now takes the
1016 final expression separately to the list of statements
1017 rather than splitting it off itself.
1028 No change (version 1.0).
1035 <title>Win32</title>
1039 Version number 2.0 (was 1.0).
1044 Now maintained by Esa Ilari Vuokko.
1049 There is a new module
1050 <literal>System.Win32.Console</literal>
1051 providing an interface to the Windows Console API.
1056 There is a new module
1057 <literal>System.Win32.DebugApi</literal>
1058 providing an interface to the Windows DebugApi.
1063 There is a new module
1064 <literal>System.Win32.FileMapping</literal>
1065 for working with memory-mapped files.
1070 There is a new module
1071 <literal>System.Win32.SimpleMAPI</literal>
1072 for using the Windows mail API.
1077 There is a new module
1078 <literal>System.Win32.Time</literal>
1079 for using the Windows time API.
1084 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1085 <literal>Graphics.Win32.Misc</literal> to
1086 <literal>System.Win32.Types</literal>.
1091 <literal>System.Win32.File</literal> has a new
1092 function <literal>getFileInformationByHandle</literal>
1093 and associated data types.
1098 <literal>System.Win32.Info</literal> has a new
1099 function <literal>getSystemInfo</literal> and associated
1105 <literal>System.Win32.Process</literal> now has many more
1111 <literal>System.Win32.Types</literal> has new types
1112 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1113 and <literal>SIZE_T</literal>. It also has new helper
1114 functions <literal>ddwordToDwords</literal> and
1115 <literal>dwordsToDdword</literal> to split and combine
1116 ddwords into high and low components.
1121 <literal>System.Win32</literal> re-exports
1122 <literal>System.Win32.FileMapping</literal>,
1123 <literal>System.Win32.Time</literal>
1124 and <literal>System.Win32.Console</literal>.
1129 <literal>System.Win32</literal> no longer exports
1130 <literal>LCID</literal>,
1131 <literal>LANGID</literal>,
1132 <literal>SortID</literal>,
1133 <literal>SubLANGID</literal>,
1134 <literal>PrimaryLANGID</literal>,
1135 <literal>mAKELCID</literal>,
1136 <literal>lANGIDFROMLCID</literal>,
1137 <literal>sORTIDFROMLCID</literal>,
1138 <literal>mAKELANGID</literal>,
1139 <literal>pRIMARYLANGID</literal> or
1140 <literal>sUBLANGID</literal> from
1141 <literal>System.Win32.NLS</literal>.
1149 <title>Extra Libraries</title>
1155 Version number 2.0 (was 1.0).
1160 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1161 Its <literal>Phase</literal> and <literal>Duration</literal>
1162 exports are now exported by
1163 <literal>Sound.ALUT.Loaders</literal> and its
1164 <literal>helloWorld</literal>,
1165 <literal>sine</literal>,
1166 <literal>square</literal>,
1167 <literal>sawtooth</literal>,
1168 <literal>impulse</literal> and
1169 <literal>whiteNoise</literal>
1170 exports are now constructors of the
1171 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1179 <title>arrows</title>
1183 Version number remains 0.1.
1188 <literal>Control.Sequence</literal> has been removed in
1189 favour of the new <literal>Control.Applicative</literal>
1190 module in <literal>base</literal>.
1206 <literal>cgi</literal> is a new package, developing on
1207 what used to be <literal>Network.CGI</literal> in the
1208 <literal>network</literal> package.
1219 Version number 5.3 (was 5.2).
1224 <literal>Data.Graph.Inductive.Graph</literal> no longer
1225 exports <literal>UContext</literal>.
1230 <literal>Data.Graph.Inductive.Graph</literal> now exports
1231 <literal>delLEdge</literal>.
1242 Version number remains 2.0.
1247 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1248 <literal>DisplayMode</literal> has a new constructor
1249 <literal>WithAuxBuffers</literal> and
1250 <literal>DisplayCapability</literal> has a new constructor
1251 <literal>DisplayAux</literal>. These represent freeglut-only
1257 There are new examples in
1258 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1259 <filename>RedBook/AAIndex.hs</filename>,
1260 <filename>RedBook/AARGB.hs</filename>,
1261 <filename>RedBook/AccAnti.hs</filename>,
1262 <filename>RedBook/AccPersp.hs</filename>,
1263 <filename>RedBook/Alpha3D.hs</filename>,
1264 <filename>RedBook/DOF.hs</filename>,
1265 <filename>RedBook/FogIndex.hs</filename>,
1266 <filename>RedBook/Multisamp.hs</filename>,
1267 <filename>RedBook/PointP.hs</filename>,
1268 <filename>RedBook/PolyOff.hs</filename>,
1269 <filename>RedBook/Stencil.hs</filename>,
1270 <filename>RedBook/Stroke.hs</filename> and
1271 <filename>RedBook/Torus.hs</filename>,
1273 <filename>RedBook/Font.hs</filename> and
1274 <filename>RedBook/Histogram.hs</filename> have been
1282 <title>haskell-src</title>
1286 No change (version 1.0).
1293 <title>HaXml</title>
1297 Version number 1.16 (was 1.12.1).
1302 There are now lazy versions of the parsing modules
1303 <literal>Text.XML.HaXml.ParseLazy</literal>
1304 (a lazy non-validating XML parser) and
1305 <literal>Text.XML.HaXml.Html.ParseLazy</literal>
1306 (a lazy HTML parser).
1311 There are lazy versions of two of the example tools,
1312 <literal>CanonicaliseLazy</literal> and
1313 <literal>XtractLazy</literal>.
1318 <literal>Text.XML.HaXml.Haskell2Xml</literal> and
1319 <literal>Text.XML.HaXml.Xml2Haskell</literal> have been
1320 removed, with <literal>Text.XML.HaXml.XmlContent</literal>
1322 You must now use <literal>{-! derive : XmlContent !-}</literal>
1323 rather than <literal>{-! derive :Haskell2Xml !-}</literal>
1324 to have instances derived for your classes.
1329 Now also provides the
1330 <literal>Text.ParserCombinators.HuttonMeijer</literal>
1331 monadic parser combinator library.
1336 Provides another new set of parser combinators, as well as a lazy
1337 variant, a variant that carries around state, and a
1338 variant that does both. The modules are
1339 <literal>Text.ParserCombinators.Poly</literal>,
1340 <literal>Text.ParserCombinators.PolyLazy</literal>,
1341 <literal>Text.ParserCombinators.PolyState</literal> and
1342 <literal>Text.ParserCombinators.PolyStateLazy</literal>
1345 <literal>Text.ParserCombinators.TextParser</literal>, which
1346 is the <literal>Poly</literal> parser combinators
1347 specialised for strings.
1352 Now provides a SAX-like parser in
1353 <literal>Text.XML.HaXml.SAX</literal>.
1358 Now provides a module
1359 <literal>Text.XML.HaXml.TypeMapping</literal>, which
1360 defines an explicit representation for Haskell types.
1361 This allows generation of a DTD from a Haskell value.
1366 The <literal>Posn</literal> type has been pulled out from
1367 <literal>Text.XML.HaXml.Lex</literal> into its own module
1368 <literal>Text.XML.HaXml.Posn</literal>. Some helper
1369 functions are also exported.
1374 The APIs to the pre-existing modules have also substantially
1386 No change (version 3.1).
1402 <literal>html</literal> is a new package, developing on
1403 what used to be <literal>Text.Html</literal> and
1404 <literal>Text.Html.BlockTable</literal> in the
1405 <literal>base</literal> package.
1410 <literal>Text.Html.BlockTable</literal> exports a new
1411 function <literal>empty</literal>.
1418 <title>HUnit</title>
1422 No change (version 1.1).
1440 <title>monads</title>
1444 Version number 2.0.1 (was 1.1).
1449 In <literal>Monad.Id</literal>, <literal>run</literal> has
1450 been renamed <literal>runId</literal>.
1455 The <literal>Monad.BackT</literal> module has been removed;
1456 use the new <literal>Monad.SearchT</literal> module instead.
1461 There is a new module <literal>Monad.ForEach</literal>
1462 containing a class <literal>ForEach</literal>, for
1463 applying a monadic function to each element in a container.
1464 It provides instances for <literal>[]</literal> and
1465 <literal>Maybe</literal>.
1470 The following combinators have been moved from
1471 <literal>Monad.Prelude</literal> to a new module
1472 <literal>Monad.Combinators</literal>:
1473 <literal>(@@)</literal>,
1474 <literal>(#)</literal>,
1475 <literal>(<#)</literal>,
1476 <literal>(<##)</literal>,
1477 <literal>concatMap</literal> and
1478 <literal>partitionM</literal>.
1479 <literal>Monad.Combinators</literal> also defines the
1480 following new combinators:
1481 <literal>ifM</literal>,
1482 <literal>whenM</literal>,
1483 <literal>andM</literal>,
1484 <literal>orM</literal>,
1485 <literal>allM</literal>,
1486 <literal>anyM</literal>,
1487 <literal>forEach2</literal>,
1488 <literal>forEach2_</literal>,
1489 <literal>forEach3</literal> and
1490 <literal>forEach3_</literal>, and re-exports
1491 <literal>Control.Monad</literal>.
1497 <literal>Monad.Cont</literal>,
1498 <literal>Monad.Except</literal>,
1499 <literal>Monad.Reader</literal>,
1500 <literal>Monad.State</literal> and
1501 <literal>Monad.Writer</literal> have been removed, but their
1502 monad transformer counterparts remain. If you want the
1503 monads then just transform the identity monad instead.
1508 The <literal>Monad.ExceptT</literal> module now also exports
1509 runExceptWith and unsafeRunExcept. It also now defines an
1510 instance <literal>ContM (ExceptT x m)</literal>.
1515 In <literal>Monad.Prelude</literal>, the
1516 <literal>get</literal> method of the
1517 <literal>ReaderM</literal> module has been renamed
1518 <literal>getR</literal>. The <literal>local</literal> method
1519 has been removed with a new class
1520 <literal>ReadUpdM</literal>, with methods
1521 <literal>updateR</literal>
1522 and <literal>setR</literal>, taking its place.
1523 The <literal>letLocal</literal> function has also been removed.
1528 In <literal>Monad.Prelude</literal>,
1529 <literal>update</literal> has been made a method of
1530 <literal>StateM</literal>.
1532 <literal>peek</literal> and <literal>poke</literal> methods
1533 have been renamed <literal>get</literal> and
1534 <literal>set</literal> respectively, and both have a default
1535 definition in terms of <literal>update</literal>.
1536 The <literal>poke_</literal> function has also been renamed
1537 <literal>set_</literal>.
1542 In <literal>Monad.Prelude</literal>,
1543 <literal>handle</literal> has been taken out of the
1544 <literal>ExceptM</literal> class and put into a new
1545 class <literal>HandlerM</literal> along with a new method
1546 <literal>checkExcept</literal>.
1547 There are also new functions <literal>withHandler</literal>
1548 and <literal>handle_</literal>.
1553 The <literal>TakeWriterM</literal> class has been renamed
1554 <literal>CollectorM</literal>, and rather than a single
1555 method <literal>takeFrom</literal> it has methods
1556 <literal>censor</literal> and <literal>collect</literal>
1557 with default definitions in terms of each other.
1562 <literal>Monad.Prelude</literal> defines a type
1563 <literal>Cont</literal> and functions
1564 <literal>returnCC</literal> and <literal>cJump</literal>.
1569 <literal>Monad.Prelude</literal> exports functions
1570 <literal>inReader</literal>,
1571 <literal>inWriter</literal>,
1572 <literal>inState</literal> and
1573 <literal>inExcept</literal>.
1574 These make it easy to turn a pure representation of an
1575 effectful computation into an actual computation.
1580 The <literal>zipWith3M</literal> and
1581 <literal>zipWith3M_</literal> functions have been removed
1582 from <literal>Monad.Prelude</literal>.
1587 <literal>Monad.Prelude</literal> now re-exports
1588 <literal>Monad.Combinators</literal> and
1589 <literal>Monad.ForEach</literal>, but no longer re-exports
1590 <literal>Monad</literal>.
1595 There is a new module <literal>Monad.Transformers</literal>
1597 <literal>Monad.Id</literal>,
1598 <literal>Monad.ReaderT</literal>,
1599 <literal>Monad.WriterT</literal>,
1600 <literal>Monad.StateT</literal>,
1601 <literal>Monad.ExceptT</literal>,
1602 <literal>Monad.SearchT</literal> and
1603 <literal>Monad.ContT</literal>.
1614 No change (version 1.0).
1621 <title>network</title>
1625 Version number 2.0 (was 1.0).
1630 <literal>Network.CGI</literal> has been removed; use the
1631 <literal>cgi</literal> package instead.
1636 <literal>Network.BSD</literal> no longer exports
1637 <literal>symlink</literal> or <literal>readlink</literal>;
1639 <literal>System.Posix.Files.createSymbolicLink</literal> and
1640 <literal>System.Posix.Files.readSymbolicLink</literal>
1646 <literal>Network.BSD</literal> now exports
1647 <literal>defaultProtocol</literal>.
1652 <literal>Network.Socket.SocketStatus</literal> now has a
1653 constructor <literal>ConvertedToHandle</literal> for sockets
1654 that have been converted to handles.
1659 <literal>Network.Socket.Family</literal> now has the
1660 following additional constructors:
1661 <literal>AF_NETROM</literal>,
1662 <literal>AF_BRIDGE</literal>,
1663 <literal>AF_ATMPVC</literal>,
1664 <literal>AF_ROSE</literal>,
1665 <literal>AF_NETBEUI</literal>,
1666 <literal>AF_SECURITY</literal>,
1667 <literal>AF_PACKET</literal>,
1668 <literal>AF_ASH</literal>,
1669 <literal>AF_ECONET</literal>,
1670 <literal>AF_ATMSVC</literal>,
1671 <literal>AF_IRDA</literal>,
1672 <literal>AF_PPPOX</literal>,
1673 <literal>AF_WANPIPE</literal> and
1674 <literal>AF_BLUETOOTH</literal>.
1679 In <literal>Network.URI</literal>,
1680 <literal>parseabsoluteURI</literal> has been deprecated with
1681 a new function <literal>parseAbsoluteURI</literal> taking
1689 <title>ObjectIO</title>
1693 No change (version 1.0).
1700 <title>OpenAL</title>
1704 Version number 1.3 (was 1.2).
1716 <title>OpenGL</title>
1720 Version number 2.1 (was 2.0).
1732 <title>QuickCheck</title>
1736 No change (version 1.0).
1752 <literal>time</literal> is a new package, for dealing with
1753 dates, times and time intervals.
1764 Version number remains 1.1.
1769 In <literal>Graphics.X11.Xlib.Types</literal>,
1770 <literal>XGCValues</literal> has been renamed
1771 <literal>GCValues</literal> and
1772 <literal>XSetWindowAttributes</literal> has been renamed
1773 <literal>SetWindowAttributes</literal>.
1778 In <literal>Graphics.X11.Xlib.Misc</literal>,
1779 <literal>allocaXSetWindowAttributes</literal> has been
1780 renamed <literal>allocaSetWindowAttributes</literal>.
1785 The <literal>FontStruct</literal> type has moved from
1786 <literal>Graphics.X11.Xlib.Types</literal> to
1787 <literal>Graphics.X11.Xlib.Font</literal>.
1793 <literal>Point</literal>,
1794 <literal>Rectangle</literal>,
1795 <literal>Arc</literal>,
1796 <literal>Segment</literal> and
1797 <literal>Color</literal> types in
1798 <literal>Graphics.X11.Xlib.Types</literal>
1799 are now proper datatypes rather than synonyms for tuples.
1800 They all have a <literal>Storable</literal> instance.
1805 The <literal>Byte</literal> and <literal>Short</literal>
1806 types from <literal>Graphics.X11.Xlib.Types</literal> have
1808 The following type synonyms, which had already been marked
1809 "Backwards compatibility", have also been removed:
1810 <literal>ListPoint</literal>,
1811 <literal>ListRectangle</literal>,
1812 <literal>ListArc</literal>,
1813 <literal>ListSegment</literal> and
1814 <literal>ListColor</literal>.
1819 <literal>Eq</literal>,
1820 <literal>Ord</literal>,
1821 <literal>Show</literal>,
1822 <literal>Typeable</literal> and
1823 <literal>Data</literal> are now derived for:
1824 <literal>XEvent</literal>,
1825 <literal>FdSet</literal> and
1826 <literal>TimeZone</literal> in
1827 <literal>Graphics.X11.Xlib.Event</literal>,
1828 <literal>FontStruct</literal> in
1829 <literal>Graphics.X11.Xlib.Font</literal>,
1830 <literal>XErrorEvent</literal>,
1831 <literal>XComposeStatus</literal> and
1832 <literal>XTextProperty</literal> in
1833 <literal>Graphics.X11.Xlib.Misc</literal>,
1834 <literal>Region</literal> in
1835 <literal>Graphics.X11.Xlib.Region</literal>,
1836 <literal>Display</literal>,
1837 <literal>Screen</literal>,
1838 <literal>Visual</literal>,
1839 <literal>GC</literal>,
1840 <literal>GCValues</literal>,
1841 <literal>SetWindowAttributes</literal>,
1842 <literal>Point</literal>,
1843 <literal>Rectangle</literal>,
1844 <literal>Arc</literal>,
1845 <literal>Segment</literal> and
1846 <literal>Color</literal> in
1847 <literal>Graphics.X11.Xlib.Types</literal>.
1854 <title>xhtml</title>
1863 <literal>xhtml</literal> is a new package, developing on
1864 what used to be <literal>Text.Html</literal> and
1865 <literal>Text.Html.BlockTable</literal> in the
1866 <literal>base</literal> package.
1874 <title>Internal changes</title>
1878 GHC development now has its own integrated
1879 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1885 GHC has now moved to darcs. See
1887 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1888 wiki</ulink> for more details. The sources have moved around a
1889 bit within the tree as a result, most notably the GHC sources
1890 are no longer kept within a <filename>ghc/</filename>
1896 The native code generator is now capable of compiling loops,
1897 which gets us a big step closer to being able to compile
1898 entirely without gcc on well-supported arches.