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>.
717 Version number 1.1.5 (was 1.1.4).
722 Support for JHC, symmetric to the support for the other
723 implementations, has been added throughout.
728 Support for object splitting and building in-place
729 has been added throughout.
734 Added a <filename>debianTemplate</filename> directory with
735 templates for building Debian packages from Cabal packages.
740 Added <filename>cabal-setup</filename>, a user interface to
741 building and installing Cabal packages.
746 Added <filename>cabal-install</filename>, an automated
747 installer for cabal packages.
752 There is now a <literal>Network.Hackage</literal> hierarchy
753 for code needed by hackage, the package server.
758 There are now modules
759 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
760 for each of <literal>GHC</literal>, <literal>NHC</literal>,
761 <literal>Hugs</literal> and <literal>JHC</literal>.
762 The <literal>Distribution.Simple.Build</literal> and
763 <literal>Distribution.Simple.Install</literal> modules have
764 shrunk correspondingly.
769 <literal>Distribution.GetOpt</literal> is no longer a
775 <literal>Distribution.Simple</literal> exports a function
776 <literal>defaultMainArgs</literal>, which is identical to
777 <literal>defaultMain</literal> except that the arguments are
778 given as a list of strings rather than being retrieved with
779 <literal>getArgs</literal>.
784 <literal>Distribution.Simple.Configure</literal>
786 <literal>LocalBuildInfo</literal>,
788 <literal>configDependency</literal> and
789 <literal>configCompilerAux</literal>.
794 <literal>Distribution.Simple.LocalBuildInfo</literal> now
795 exports <literal>mkHaddockDir</literal>,
796 <literal>distPref</literal>,
797 <literal>srcPref</literal>,
798 <literal>autogenModulesDir</literal> and
799 <literal>mkIncludeDir</literal>.
804 <literal>Distribution.PackageDescription</literal> now
805 exports <literal>haddockName</literal>.
810 <literal>Distribution.Simple.Utils</literal> now exports
811 <literal>copyDirectoryRecursiveVerbose</literal>,
812 <literal>dirOf</literal>,
813 <literal>distPref</literal>,
814 <literal>haddockPref</literal> and
815 <literal>srcPref</literal>.
816 It no longer exports <literal>mkGHCiLibName</literal>.
823 <title>haskell98</title>
827 No change (version 1.0).
834 <title>readline</title>
838 No change (version 1.0).
849 Version number 2.0 (was 1.0).
854 A new module <literal>Control.Monad.STM</literal>
856 <literal>MonadPlus</literal> instance for
857 <literal>STM</literal> and the function
858 <literal>check</literal> (both used to be in
859 <literal>Control.Concurrent.STM</literal>).
861 <literal>STM</literal>,
862 <literal>atomically</literal>,
863 <literal>retry</literal>,
864 <literal>orElse</literal> and
865 <literal>catchSTM</literal>.
870 There is a new module
871 <literal>Control.Sequential.STM</literal> for non-concurrent
872 transactions which nevertheless need to be atomic in the
879 <literal>Control.Concurrent.STM.TArray</literal> defines
880 <literal>TArray</literal>, a transactional array, and makes
881 it an instance of <literal>MArray</literal>.
886 <literal>Control.Concurrent.STM.TChan</literal> now provides
887 a function <literal>newTChanIO</literal>, which allows
888 <literal>TChan</literal>s to be created in the IO monad.
889 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
890 provides <literal>newTMVarIO</literal> and
891 <literal>newEmptyTMVarIO</literal>, and
892 <literal>Control.Concurrent.STM.TVar</literal> exports
893 <literal>newTVarIO</literal>.
898 <literal>Control.Concurrent.STM.TVar</literal> exports
899 <literal>registerDelay</literal>.
904 The <literal>Control.Concurrent.STM</literal> module has been
905 updated to re-export all the new modules.
912 <title>template-haskell</title>
916 Version number 2.0 (was 1.0).
921 A <literal>Show</literal> instance is now derived for
922 <literal>Info</literal>, <literal>Fixity</literal> and
923 <literal>FixityDirection</literal> in
924 <literal>Language.Haskell.TH.Syntax</literal>.
929 In <literal>Language.Haskell.TH.Syntax</literal>, there is
930 a type <literal>PkgName</literal> and functions
931 <literal>mkPkgName</literal> and
932 <literal>pkgString</literal>
933 for dealing with package names.
938 The <literal>patGE</literal> function in
939 <literal>Language.Haskell.TH.Lib</literal> now takes the
940 final expression separately to the list of statements
941 rather than splitting it off itself.
952 No change (version 1.0).
963 Version number 2.0 (was 1.0).
968 Now maintained by Esa Ilari Vuokko.
973 There is a new module
974 <literal>System.Win32.Console</literal>
975 providing an interface to the Windows Console API.
980 There is a new module
981 <literal>System.Win32.DebugApi</literal>
982 providing an interface to the Windows DebugApi.
987 There is a new module
988 <literal>System.Win32.FileMapping</literal>
989 for working with memory-mapped files.
994 There is a new module
995 <literal>System.Win32.SimpleMAPI</literal>
996 for using the Windows mail API.
1001 There is a new module
1002 <literal>System.Win32.Time</literal>
1003 for using the Windows time API.
1008 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1009 <literal>Graphics.Win32.Misc</literal> to
1010 <literal>System.Win32.Types</literal>.
1015 <literal>System.Win32.File</literal> has a new
1016 function <literal>getFileInformationByHandle</literal>
1017 and associated data types.
1022 <literal>System.Win32.Info</literal> has a new
1023 function <literal>getSystemInfo</literal> and associated
1029 <literal>System.Win32.Process</literal> now has many more
1035 <literal>System.Win32.Types</literal> has new types
1036 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1037 and <literal>SIZE_T</literal>. It also has new helper
1038 functions <literal>ddwordToDwords</literal> and
1039 <literal>dwordsToDdword</literal> to split and combine
1040 ddwords into high and low components.
1045 <literal>System.Win32</literal> re-exports
1046 <literal>System.Win32.FileMapping</literal>,
1047 <literal>System.Win32.Time</literal>
1048 and <literal>System.Win32.Console</literal>.
1053 <literal>System.Win32</literal> no longer exports
1054 <literal>LCID</literal>,
1055 <literal>LANGID</literal>,
1056 <literal>SortID</literal>,
1057 <literal>SubLANGID</literal>,
1058 <literal>PrimaryLANGID</literal>,
1059 <literal>mAKELCID</literal>,
1060 <literal>lANGIDFROMLCID</literal>,
1061 <literal>sORTIDFROMLCID</literal>,
1062 <literal>mAKELANGID</literal>,
1063 <literal>pRIMARYLANGID</literal> or
1064 <literal>sUBLANGID</literal> from
1065 <literal>System.Win32.NLS</literal>.
1073 <title>Extra Libraries</title>
1079 Version number 2.0 (was 1.0).
1084 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1085 Its <literal>Phase</literal> and <literal>Duration</literal>
1086 exports are now exported by
1087 <literal>Sound.ALUT.Loaders</literal> and its
1088 <literal>helloWorld</literal>,
1089 <literal>sine</literal>,
1090 <literal>square</literal>,
1091 <literal>sawtooth</literal>,
1092 <literal>impulse</literal> and
1093 <literal>whiteNoise</literal>
1094 exports are now constructors of the
1095 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1103 <title>arrows</title>
1107 Version number remains 0.1.
1112 <literal>Control.Sequence</literal> has been removed in
1113 favour of the new <literal>Control.Applicative</literal>
1114 module in <literal>base</literal>.
1130 <literal>cgi</literal> is a new package, developing on
1131 what used to be <literal>Network.CGI</literal> in the
1132 <literal>network</literal> package.
1143 Version number 5.3 (was 5.2).
1148 <literal>Data.Graph.Inductive.Graph</literal> no longer
1149 exports <literal>UContext</literal>.
1154 <literal>Data.Graph.Inductive.Graph</literal> now exports
1155 <literal>delLEdge</literal>.
1166 Version number remains 2.0.
1171 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1172 <literal>DisplayMode</literal> has a new constructor
1173 <literal>WithAuxBuffers</literal> and
1174 <literal>DisplayCapability</literal> has a new constructor
1175 <literal>DisplayAux</literal>. These represent freeglut-only
1181 There are new examples in
1182 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1183 <filename>RedBook/AAIndex.hs</filename>,
1184 <filename>RedBook/AARGB.hs</filename>,
1185 <filename>RedBook/AccAnti.hs</filename>,
1186 <filename>RedBook/AccPersp.hs</filename>,
1187 <filename>RedBook/Alpha3D.hs</filename>,
1188 <filename>RedBook/DOF.hs</filename>,
1189 <filename>RedBook/FogIndex.hs</filename>,
1190 <filename>RedBook/Multisamp.hs</filename>,
1191 <filename>RedBook/PointP.hs</filename>,
1192 <filename>RedBook/PolyOff.hs</filename>,
1193 <filename>RedBook/Stencil.hs</filename>,
1194 <filename>RedBook/Stroke.hs</filename> and
1195 <filename>RedBook/Torus.hs</filename>,
1197 <filename>RedBook/Font.hs</filename> and
1198 <filename>RedBook/Histogram.hs</filename> have been
1206 <title>haskell-src</title>
1210 No change (version 1.0).
1217 <title>HaXml</title>
1221 Version number 1.16 (was 1.12.1).
1226 There are now lazy versions of the parsing modules
1227 <literal>Text.XML.HaXml.ParseLazy</literal>
1228 (a lazy non-validating XML parser) and
1229 <literal>Text.XML.HaXml.Html.ParseLazy</literal>
1230 (a lazy HTML parser).
1235 There are lazy versions of two of the example tools,
1236 <literal>CanonicaliseLazy</literal> and
1237 <literal>XtractLazy</literal>.
1242 <literal>Text.XML.HaXml.Haskell2Xml</literal> and
1243 <literal>Text.XML.HaXml.Xml2Haskell</literal> have been
1244 removed, with <literal>Text.XML.HaXml.XmlContent</literal>
1246 You must now use <literal>{-! derive : XmlContent !-}</literal>
1247 rather than <literal>{-! derive :Haskell2Xml !-}</literal>
1248 to have instances derived for your classes.
1253 Now also provides the
1254 <literal>Text.ParserCombinators.HuttonMeijer</literal>
1255 monadic parser combinator library.
1260 Provides another new set of parser combinators, as well as a lazy
1261 variant, a variant that carries around state, and a
1262 variant that does both. The modules are
1263 <literal>Text.ParserCombinators.Poly</literal>,
1264 <literal>Text.ParserCombinators.PolyLazy</literal>,
1265 <literal>Text.ParserCombinators.PolyState</literal> and
1266 <literal>Text.ParserCombinators.PolyStateLazy</literal>
1269 <literal>Text.ParserCombinators.TextParser</literal>, which
1270 is the <literal>Poly</literal> parser combinators
1271 specialised for strings.
1276 Now provides a SAX-like parser in
1277 <literal>Text.XML.HaXml.SAX</literal>.
1282 Now provides a module
1283 <literal>Text.XML.HaXml.TypeMapping</literal>, which
1284 defines an explicit representation for Haskell types.
1285 This allows generation of a DTD from a Haskell value.
1290 The <literal>Posn</literal> type has been pulled out from
1291 <literal>Text.XML.HaXml.Lex</literal> into its own module
1292 <literal>Text.XML.HaXml.Posn</literal>. Some helper
1293 functions are also exported.
1298 The APIs to the pre-existing modules have also substantially
1310 No change (version 3.1).
1326 <literal>html</literal> is a new package, developing on
1327 what used to be <literal>Text.Html</literal> and
1328 <literal>Text.Html.BlockTable</literal> in the
1329 <literal>base</literal> package.
1334 <literal>Text.Html.BlockTable</literal> exports a new
1335 function <literal>empty</literal>.
1342 <title>HUnit</title>
1346 No change (version 1.1).
1364 <title>monads</title>
1368 Version number 2.0.1 (was 1.1).
1373 In <literal>Monad.Id</literal>, <literal>run</literal> has
1374 been renamed <literal>runId</literal>.
1379 The <literal>Monad.BackT</literal> module has been removed;
1380 use the new <literal>Monad.SearchT</literal> module instead.
1385 There is a new module <literal>Monad.ForEach</literal>
1386 containing a class <literal>ForEach</literal>, for
1387 applying a monadic function to each element in a container.
1388 It provides instances for <literal>[]</literal> and
1389 <literal>Maybe</literal>.
1394 The following combinators have been moved from
1395 <literal>Monad.Prelude</literal> to a new module
1396 <literal>Monad.Combinators</literal>:
1397 <literal>(@@)</literal>,
1398 <literal>(#)</literal>,
1399 <literal>(<#)</literal>,
1400 <literal>(<##)</literal>,
1401 <literal>concatMap</literal> and
1402 <literal>partitionM</literal>.
1403 <literal>Monad.Combinators</literal> also defines the
1404 following new combinators:
1405 <literal>ifM</literal>,
1406 <literal>whenM</literal>,
1407 <literal>andM</literal>,
1408 <literal>orM</literal>,
1409 <literal>allM</literal>,
1410 <literal>anyM</literal>,
1411 <literal>forEach2</literal>,
1412 <literal>forEach2_</literal>,
1413 <literal>forEach3</literal> and
1414 <literal>forEach3_</literal>, and re-exports
1415 <literal>Control.Monad</literal>.
1421 <literal>Monad.Cont</literal>,
1422 <literal>Monad.Except</literal>,
1423 <literal>Monad.Reader</literal>,
1424 <literal>Monad.State</literal> and
1425 <literal>Monad.Writer</literal> have been removed, but their
1426 monad transformer counterparts remain. If you want the
1427 monads then just transform the identity monad instead.
1432 The <literal>Monad.ExceptT</literal> module now also exports
1433 runExceptWith and unsafeRunExcept. It also now defines an
1434 instance <literal>ContM (ExceptT x m)</literal>.
1439 In <literal>Monad.Prelude</literal>, the
1440 <literal>get</literal> method of the
1441 <literal>ReaderM</literal> module has been renamed
1442 <literal>getR</literal>. The <literal>local</literal> method
1443 has been removed with a new class
1444 <literal>ReadUpdM</literal>, with methods
1445 <literal>updateR</literal>
1446 and <literal>setR</literal>, taking its place.
1447 The <literal>letLocal</literal> function has also been removed.
1452 In <literal>Monad.Prelude</literal>,
1453 <literal>update</literal> has been made a method of
1454 <literal>StateM</literal>.
1456 <literal>peek</literal> and <literal>poke</literal> methods
1457 have been renamed <literal>get</literal> and
1458 <literal>set</literal> respectively, and both have a default
1459 definition in terms of <literal>update</literal>.
1460 The <literal>poke_</literal> function has also been renamed
1461 <literal>set_</literal>.
1466 In <literal>Monad.Prelude</literal>,
1467 <literal>handle</literal> has been taken out of the
1468 <literal>ExceptM</literal> class and put into a new
1469 class <literal>HandlerM</literal> along with a new method
1470 <literal>checkExcept</literal>.
1471 There are also new functions <literal>withHandler</literal>
1472 and <literal>handle_</literal>.
1477 The <literal>TakeWriterM</literal> class has been renamed
1478 <literal>CollectorM</literal>, and rather than a single
1479 method <literal>takeFrom</literal> it has methods
1480 <literal>censor</literal> and <literal>collect</literal>
1481 with default definitions in terms of each other.
1486 <literal>Monad.Prelude</literal> defines a type
1487 <literal>Cont</literal> and functions
1488 <literal>returnCC</literal> and <literal>cJump</literal>.
1493 <literal>Monad.Prelude</literal> exports functions
1494 <literal>inReader</literal>,
1495 <literal>inWriter</literal>,
1496 <literal>inState</literal> and
1497 <literal>inExcept</literal>.
1498 These make it easy to turn a pure representation of an
1499 effectful computation into an actual computation.
1504 The <literal>zipWith3M</literal> and
1505 <literal>zipWith3M_</literal> functions have been removed
1506 from <literal>Monad.Prelude</literal>.
1511 <literal>Monad.Prelude</literal> now re-exports
1512 <literal>Monad.Combinators</literal> and
1513 <literal>Monad.ForEach</literal>, but no longer re-exports
1514 <literal>Monad</literal>.
1519 There is a new module <literal>Monad.Transformers</literal>
1521 <literal>Monad.Id</literal>,
1522 <literal>Monad.ReaderT</literal>,
1523 <literal>Monad.WriterT</literal>,
1524 <literal>Monad.StateT</literal>,
1525 <literal>Monad.ExceptT</literal>,
1526 <literal>Monad.SearchT</literal> and
1527 <literal>Monad.ContT</literal>.
1538 No change (version 1.0).
1545 <title>network</title>
1549 Version number 2.0 (was 1.0).
1554 <literal>Network.CGI</literal> has been removed; use the
1555 <literal>cgi</literal> package instead.
1560 <literal>Network.BSD</literal> no longer exports
1561 <literal>symlink</literal> or <literal>readlink</literal>;
1563 <literal>System.Posix.Files.createSymbolicLink</literal> and
1564 <literal>System.Posix.Files.readSymbolicLink</literal>
1570 <literal>Network.BSD</literal> now exports
1571 <literal>defaultProtocol</literal>.
1576 <literal>Network.Socket.SocketStatus</literal> now has a
1577 constructor <literal>ConvertedToHandle</literal> for sockets
1578 that have been converted to handles.
1583 <literal>Network.Socket.Family</literal> now has the
1584 following additional constructors:
1585 <literal>AF_NETROM</literal>,
1586 <literal>AF_BRIDGE</literal>,
1587 <literal>AF_ATMPVC</literal>,
1588 <literal>AF_ROSE</literal>,
1589 <literal>AF_NETBEUI</literal>,
1590 <literal>AF_SECURITY</literal>,
1591 <literal>AF_PACKET</literal>,
1592 <literal>AF_ASH</literal>,
1593 <literal>AF_ECONET</literal>,
1594 <literal>AF_ATMSVC</literal>,
1595 <literal>AF_IRDA</literal>,
1596 <literal>AF_PPPOX</literal>,
1597 <literal>AF_WANPIPE</literal> and
1598 <literal>AF_BLUETOOTH</literal>.
1603 In <literal>Network.URI</literal>,
1604 <literal>parseabsoluteURI</literal> has been deprecated with
1605 a new function <literal>parseAbsoluteURI</literal> taking
1613 <title>ObjectIO</title>
1617 No change (version 1.0).
1624 <title>OpenAL</title>
1628 Version number 1.3 (was 1.2).
1640 <title>OpenGL</title>
1644 Version number 2.1 (was 2.0).
1656 <title>parsec</title>
1660 Version number 2.0 (was 1.0).
1672 <title>QuickCheck</title>
1676 No change (version 1.0).
1692 <literal>time</literal> is a new package, for dealing with
1693 dates, times and time intervals.
1704 Version number remains 1.1.
1709 In <literal>Graphics.X11.Xlib.Types</literal>,
1710 <literal>XGCValues</literal> has been renamed
1711 <literal>GCValues</literal> and
1712 <literal>XSetWindowAttributes</literal> has been renamed
1713 <literal>SetWindowAttributes</literal>.
1718 In <literal>Graphics.X11.Xlib.Misc</literal>,
1719 <literal>allocaXSetWindowAttributes</literal> has been
1720 renamed <literal>allocaSetWindowAttributes</literal>.
1725 The <literal>FontStruct</literal> type has moved from
1726 <literal>Graphics.X11.Xlib.Types</literal> to
1727 <literal>Graphics.X11.Xlib.Font</literal>.
1733 <literal>Point</literal>,
1734 <literal>Rectangle</literal>,
1735 <literal>Arc</literal>,
1736 <literal>Segment</literal> and
1737 <literal>Color</literal> types in
1738 <literal>Graphics.X11.Xlib.Types</literal>
1739 are now proper datatypes rather than synonyms for tuples.
1740 They all have a <literal>Storable</literal> instance.
1745 The <literal>Byte</literal> and <literal>Short</literal>
1746 types from <literal>Graphics.X11.Xlib.Types</literal> have
1748 The following type synonyms, which had already been marked
1749 "Backwards compatibility", have also been removed:
1750 <literal>ListPoint</literal>,
1751 <literal>ListRectangle</literal>,
1752 <literal>ListArc</literal>,
1753 <literal>ListSegment</literal> and
1754 <literal>ListColor</literal>.
1759 <literal>Eq</literal>,
1760 <literal>Ord</literal>,
1761 <literal>Show</literal>,
1762 <literal>Typeable</literal> and
1763 <literal>Data</literal> are now derived for:
1764 <literal>XEvent</literal>,
1765 <literal>FdSet</literal> and
1766 <literal>TimeZone</literal> in
1767 <literal>Graphics.X11.Xlib.Event</literal>,
1768 <literal>FontStruct</literal> in
1769 <literal>Graphics.X11.Xlib.Font</literal>,
1770 <literal>XErrorEvent</literal>,
1771 <literal>XComposeStatus</literal> and
1772 <literal>XTextProperty</literal> in
1773 <literal>Graphics.X11.Xlib.Misc</literal>,
1774 <literal>Region</literal> in
1775 <literal>Graphics.X11.Xlib.Region</literal>,
1776 <literal>Display</literal>,
1777 <literal>Screen</literal>,
1778 <literal>Visual</literal>,
1779 <literal>GC</literal>,
1780 <literal>GCValues</literal>,
1781 <literal>SetWindowAttributes</literal>,
1782 <literal>Point</literal>,
1783 <literal>Rectangle</literal>,
1784 <literal>Arc</literal>,
1785 <literal>Segment</literal> and
1786 <literal>Color</literal> in
1787 <literal>Graphics.X11.Xlib.Types</literal>.
1794 <title>xhtml</title>
1803 <literal>xhtml</literal> is a new package, developing on
1804 what used to be <literal>Text.Html</literal> and
1805 <literal>Text.Html.BlockTable</literal> in the
1806 <literal>base</literal> package.
1814 <title>Internal changes</title>
1818 GHC development now has its own integrated
1819 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1825 GHC has now moved to darcs. See
1827 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1828 wiki</ulink> for more details. The sources have moved around a
1829 bit within the tree as a result, most notably the GHC sources
1830 are no longer kept within a <filename>ghc/</filename>
1836 The native code generator is now capable of compiling loops,
1837 which gets us a big step closer to being able to compile
1838 entirely without gcc on well-supported arches.