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>parsec</title>
838 Version number 2.0 (was 1.0).
850 <title>readline</title>
854 No change (version 1.0).
865 Version number 2.0 (was 1.0).
870 A new module <literal>Control.Monad.STM</literal>
872 <literal>MonadPlus</literal> instance for
873 <literal>STM</literal> and the function
874 <literal>check</literal> (both used to be in
875 <literal>Control.Concurrent.STM</literal>).
877 <literal>STM</literal>,
878 <literal>atomically</literal>,
879 <literal>retry</literal>,
880 <literal>orElse</literal> and
881 <literal>catchSTM</literal>.
886 There is a new module
887 <literal>Control.Sequential.STM</literal> for non-concurrent
888 transactions which nevertheless need to be atomic in the
895 <literal>Control.Concurrent.STM.TArray</literal> defines
896 <literal>TArray</literal>, a transactional array, and makes
897 it an instance of <literal>MArray</literal>.
902 <literal>Control.Concurrent.STM.TChan</literal> now provides
903 a function <literal>newTChanIO</literal>, which allows
904 <literal>TChan</literal>s to be created in the IO monad.
905 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
906 provides <literal>newTMVarIO</literal> and
907 <literal>newEmptyTMVarIO</literal>, and
908 <literal>Control.Concurrent.STM.TVar</literal> exports
909 <literal>newTVarIO</literal>.
914 <literal>Control.Concurrent.STM.TVar</literal> exports
915 <literal>registerDelay</literal>.
920 The <literal>Control.Concurrent.STM</literal> module has been
921 updated to re-export all the new modules.
928 <title>template-haskell</title>
932 Version number 2.0 (was 1.0).
937 A <literal>Show</literal> instance is now derived for
938 <literal>Info</literal>, <literal>Fixity</literal> and
939 <literal>FixityDirection</literal> in
940 <literal>Language.Haskell.TH.Syntax</literal>.
945 In <literal>Language.Haskell.TH.Syntax</literal>, there is
946 a type <literal>PkgName</literal> and functions
947 <literal>mkPkgName</literal> and
948 <literal>pkgString</literal>
949 for dealing with package names.
954 The <literal>patGE</literal> function in
955 <literal>Language.Haskell.TH.Lib</literal> now takes the
956 final expression separately to the list of statements
957 rather than splitting it off itself.
968 No change (version 1.0).
979 Version number 2.0 (was 1.0).
984 Now maintained by Esa Ilari Vuokko.
989 There is a new module
990 <literal>System.Win32.Console</literal>
991 providing an interface to the Windows Console API.
996 There is a new module
997 <literal>System.Win32.DebugApi</literal>
998 providing an interface to the Windows DebugApi.
1003 There is a new module
1004 <literal>System.Win32.FileMapping</literal>
1005 for working with memory-mapped files.
1010 There is a new module
1011 <literal>System.Win32.SimpleMAPI</literal>
1012 for using the Windows mail API.
1017 There is a new module
1018 <literal>System.Win32.Time</literal>
1019 for using the Windows time API.
1024 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1025 <literal>Graphics.Win32.Misc</literal> to
1026 <literal>System.Win32.Types</literal>.
1031 <literal>System.Win32.File</literal> has a new
1032 function <literal>getFileInformationByHandle</literal>
1033 and associated data types.
1038 <literal>System.Win32.Info</literal> has a new
1039 function <literal>getSystemInfo</literal> and associated
1045 <literal>System.Win32.Process</literal> now has many more
1051 <literal>System.Win32.Types</literal> has new types
1052 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1053 and <literal>SIZE_T</literal>. It also has new helper
1054 functions <literal>ddwordToDwords</literal> and
1055 <literal>dwordsToDdword</literal> to split and combine
1056 ddwords into high and low components.
1061 <literal>System.Win32</literal> re-exports
1062 <literal>System.Win32.FileMapping</literal>,
1063 <literal>System.Win32.Time</literal>
1064 and <literal>System.Win32.Console</literal>.
1069 <literal>System.Win32</literal> no longer exports
1070 <literal>LCID</literal>,
1071 <literal>LANGID</literal>,
1072 <literal>SortID</literal>,
1073 <literal>SubLANGID</literal>,
1074 <literal>PrimaryLANGID</literal>,
1075 <literal>mAKELCID</literal>,
1076 <literal>lANGIDFROMLCID</literal>,
1077 <literal>sORTIDFROMLCID</literal>,
1078 <literal>mAKELANGID</literal>,
1079 <literal>pRIMARYLANGID</literal> or
1080 <literal>sUBLANGID</literal> from
1081 <literal>System.Win32.NLS</literal>.
1089 <title>Extra Libraries</title>
1095 Version number 2.0 (was 1.0).
1100 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1101 Its <literal>Phase</literal> and <literal>Duration</literal>
1102 exports are now exported by
1103 <literal>Sound.ALUT.Loaders</literal> and its
1104 <literal>helloWorld</literal>,
1105 <literal>sine</literal>,
1106 <literal>square</literal>,
1107 <literal>sawtooth</literal>,
1108 <literal>impulse</literal> and
1109 <literal>whiteNoise</literal>
1110 exports are now constructors of the
1111 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1119 <title>arrows</title>
1123 Version number remains 0.1.
1128 <literal>Control.Sequence</literal> has been removed in
1129 favour of the new <literal>Control.Applicative</literal>
1130 module in <literal>base</literal>.
1146 <literal>cgi</literal> is a new package, developing on
1147 what used to be <literal>Network.CGI</literal> in the
1148 <literal>network</literal> package.
1159 Version number 5.3 (was 5.2).
1164 <literal>Data.Graph.Inductive.Graph</literal> no longer
1165 exports <literal>UContext</literal>.
1170 <literal>Data.Graph.Inductive.Graph</literal> now exports
1171 <literal>delLEdge</literal>.
1182 Version number remains 2.0.
1187 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1188 <literal>DisplayMode</literal> has a new constructor
1189 <literal>WithAuxBuffers</literal> and
1190 <literal>DisplayCapability</literal> has a new constructor
1191 <literal>DisplayAux</literal>. These represent freeglut-only
1197 There are new examples in
1198 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1199 <filename>RedBook/AAIndex.hs</filename>,
1200 <filename>RedBook/AARGB.hs</filename>,
1201 <filename>RedBook/AccAnti.hs</filename>,
1202 <filename>RedBook/AccPersp.hs</filename>,
1203 <filename>RedBook/Alpha3D.hs</filename>,
1204 <filename>RedBook/DOF.hs</filename>,
1205 <filename>RedBook/FogIndex.hs</filename>,
1206 <filename>RedBook/Multisamp.hs</filename>,
1207 <filename>RedBook/PointP.hs</filename>,
1208 <filename>RedBook/PolyOff.hs</filename>,
1209 <filename>RedBook/Stencil.hs</filename>,
1210 <filename>RedBook/Stroke.hs</filename> and
1211 <filename>RedBook/Torus.hs</filename>,
1213 <filename>RedBook/Font.hs</filename> and
1214 <filename>RedBook/Histogram.hs</filename> have been
1222 <title>haskell-src</title>
1226 No change (version 1.0).
1233 <title>HaXml</title>
1237 Version number 1.16 (was 1.12.1).
1242 There are now lazy versions of the parsing modules
1243 <literal>Text.XML.HaXml.ParseLazy</literal>
1244 (a lazy non-validating XML parser) and
1245 <literal>Text.XML.HaXml.Html.ParseLazy</literal>
1246 (a lazy HTML parser).
1251 There are lazy versions of two of the example tools,
1252 <literal>CanonicaliseLazy</literal> and
1253 <literal>XtractLazy</literal>.
1258 <literal>Text.XML.HaXml.Haskell2Xml</literal> and
1259 <literal>Text.XML.HaXml.Xml2Haskell</literal> have been
1260 removed, with <literal>Text.XML.HaXml.XmlContent</literal>
1262 You must now use <literal>{-! derive : XmlContent !-}</literal>
1263 rather than <literal>{-! derive :Haskell2Xml !-}</literal>
1264 to have instances derived for your classes.
1269 Now also provides the
1270 <literal>Text.ParserCombinators.HuttonMeijer</literal>
1271 monadic parser combinator library.
1276 Provides another new set of parser combinators, as well as a lazy
1277 variant, a variant that carries around state, and a
1278 variant that does both. The modules are
1279 <literal>Text.ParserCombinators.Poly</literal>,
1280 <literal>Text.ParserCombinators.PolyLazy</literal>,
1281 <literal>Text.ParserCombinators.PolyState</literal> and
1282 <literal>Text.ParserCombinators.PolyStateLazy</literal>
1285 <literal>Text.ParserCombinators.TextParser</literal>, which
1286 is the <literal>Poly</literal> parser combinators
1287 specialised for strings.
1292 Now provides a SAX-like parser in
1293 <literal>Text.XML.HaXml.SAX</literal>.
1298 Now provides a module
1299 <literal>Text.XML.HaXml.TypeMapping</literal>, which
1300 defines an explicit representation for Haskell types.
1301 This allows generation of a DTD from a Haskell value.
1306 The <literal>Posn</literal> type has been pulled out from
1307 <literal>Text.XML.HaXml.Lex</literal> into its own module
1308 <literal>Text.XML.HaXml.Posn</literal>. Some helper
1309 functions are also exported.
1314 The APIs to the pre-existing modules have also substantially
1326 No change (version 3.1).
1342 <literal>html</literal> is a new package, developing on
1343 what used to be <literal>Text.Html</literal> and
1344 <literal>Text.Html.BlockTable</literal> in the
1345 <literal>base</literal> package.
1350 <literal>Text.Html.BlockTable</literal> exports a new
1351 function <literal>empty</literal>.
1358 <title>HUnit</title>
1362 No change (version 1.1).
1380 <title>monads</title>
1384 Version number 2.0.1 (was 1.1).
1389 In <literal>Monad.Id</literal>, <literal>run</literal> has
1390 been renamed <literal>runId</literal>.
1395 The <literal>Monad.BackT</literal> module has been removed;
1396 use the new <literal>Monad.SearchT</literal> module instead.
1401 There is a new module <literal>Monad.ForEach</literal>
1402 containing a class <literal>ForEach</literal>, for
1403 applying a monadic function to each element in a container.
1404 It provides instances for <literal>[]</literal> and
1405 <literal>Maybe</literal>.
1410 The following combinators have been moved from
1411 <literal>Monad.Prelude</literal> to a new module
1412 <literal>Monad.Combinators</literal>:
1413 <literal>(@@)</literal>,
1414 <literal>(#)</literal>,
1415 <literal>(<#)</literal>,
1416 <literal>(<##)</literal>,
1417 <literal>concatMap</literal> and
1418 <literal>partitionM</literal>.
1419 <literal>Monad.Combinators</literal> also defines the
1420 following new combinators:
1421 <literal>ifM</literal>,
1422 <literal>whenM</literal>,
1423 <literal>andM</literal>,
1424 <literal>orM</literal>,
1425 <literal>allM</literal>,
1426 <literal>anyM</literal>,
1427 <literal>forEach2</literal>,
1428 <literal>forEach2_</literal>,
1429 <literal>forEach3</literal> and
1430 <literal>forEach3_</literal>, and re-exports
1431 <literal>Control.Monad</literal>.
1437 <literal>Monad.Cont</literal>,
1438 <literal>Monad.Except</literal>,
1439 <literal>Monad.Reader</literal>,
1440 <literal>Monad.State</literal> and
1441 <literal>Monad.Writer</literal> have been removed, but their
1442 monad transformer counterparts remain. If you want the
1443 monads then just transform the identity monad instead.
1448 The <literal>Monad.ExceptT</literal> module now also exports
1449 runExceptWith and unsafeRunExcept. It also now defines an
1450 instance <literal>ContM (ExceptT x m)</literal>.
1455 In <literal>Monad.Prelude</literal>, the
1456 <literal>get</literal> method of the
1457 <literal>ReaderM</literal> module has been renamed
1458 <literal>getR</literal>. The <literal>local</literal> method
1459 has been removed with a new class
1460 <literal>ReadUpdM</literal>, with methods
1461 <literal>updateR</literal>
1462 and <literal>setR</literal>, taking its place.
1463 The <literal>letLocal</literal> function has also been removed.
1468 In <literal>Monad.Prelude</literal>,
1469 <literal>update</literal> has been made a method of
1470 <literal>StateM</literal>.
1472 <literal>peek</literal> and <literal>poke</literal> methods
1473 have been renamed <literal>get</literal> and
1474 <literal>set</literal> respectively, and both have a default
1475 definition in terms of <literal>update</literal>.
1476 The <literal>poke_</literal> function has also been renamed
1477 <literal>set_</literal>.
1482 In <literal>Monad.Prelude</literal>,
1483 <literal>handle</literal> has been taken out of the
1484 <literal>ExceptM</literal> class and put into a new
1485 class <literal>HandlerM</literal> along with a new method
1486 <literal>checkExcept</literal>.
1487 There are also new functions <literal>withHandler</literal>
1488 and <literal>handle_</literal>.
1493 The <literal>TakeWriterM</literal> class has been renamed
1494 <literal>CollectorM</literal>, and rather than a single
1495 method <literal>takeFrom</literal> it has methods
1496 <literal>censor</literal> and <literal>collect</literal>
1497 with default definitions in terms of each other.
1502 <literal>Monad.Prelude</literal> defines a type
1503 <literal>Cont</literal> and functions
1504 <literal>returnCC</literal> and <literal>cJump</literal>.
1509 <literal>Monad.Prelude</literal> exports functions
1510 <literal>inReader</literal>,
1511 <literal>inWriter</literal>,
1512 <literal>inState</literal> and
1513 <literal>inExcept</literal>.
1514 These make it easy to turn a pure representation of an
1515 effectful computation into an actual computation.
1520 The <literal>zipWith3M</literal> and
1521 <literal>zipWith3M_</literal> functions have been removed
1522 from <literal>Monad.Prelude</literal>.
1527 <literal>Monad.Prelude</literal> now re-exports
1528 <literal>Monad.Combinators</literal> and
1529 <literal>Monad.ForEach</literal>, but no longer re-exports
1530 <literal>Monad</literal>.
1535 There is a new module <literal>Monad.Transformers</literal>
1537 <literal>Monad.Id</literal>,
1538 <literal>Monad.ReaderT</literal>,
1539 <literal>Monad.WriterT</literal>,
1540 <literal>Monad.StateT</literal>,
1541 <literal>Monad.ExceptT</literal>,
1542 <literal>Monad.SearchT</literal> and
1543 <literal>Monad.ContT</literal>.
1554 No change (version 1.0).
1561 <title>network</title>
1565 Version number 2.0 (was 1.0).
1570 <literal>Network.CGI</literal> has been removed; use the
1571 <literal>cgi</literal> package instead.
1576 <literal>Network.BSD</literal> no longer exports
1577 <literal>symlink</literal> or <literal>readlink</literal>;
1579 <literal>System.Posix.Files.createSymbolicLink</literal> and
1580 <literal>System.Posix.Files.readSymbolicLink</literal>
1586 <literal>Network.BSD</literal> now exports
1587 <literal>defaultProtocol</literal>.
1592 <literal>Network.Socket.SocketStatus</literal> now has a
1593 constructor <literal>ConvertedToHandle</literal> for sockets
1594 that have been converted to handles.
1599 <literal>Network.Socket.Family</literal> now has the
1600 following additional constructors:
1601 <literal>AF_NETROM</literal>,
1602 <literal>AF_BRIDGE</literal>,
1603 <literal>AF_ATMPVC</literal>,
1604 <literal>AF_ROSE</literal>,
1605 <literal>AF_NETBEUI</literal>,
1606 <literal>AF_SECURITY</literal>,
1607 <literal>AF_PACKET</literal>,
1608 <literal>AF_ASH</literal>,
1609 <literal>AF_ECONET</literal>,
1610 <literal>AF_ATMSVC</literal>,
1611 <literal>AF_IRDA</literal>,
1612 <literal>AF_PPPOX</literal>,
1613 <literal>AF_WANPIPE</literal> and
1614 <literal>AF_BLUETOOTH</literal>.
1619 In <literal>Network.URI</literal>,
1620 <literal>parseabsoluteURI</literal> has been deprecated with
1621 a new function <literal>parseAbsoluteURI</literal> taking
1629 <title>ObjectIO</title>
1633 No change (version 1.0).
1640 <title>OpenAL</title>
1644 Version number 1.3 (was 1.2).
1656 <title>OpenGL</title>
1660 Version number 2.1 (was 2.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.