1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-6">
3 <title>Release notes for version 6.6</title>
6 <title>User-visible compiler changes</title>
11 when you compile with <option>-threaded</option>, you now get
12 an RTS flag <option>-N</option> that allows you to specify the
13 number of OS threads that GHC should use. Defaults to 1.
14 See <xref linkend="sec-using-smp" /> and <xref
15 linkend="lang-parallel" />.
20 GHC's modules are now also bundled into a
21 <literal>ghc</literal> package, allowing programs to make use
22 of GHC as a library. The interface has not yet been properly
23 designed, so is subject to change.
28 GHC now handles impredicative polymorphism and there are
29 changes to the way scoped type variables work; see
30 <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
31 for more details of the change, or <xref linkend="impredicative-polymorphism" /> for the documentation.
36 GHC now supports bang patterns to require a function is strict
37 in a given argument, e.g.
39 f (!x, y) = [x,y]</programlisting>
42 f (x, y) | x `seq` False = undefined
43 | otherwise = [x,y]</programlisting>
44 See <xref linkend="sec-bang-patterns" /> for more details.
49 The restriction that you cannot use two packages together if
50 they contain a module with the same name has been removed.
51 In implementation terms, the package name is now included in
52 every exported symbol name in the object file, so that
53 modules with the same name in different packages do not
54 clash. See <xref linkend="package-overlaps" />.
59 GHC now treats source files as UTF-8 (ASCII is a strict
60 subset of UTF-8, so ASCII source files will continue to
61 work as before). However, invalid UTF-8 sequences are
62 ignored in comments, so ASCII code with comments in, for
63 example, Latin-1 will also work.
68 GADTs can now use record syntax. Also, if the datatype could
69 have been declared with Haskell 98 syntax then deriving
70 clauses are permitted. For more info see <xref linkend="gadt" />.
75 There is a new pragma <literal>LANGUAGE</literal> which allows
76 extensions to be specified portably, i.e. without having to
77 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
78 GHC-specific options. The arguments to the pragma are the same
79 extensions that Cabal knows about. More info in
80 <xref linkend="language-pragma" />.
85 When you use <command>ghc --make</command>, GHC will now take
86 the executable filename from the name of the file containing
87 the <literal>Main</literal> module rather than using
88 <filename>a.out</filename>. The <filename>.exe</filename>
89 extension is appended on Windows, and it can of course be
90 overridden with <option>-o</option>.
95 GHC's garbage collector now deals more intelligently with
96 mutable data, so you mostly no longer need to worry about GC
97 performance when a lot of memory is taken up by
98 <literal>STArray</literal>s, <literal>IOArray</literal>s,
99 <literal>STRef</literal>s or <literal>IORef</literal>s.
101 <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
106 GHC now allows more generalisation when typing mutually
107 recursive bindings, resulting in more programs being accepted.
108 See <xref linkend="typing-binds" /> for more details.
113 The rules for instance declarations have been further relaxed.
114 You are now permitted to have instances whose heads contain
115 only type variables, e.g.
117 instance C a</programlisting>
118 and instances whose constraints are not only type variables,
121 instance C2 Int a => C3 [a] b</programlisting>
122 For more details, see <xref linkend="instance-rules" />.
127 The following flags (and, where appropriate, their inverses)
128 used to be static (can only be given on
129 the command line) but are now dynamic (can also be given in
130 a <literal>GHC_OPTIONS</literal> pragma or with
131 <literal>:set</literal> in GHCi):
133 <option>-hcsuf</option>,
134 <option>-hidir</option>,
135 <option>-hisuf</option>,
137 <option>-odir</option>,
138 <option>-ohi</option>,
139 <option>-osuf</option>,
140 <option>-keep-hc-file</option>,
141 <option>-keep-s-file</option>,
142 <option>-keep-raw-s-file</option>,
143 <option>-keep-tmp-files</option>,
144 <option>-tmpdir</option>,
146 <option>-package</option>,
147 <option>-hide-package</option>,
148 <option>-ignore-package</option>,
149 <option>-package-conf</option>,
150 <option>-no-user-package-conf</option>,
151 <option>-fcontext-stack</option>,
152 <option>-fexcess-precision</option>,
153 <option>-fignore-asserts</option>,
154 <option>-fignore-interface-pragmas</option>,
156 <option>-framework</option>,
157 <option>-framework-path</option>,
160 <option>-main-is</option>,
161 <option>-no-hs-main</option>,
162 <option>-split-objs</option>,
163 <option>-pgmL</option>,
164 <option>-pgmP</option>,
165 <option>-pgmc</option>,
166 <option>-pgma</option>,
167 <option>-pgml</option>,
168 <option>-pgmdll</option>,
169 <option>-pgmdep</option>,
170 <option>-pgmF</option>,
171 <option>-optl</option>,
172 <option>-optdll</option>,
173 <option>-optdep</option>,
174 <option>-fno-asm-mangling</option>.
175 See <xref linkend="static-dynamic-flags" /> for more on
176 the meaning of static and dynamic flags, and
177 <xref linkend="flag-reference" /> for more on the flags
183 There is a new flag <option>-x</option> for overriding the
184 default behaviour for source files; see
185 <xref linkend="overriding-suffixes" /> details.
190 The <option>-fglobalise-toplev-names</option>
191 flag has been removed.
196 The <option>-fallow-overlapping-instances</option> flag is
197 implied by the <option>-fallow-incoherent-instances</option>
203 The directory that the <filename>foo_stub.c</filename> and
204 <filename>foo_stub.h</filename> files are put in can now be
205 controlled with the <option>-stubdir</option> flag.
206 See <xref linkend="options-output" /> for more details.
211 When the <option>-fno-implicit-prelude</option> is given,
212 the equality test performed when pattern matching against an
213 overloaded numeric literal now uses the
214 <literal>(==)</literal> in scope, rather than the one from
215 <literal>Prelude</literal>. Likewise, the subtraction and
216 inequality test performed when pattern matching against
217 <literal>n+k</literal> patterns uses the
218 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
223 Another change to <option>-fno-implicit-prelude</option>:
224 with the exception of the arrow syntax, the types of
225 functions used by sugar (such as do notation, numeric
226 literal patterns) need not match the types of the
227 <literal>Prelude</literal> functions normally used.
232 The <literal>InstalledPackageInfo</literal> syntax has
234 instead of <literal>extra-libs</literal> we have
235 <literal>extra-libraries</literal>,
236 instead of <literal>extra-hugs-opts</literal> we have
237 <literal>hugs-options</literal>,
238 instead of <literal>extra-cc-opts</literal> we have
239 <literal>cc-options</literal>,
240 instead of <literal>extra-ld-opts</literal> we have
241 <literal>ld-options</literal>,
242 and instead of <literal>extra-frameworks</literal> we have
243 <literal>frameworks</literal>.
244 See <xref linkend="installed-pkg-info" /> for details.
249 If you <literal>newtype</literal> the IO monad, e.g.
251 newtype MyIO a = MyIO (IO a)</programlisting>
252 then GHC will now allow you to have FFI calls return
253 <literal>MyIO <replaceable>t</replaceable></literal>
255 <literal>IO <replaceable>t</replaceable></literal>.
256 See <xref linkend="ffi-newtype-io"/>
259 <listitem> <para> GHC's mechansim for deriving user-defined classes
260 for newtypes has been further generalised, to multi-parameter type
261 classes and higher-kinded types. See <xref
262 linkend="newtype-deriving"/>.
266 By default, pattern bindings in GHC are now monomorphic.
267 This means that some valid Haskell 98 programs will get
268 rejected, but we believe they will be few in number.
269 To revert to the old behaviour use the
270 <option>-fno-mono-pat-binds</option> flag.
271 More details are in <xref linkend="options-language" />.
276 GHCi already does more defaulting than Haskell 98 so that, for
277 example, <literal>reverse []</literal> shows a result rather
278 than giving an ambiguous type variable error. There is now a
279 flag <option>-fextended-default-rules</option> to use these
280 defaulting rules with GHC too.
281 More details are in <xref linkend="extended-default-rules" />.
286 You can now give both class and instance declarations in
287 <filename>.hs-boot</filename> files. More details in
288 <xref linkend="mutual-recursion" />.
293 Linear implicit parameters have been scheduled for removal for some
294 time. In 6.6 we've removed them from the user manual, and they may
295 well disappear from the compiler itself in 6.6.1.
300 It is now possible, with the <literal>-I</literal> RTS flag,
301 to control the amount of idle time that happens before a major
302 GC is performed. There is more detail in
303 <xref linkend="rts-options-gc" />.
308 The old syntax for FFI declarations (deprecated since 5.04)
309 is no longer accepted.
314 The <option>-split-objs</option> flag, which makes libraries
315 smaller, can now be used with <option>--make</option> and hence
316 can be used by cabal.
317 See <xref linkend="options-linker" /> for more information.
322 Template Haskell used to have limited support for type signatures in
323 patterns, but since that design is in flux for Haskell (let alone
324 Template Haskell), we've removed type signatures in patterns from
330 Parallel arrays, as enabled by <literal>-fparr</literal>, no
338 <title>GHCi changes</title>
343 GHCi now allows tab completion of in-scope names and modules
344 on platforms that use readline (i.e. not Windows).
349 GHCi now has a <literal>:main</literal> command that allows
350 you to call the <literal>main</literal> function with
351 command-line arguments.
352 See <xref linkend="ghci-commands" /> for more information.
357 GHCi now has <literal>:ctags</literal> and
358 <literal>:etags</literal> commands to generate tags files for
359 vi-style and emacs-style editors respectively.
360 See <xref linkend="ghci-commands" /> for more information.
367 <title>Libraries</title>
369 Libraries are now divided into core libraries (those that are
370 necessary to build GHC) and extra libraries. Decoupling the extra
371 libraries means that they can release independently of GHC
372 releases, and makes development builds of GHC quicker as they no
373 longer need to build unnecessary libraries.
377 The hslibs libraries have finally been removed.
382 <title>Core Libraries</title>
388 Version number 2.0 (was 1.0).
393 We now have <literal>Read</literal> and
394 <literal>Show</literal> instances for up to 15-tuples (used
395 to be up to 5-tuples).
400 New module <literal>Control.Applicative</literal> that
401 describes a structure intermediate between a functor and
402 a monad: it provides pure expressions and sequencing, but
408 <literal>Control.Exception</literal> now exports
409 <literal>bracketOnError</literal>, which behaves like
410 <literal>bracket</literal> but only runs the final
411 action if the main action raised an error.
416 There is a new module
417 <literal>Control.Monad.Instances</literal> which
418 provides <literal>Monad</literal> and
419 <literal>Functor</literal> instances for
420 <literal>((->) r)</literal> (were in
421 <literal>mtl</literal>'s
422 <literal>Control.Monad.Reader</literal>),
423 a <literal>Functor</literal> instance for
424 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
425 <literal>Control.Monad.Error</literal>) and a
426 <literal>Functor</literal> instance for
427 <literal>((,) a)</literal> (new).
432 The <literal>MonadFix</literal> instance for
433 <literal>((->) r)</literal> is now in
434 <literal>Control.Monad.Fix</literal> (was in
435 <literal>mtl</literal>'s
436 <literal>Control.Monad.Reader</literal>).
441 <literal>Control.Monad.ST</literal> now exports
442 <literal>unsafeSTToIO</literal>.
447 The <literal>HasBounds</literal> class has been removed from
448 <literal>Data.Array.Base</literal>, and its
449 <literal>bounds</literal> method is now in the
450 <literal>IArray</literal> class. The
451 <literal>MArray</literal> class
452 has also gained a method <literal>getBounds</literal>.
457 <literal>Data.Array.Base</literal> now provides an
458 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
464 <literal>Data.Array.Storable</literal> now exports a
465 function <literal>unsafeForeignPtrToStorableArray</literal>.
470 The new <literal>Data.ByteString</literal> hierarchy
471 provides time and space-efficient byte vectors.
472 The old <literal>Data.PackedString</literal> module is now
473 deprecated as a result, although there is not yet a
474 replacement if you need full unicode support.
479 <literal>GHC.Exts</literal> now provides a function
480 <literal>inline</literal> which, provided the RHS is visible
481 to the compiler, forcibly inlines its argument.
482 Otherwise, it acts like <literal>id</literal>.
487 <literal>GHC.Exts</literal> now provides a function
488 <literal>lazy</literal> which forces GHC to think that its
489 argument is lazy in its first argument.
494 <literal>Data.FiniteMap</literal> has been removed
495 (deprecated since 6.4). Use <literal>Data.Map</literal>
501 <literal>Data.Char</literal> now exports
502 <literal>isLetter</literal>,
503 <literal>isMark</literal>,
504 <literal>isNumber</literal>,
505 <literal>isPunctuation</literal>,
506 <literal>isSymbol</literal>,
507 <literal>isSeparator</literal>,
508 <literal>isAsciiUpper</literal>,
509 <literal>isAsciiLower</literal> and
510 <literal>toTitle</literal>.
511 It also exports a function
512 <literal>generalCategory</literal> that tells you the
513 category of a character in terms of a datatype
514 <literal>GeneralCategory</literal>.
519 <literal>Data.Dynamic</literal> now exports a function
520 <literal>dynTypeRep</literal>.
525 There is a new module <literal>Data.Eq</literal> which
526 just exports the <literal>Eq</literal> class.
527 Likewise, a new module <literal>Data.Ord</literal>
528 exports the <literal>Ord</literal> class, as well as the
529 handy <literal>comparing</literal> function.
534 There is a new module <literal>Data.Fixed</literal>
535 providing fixed-precision arithmetic.
540 There is a new module <literal>Data.Foldable</literal>
541 providing a class for foldable datatypes. It gives instances
542 for <literal>Maybe</literal>, <literal>[]</literal> and
543 <literal>Array i</literal>.
548 There is a new module <literal>Data.Traversable</literal>
549 providing a class for data structures that can be traversed
550 from left to right. It gives instances
551 for <literal>Maybe</literal>, <literal>[]</literal> and
552 <literal>Array i</literal>.
557 <literal>Data.FunctorM</literal> has been deprecated;
558 use <literal>Data.Foldable</literal> and
559 <literal>Data.Traversable</literal> instead.
564 The <literal>toConstr</literal> definitions for tuples in
565 <literal>Data.Generics.Instances</literal> now actually
566 evaluate their arguments to tuples before returning
572 <literal>Data.IntMap</literal> now exports
573 <literal>notMember</literal>,
574 <literal>alter</literal>,
575 <literal>mapMaybe</literal>,
576 <literal>mapMaybeWithKey</literal>,
577 <literal>mapEither</literal> and
578 <literal>mapEitherWithKey</literal>.
579 It also has <literal>Monoid</literal>,
580 <literal>Foldable</literal> and <literal>Read</literal>
586 <literal>Data.IntSet</literal> now exports
587 <literal>notMember</literal>. It also has
588 <literal>Monoid</literal> and <literal>Read</literal>
594 <literal>Data.Map</literal> now exports
595 <literal>notMember</literal>,
596 <literal>alter</literal>,
597 <literal>mapMaybe</literal>,
598 <literal>mapMaybeWithKey</literal>,
599 <literal>mapEither</literal>,
600 <literal>mapEitherWithKey</literal>,
601 <literal>minView</literal> and
602 <literal>maxView</literal>.
603 It also has <literal>Monoid</literal>,
604 <literal>Traversable</literal>, <literal>Foldable</literal>
605 and <literal>Read</literal> instances.
610 <literal>Data.Set</literal> now exports
611 <literal>notMember</literal>,
612 <literal>minView</literal> and
613 <literal>maxView</literal>.
614 It also has <literal>Monoid</literal>,
615 <literal>Foldable</literal>
616 and <literal>Read</literal> instances.
620 The old, deprecated (since 6.4) interface consisting of
621 <literal>emptySet</literal>,
622 <literal>mkSet</literal>,
623 <literal>setToList</literal>,
624 <literal>unitSet</literal>,
625 <literal>elementOf</literal>,
626 <literal>isEmptySet</literal>,
627 <literal>cardinality</literal>,
628 <literal>unionManySets</literal>,
629 <literal>minusSet</literal>,
630 <literal>mapSet</literal>,
631 <literal>intersect</literal>,
632 <literal>addToSet</literal> and
633 <literal>delFromSet</literal> has been removed.
638 <literal>Data.Monoid</literal> no longer contains the
639 <literal>Monoid</literal>
640 instances for <literal>Map</literal>,
641 <literal>IntMap</literal>, <literal>Set</literal> and
642 <literal>IntSet</literal>. They have been moved to their own
643 modules, as above. The <literal>(a -> a)</literal> instance
644 has been replaced with a
645 <literal>Monoid b => Monoid (a -> b)</literal> instance.
646 The module also now exports
647 <literal>Dual</literal>,
648 <literal>Endo</literal>,
649 <literal>All</literal>,
650 <literal>Any</literal>,
651 <literal>Sum</literal> and
652 <literal>Product</literal> types, and
653 <literal>Monoid</literal> instances for them.
658 There is a new module <literal>Data.Sequence</literal>
659 for finite sequences. The <literal>Data.Queue</literal>
660 module is now deprecated in favour of this faster, more
661 featureful replacement.
666 <literal>Data.Tree</literal> now has
667 <literal>Data</literal>, <literal>Typeable</literal>,
668 <literal>Traversable</literal> and
669 <literal>Foldable</literal>
671 <literal>Tree</literal> datatype.
676 <literal>Data.Typeable</literal> now uses
677 <option>-fallow-overlapping-instances</option>, so the
678 generic instances can be overriden for your own datatypes.
683 <literal>Debug.Trace</literal> now exports
684 <literal>traceShow</literal>, which is the same as
685 <literal>trace</literal> except its first argument can be
686 any showable thing rather than being required to be a
692 <literal>Foreign.C.Types</literal> now also defines
693 <literal>CIntPtr</literal>,
694 <literal>CUIntPtr</literal>,
695 <literal>CIntMax</literal> and
696 <literal>CUIntMax</literal>.
701 <literal>Foreign.ForeignPtr</literal> now exports
702 <literal>FinalizerEnvPtr</literal>,
703 <literal>newForeignPtrEnv</literal> and
704 <literal>addForeignPtrFinalizerEnv</literal>.
705 Together, these allow the use of finalizers which are passed
706 an additional environment parameter.
711 <literal>Foreign.Marshal.Utils</literal> no longer exports
712 the <literal>withObject</literal> function, deprecated since
713 5.04; use <literal>with</literal> instead.
718 Foreign.Ptr now also defines
719 <literal>IntPtr</literal>,
720 <literal>ptrToIntPtr</literal>,
721 <literal>intPtrToPtr</literal>,
722 <literal>WordPtr</literal>,
723 <literal>ptrToWordPtr</literal> and
724 <literal>wordPtrToPtr</literal>.
729 There are now <literal>Bounded</literal> instances for up to
730 15-tuples (used to be up to 4-tuples).
735 The <literal>Text.Html</literal> and
736 <literal>Text.Html.BlockTable</literal> modules have now
737 been removed, with the new <literal>html</literal> and
738 <literal>xhtml</literal> packages providing replacements.
743 <literal>Text.Read</literal> now exports a function
744 <literal>parens</literal> which parses a value in an
745 arbitrary number of parentheses.
750 The <literal>ForeignPtr</literal> datatype has been altered
751 to make it more efficient. There are also new functions
752 <literal>mallocPlainForeignPtr</literal> and
753 <literal>mallocPlainForeignPtrBytes</literal> which
754 do not allow you to attach a finalizer to the
755 <literal>ForeignPtr</literal>.
760 The <literal>Text.Regex</literal> and
761 <literal>Text.Regex.Posix</literal> modules have been removed.
762 Instead, use the new <literal>regex-compat</literal> package
763 for a drop-in <literal>Text.Regex</literal> replacement, or
764 the new library in the new <literal>regex-posix</literal>
776 Version number 1.1.6 (was 1.1.4).
781 Support for JHC, symmetric to the support for the other
782 implementations, has been added throughout.
787 Support for object splitting and building in-place
788 has been added throughout.
793 Added a <filename>debianTemplate</filename> directory with
794 templates for building Debian packages from Cabal packages.
799 There are now modules
800 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
801 for each of <literal>GHC</literal>, <literal>NHC</literal>,
802 <literal>Hugs</literal> and <literal>JHC</literal>.
803 The <literal>Distribution.Simple.Build</literal> and
804 <literal>Distribution.Simple.Install</literal> modules have
805 shrunk correspondingly.
810 <literal>Distribution.GetOpt</literal> is no longer a
816 <literal>Distribution.Simple</literal> exports a function
817 <literal>defaultMainArgs</literal>, which is identical to
818 <literal>defaultMain</literal> except that the arguments are
819 given as a list of strings rather than being retrieved with
820 <literal>getArgs</literal>.
825 <literal>Distribution.Simple.Configure</literal>
827 <literal>LocalBuildInfo</literal>,
829 <literal>configDependency</literal> and
830 <literal>configCompilerAux</literal>.
835 <literal>Distribution.Simple.LocalBuildInfo</literal> now
836 exports <literal>mkHaddockDir</literal>,
837 <literal>distPref</literal>,
838 <literal>srcPref</literal>,
839 <literal>autogenModulesDir</literal> and
840 <literal>mkIncludeDir</literal>.
845 <literal>Distribution.PackageDescription</literal> now
846 exports <literal>haddockName</literal>.
851 <literal>Distribution.Simple.Utils</literal> now exports
852 <literal>copyDirectoryRecursiveVerbose</literal>,
853 <literal>dirOf</literal>,
854 <literal>distPref</literal>,
855 <literal>haddockPref</literal> and
856 <literal>srcPref</literal>.
857 It no longer exports <literal>mkGHCiLibName</literal>.
864 <title>haskell98</title>
868 No change (version 1.0).
875 <title>parsec</title>
879 Version number 2.0 (was 1.0).
891 <title>readline</title>
895 No change (version 1.0).
902 <title>regex-base</title>
911 New library that provides common functions for different
919 <title>regex-compat</title>
928 New package providing a replacement
929 <literal>Text.Regex</literal> module.
936 <title>regex-posix</title>
945 A new package providing POSIX regexes.
956 Version number 2.0 (was 1.0).
961 A new module <literal>Control.Monad.STM</literal>
963 <literal>MonadPlus</literal> instance for
964 <literal>STM</literal> and the function
965 <literal>check</literal> (both used to be in
966 <literal>Control.Concurrent.STM</literal>).
968 <literal>STM</literal>,
969 <literal>atomically</literal>,
970 <literal>retry</literal>,
971 <literal>orElse</literal> and
972 <literal>catchSTM</literal>.
978 <literal>Control.Concurrent.STM.TArray</literal> defines
979 <literal>TArray</literal>, a transactional array, and makes
980 it an instance of <literal>MArray</literal>.
985 <literal>Control.Concurrent.STM.TChan</literal> now provides
986 a function <literal>newTChanIO</literal>, which allows
987 <literal>TChan</literal>s to be created in the IO monad.
988 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
989 provides <literal>newTMVarIO</literal> and
990 <literal>newEmptyTMVarIO</literal>, and
991 <literal>Control.Concurrent.STM.TVar</literal> exports
992 <literal>newTVarIO</literal>.
997 <literal>Control.Concurrent.STM.TVar</literal> exports
998 <literal>registerDelay</literal>.
1003 The <literal>Control.Concurrent.STM</literal> module has been
1004 updated to re-export all the new modules.
1011 <title>template-haskell</title>
1015 Version number 2.0 (was 1.0).
1020 A <literal>Show</literal> instance is now derived for
1021 <literal>Info</literal>, <literal>Fixity</literal> and
1022 <literal>FixityDirection</literal> in
1023 <literal>Language.Haskell.TH.Syntax</literal>.
1028 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1029 a type <literal>PkgName</literal> and functions
1030 <literal>mkPkgName</literal> and
1031 <literal>pkgString</literal>
1032 for dealing with package names.
1037 The <literal>patGE</literal> function in
1038 <literal>Language.Haskell.TH.Lib</literal> now takes the
1039 final expression separately to the list of statements
1040 rather than splitting it off itself.
1051 No change (version 1.0).
1058 <title>Win32</title>
1062 Version number 2.0 (was 1.0).
1067 Now maintained by Esa Ilari Vuokko.
1072 There is a new module
1073 <literal>System.Win32.Console</literal>
1074 providing an interface to the Windows Console API.
1079 There is a new module
1080 <literal>System.Win32.DebugApi</literal>
1081 providing an interface to the Windows DebugApi.
1086 There is a new module
1087 <literal>System.Win32.FileMapping</literal>
1088 for working with memory-mapped files.
1093 There is a new module
1094 <literal>System.Win32.SimpleMAPI</literal>
1095 for using the Windows mail API.
1100 There is a new module
1101 <literal>System.Win32.Time</literal>
1102 for using the Windows time API.
1107 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1108 <literal>Graphics.Win32.Misc</literal> to
1109 <literal>System.Win32.Types</literal>.
1114 <literal>System.Win32.File</literal> has a new
1115 function <literal>getFileInformationByHandle</literal>
1116 and associated data types.
1121 <literal>System.Win32.Info</literal> has a new
1122 function <literal>getSystemInfo</literal> and associated
1128 <literal>System.Win32.Process</literal> now has many more
1134 <literal>System.Win32.Types</literal> has new types
1135 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1136 and <literal>SIZE_T</literal>. It also has new helper
1137 functions <literal>ddwordToDwords</literal> and
1138 <literal>dwordsToDdword</literal> to split and combine
1139 ddwords into high and low components.
1144 <literal>System.Win32</literal> re-exports
1145 <literal>System.Win32.FileMapping</literal>,
1146 <literal>System.Win32.Time</literal>
1147 and <literal>System.Win32.Console</literal>.
1155 <title>Extra Libraries</title>
1161 Version number 2.0 (was 1.0).
1166 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1167 Its <literal>Phase</literal> and <literal>Duration</literal>
1168 exports are now exported by
1169 <literal>Sound.ALUT.Loaders</literal> and its
1170 <literal>helloWorld</literal>,
1171 <literal>sine</literal>,
1172 <literal>square</literal>,
1173 <literal>sawtooth</literal>,
1174 <literal>impulse</literal> and
1175 <literal>whiteNoise</literal>
1176 exports are now constructors of the
1177 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1185 <title>arrows</title>
1189 Version number 0.2 (was 0.1).
1194 <literal>Control.Sequence</literal> has been removed in
1195 favour of the new <literal>Control.Applicative</literal>
1196 module in <literal>base</literal>.
1212 <literal>cgi</literal> is a new package, developing on
1213 what used to be <literal>Network.CGI</literal> in the
1214 <literal>network</literal> package.
1225 Version number 5.3 (was 5.2).
1230 <literal>Data.Graph.Inductive.Graph</literal> no longer
1231 exports <literal>UContext</literal>.
1236 <literal>Data.Graph.Inductive.Graph</literal> now exports
1237 <literal>delLEdge</literal>.
1248 Version number remains 2.0.
1253 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1254 <literal>DisplayMode</literal> has a new constructor
1255 <literal>WithAuxBuffers</literal> and
1256 <literal>DisplayCapability</literal> has a new constructor
1257 <literal>DisplayAux</literal>. These represent freeglut-only
1263 There are new examples in
1264 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1265 <filename>RedBook/AAIndex.hs</filename>,
1266 <filename>RedBook/AARGB.hs</filename>,
1267 <filename>RedBook/AccAnti.hs</filename>,
1268 <filename>RedBook/AccPersp.hs</filename>,
1269 <filename>RedBook/Alpha3D.hs</filename>,
1270 <filename>RedBook/DOF.hs</filename>,
1271 <filename>RedBook/FogIndex.hs</filename>,
1272 <filename>RedBook/Multisamp.hs</filename>,
1273 <filename>RedBook/PointP.hs</filename>,
1274 <filename>RedBook/PolyOff.hs</filename>,
1275 <filename>RedBook/Stencil.hs</filename>,
1276 <filename>RedBook/Stroke.hs</filename> and
1277 <filename>RedBook/Torus.hs</filename>,
1279 <filename>RedBook/Font.hs</filename> and
1280 <filename>RedBook/Histogram.hs</filename> have been
1288 <title>haskell-src</title>
1292 No change (version 1.0).
1303 No change (version 3.1).
1319 <literal>html</literal> is a new package, developing on
1320 what used to be <literal>Text.Html</literal> and
1321 <literal>Text.Html.BlockTable</literal> in the
1322 <literal>base</literal> package.
1327 <literal>Text.Html.BlockTable</literal> exports a new
1328 function <literal>empty</literal>.
1335 <title>HUnit</title>
1339 No change (version 1.1).
1350 No change (version 1.0).
1357 <title>network</title>
1361 Version number 2.0 (was 1.0).
1366 <literal>Network.CGI</literal> has been removed; use the
1367 <literal>cgi</literal> package instead.
1372 <literal>Network.BSD</literal> no longer exports
1373 <literal>symlink</literal> or <literal>readlink</literal>;
1375 <literal>System.Posix.Files.createSymbolicLink</literal> and
1376 <literal>System.Posix.Files.readSymbolicLink</literal>
1382 <literal>Network.BSD</literal> now exports
1383 <literal>defaultProtocol</literal>.
1388 <literal>Network.Socket.SocketStatus</literal> now has a
1389 constructor <literal>ConvertedToHandle</literal> for sockets
1390 that have been converted to handles.
1395 <literal>Network.Socket.Family</literal> now has the
1396 following additional constructors:
1397 <literal>AF_NETROM</literal>,
1398 <literal>AF_BRIDGE</literal>,
1399 <literal>AF_ATMPVC</literal>,
1400 <literal>AF_ROSE</literal>,
1401 <literal>AF_NETBEUI</literal>,
1402 <literal>AF_SECURITY</literal>,
1403 <literal>AF_PACKET</literal>,
1404 <literal>AF_ASH</literal>,
1405 <literal>AF_ECONET</literal>,
1406 <literal>AF_ATMSVC</literal>,
1407 <literal>AF_IRDA</literal>,
1408 <literal>AF_PPPOX</literal>,
1409 <literal>AF_WANPIPE</literal> and
1410 <literal>AF_BLUETOOTH</literal>.
1415 In <literal>Network.URI</literal>,
1416 <literal>parseabsoluteURI</literal> has been deprecated with
1417 a new function <literal>parseAbsoluteURI</literal> taking
1425 <title>ObjectIO</title>
1429 No change (version 1.0).
1436 <title>OpenAL</title>
1440 Version number 1.3 (was 1.2).
1452 <title>OpenGL</title>
1456 Version number 2.1 (was 2.0).
1468 <title>QuickCheck</title>
1472 No change (version 1.0).
1488 <literal>time</literal> is a new package, for dealing with
1489 dates, times and time intervals.
1500 Version number 1.2 (was 1.1).
1505 In <literal>Graphics.X11.Xlib.Types</literal>,
1506 <literal>XGCValues</literal> has been renamed
1507 <literal>GCValues</literal> and
1508 <literal>XSetWindowAttributes</literal> has been renamed
1509 <literal>SetWindowAttributes</literal>.
1514 In <literal>Graphics.X11.Xlib.Misc</literal>,
1515 <literal>allocaXSetWindowAttributes</literal> has been
1516 renamed <literal>allocaSetWindowAttributes</literal>.
1521 The <literal>FontStruct</literal> type has moved from
1522 <literal>Graphics.X11.Xlib.Types</literal> to
1523 <literal>Graphics.X11.Xlib.Font</literal>.
1529 <literal>Point</literal>,
1530 <literal>Rectangle</literal>,
1531 <literal>Arc</literal>,
1532 <literal>Segment</literal> and
1533 <literal>Color</literal> types in
1534 <literal>Graphics.X11.Xlib.Types</literal>
1535 are now proper datatypes rather than synonyms for tuples.
1536 They all have a <literal>Storable</literal> instance.
1541 The <literal>Byte</literal> and <literal>Short</literal>
1542 types from <literal>Graphics.X11.Xlib.Types</literal> have
1544 The following type synonyms, which had already been marked
1545 "Backwards compatibility", have also been removed:
1546 <literal>ListPoint</literal>,
1547 <literal>ListRectangle</literal>,
1548 <literal>ListArc</literal>,
1549 <literal>ListSegment</literal> and
1550 <literal>ListColor</literal>.
1555 <literal>Eq</literal>,
1556 <literal>Ord</literal>,
1557 <literal>Show</literal>,
1558 <literal>Typeable</literal> and
1559 <literal>Data</literal> are now derived for:
1560 <literal>XEvent</literal>,
1561 <literal>FdSet</literal> and
1562 <literal>TimeZone</literal> in
1563 <literal>Graphics.X11.Xlib.Event</literal>,
1564 <literal>FontStruct</literal> in
1565 <literal>Graphics.X11.Xlib.Font</literal>,
1566 <literal>XErrorEvent</literal>,
1567 <literal>XComposeStatus</literal> and
1568 <literal>XTextProperty</literal> in
1569 <literal>Graphics.X11.Xlib.Misc</literal>,
1570 <literal>Region</literal> in
1571 <literal>Graphics.X11.Xlib.Region</literal>,
1572 <literal>Display</literal>,
1573 <literal>Screen</literal>,
1574 <literal>Visual</literal>,
1575 <literal>GC</literal>,
1576 <literal>GCValues</literal>,
1577 <literal>SetWindowAttributes</literal>,
1578 <literal>Point</literal>,
1579 <literal>Rectangle</literal>,
1580 <literal>Arc</literal>,
1581 <literal>Segment</literal> and
1582 <literal>Color</literal> in
1583 <literal>Graphics.X11.Xlib.Types</literal>.
1590 <title>xhtml</title>
1599 <literal>xhtml</literal> is a new package, developing on
1600 what used to be <literal>Text.Html</literal> and
1601 <literal>Text.Html.BlockTable</literal> in the
1602 <literal>base</literal> package.
1610 <title>Internal changes</title>
1614 GHC development now has its own integrated
1615 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1621 GHC has now moved to darcs. See
1623 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1624 wiki</ulink> for more details. The sources have moved around a
1625 bit within the tree as a result, most notably the GHC sources
1626 are no longer kept within a <filename>ghc/</filename>
1632 The native code generator is now capable of compiling loops,
1633 which gets us a big step closer to being able to compile
1634 entirely without gcc on well-supported arches.