1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-6">
3 <title>Release notes for version 6.6</title>
6 <title>User-visible compiler changes</title>
11 when you compile with <option>-threaded</option>, you now get
12 an RTS flag <option>-N</option> that allows you to specify the
13 number of OS threads that GHC should use. Defaults to 1.
14 See <xref linkend="sec-using-smp" /> and <xref
15 linkend="lang-parallel" />.
20 GHC's modules are now also bundled into a
21 <literal>ghc</literal> package, allowing programs to make use
22 of GHC as a library. The interface has not yet been properly
23 designed, so is subject to change.
28 GHC now handles impredicative polymorphism and there are
29 changes to the way scoped type variables work; see
30 <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
36 GHC now supports bang patterns to require a function is strict
37 in a given argument, e.g.
39 f (!x, y) = [x,y]</programlisting>
42 f (x, y) | x `seq` False = undefined
43 | otherwise = [x,y]</programlisting>
48 The restriction that you cannot use two packages together if
49 they contain a module with the same name has been removed.
50 In implementation terms, the package name is now included in
51 every exported symbol name in the object file, so that
52 modules with the same name in different packages do not
53 clash. See <xref linkend="package-overlaps" />.
58 GHC now treats source files as UTF-8 (ASCII is a strict
59 subset of UTF-8, so ASCII source files will continue to
60 work as before). However, invalid UTF-8 sequences are
61 ignored in comments, so ASCII code with comments in, for
62 example, Latin-1 will also work.
67 GADTs can now use record syntax. Also, if the datatype could
68 have been declared with Haskell 98 syntax then deriving
69 clauses are permitted. For more info see <xref linkend="gadt" />.
74 There is a new pragma <literal>LANGUAGE</literal> which allows
75 extensions to be specified portably, i.e. without having to
76 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
77 GHC-specific options. The arguments to the pragma are the same
78 extensions that Cabal knows about. More info in
79 <xref linkend="language-pragma" />.
84 When you use <command>ghc --make</command>, GHC will now take
85 the executable filename from the name of the file containing
86 the <literal>Main</literal> module rather than using
87 <filename>a.out</filename>. The <filename>.exe</filename>
88 extension is appended on Windows, and it can of course be
89 overridden with <option>-o</option>.
94 GHC's garbage collector now deals more intelligently with
95 mutable data, so you mostly no longer need to worry about GC
96 performance when a lot of memory is taken up by
97 <literal>STArray</literal>s, <literal>IOArray</literal>s,
98 <literal>STRef</literal>s or <literal>IORef</literal>s.
103 GHC now allows more generalisation when typing mutually
104 recursive bindings, resulting in more programs being accepted.
105 See <xref linkend="typing-binds" /> for more details.
110 The rules for instance declarations have been further relaxed.
111 You are now permitted to have instances whose heads contain
112 only type variables, e.g.
114 instance C a</programlisting>
115 and instances whose constraints are not only type variables,
118 instance C2 Int a => C3 [a] b</programlisting>
119 For more details, see <xref linkend="instance-rules" />.
124 The following flags (and, where appropriate, their inverses)
125 used to be static (can only be given on
126 the command line) but are now dynamic (can also be given in
127 a <literal>GHC_OPTIONS</literal> pragma or with
128 <literal>:set</literal> in GHCi):
130 <option>-hcsuf</option>,
131 <option>-hidir</option>,
132 <option>-hisuf</option>,
134 <option>-odir</option>,
135 <option>-ohi</option>,
136 <option>-osuf</option>,
137 <option>-keep-hc-file</option>,
138 <option>-keep-s-file</option>,
139 <option>-keep-raw-s-file</option>,
140 <option>-keep-tmp-files</option>,
141 <option>-tmpdir</option>,
143 <option>-package</option>,
144 <option>-hide-package</option>,
145 <option>-ignore-package</option>,
146 <option>-package-conf</option>,
147 <option>-no-user-package-conf</option>,
148 <option>-fcontext-stack</option>,
149 <option>-fexcess-precision</option>,
150 <option>-fignore-asserts</option>,
151 <option>-fignore-interface-pragmas</option>,
153 <option>-framework</option>,
154 <option>-framework-path</option>,
157 <option>-main-is</option>,
158 <option>-no-hs-main</option>,
159 <option>-split-objs</option>,
160 <option>-pgmL</option>,
161 <option>-pgmP</option>,
162 <option>-pgmc</option>,
163 <option>-pgma</option>,
164 <option>-pgml</option>,
165 <option>-pgmdll</option>,
166 <option>-pgmdep</option>,
167 <option>-pgmF</option>,
168 <option>-optl</option>,
169 <option>-optdll</option>,
170 <option>-optdep</option>,
171 <option>-fno-asm-mangling</option>.
172 See <xref linkend="static-dynamic-flags" /> for more on
173 the meaning of static and dynamic flags, and
174 <xref linkend="flag-reference" /> for more on the flags
180 There is a new flag <option>-x</option> for overriding the
181 default behaviour for source files; see
182 <xref linkend="overriding-suffixes" /> details.
187 The <option>-fglobalise-toplev-names</option>
188 flag has been removed.
193 The <option>-fallow-overlapping-instances</option> flag is
194 implied by the <option>-fallow-incoherent-instances</option>
200 The directory that the <filename>foo_stub.c</filename> and
201 <filename>foo_stub.h</filename> files are put in can now be
202 controlled with the <option>-stubdir</option> flag.
203 See <xref linkend="options-output" /> for more details.
208 When the <option>-fno-implicit-prelude</option> is given,
209 the equality test performed when pattern matching against an
210 overloaded numeric literal now uses the
211 <literal>(==)</literal> in scope, rather than the one from
212 <literal>Prelude</literal>. Likewise, the subtraction and
213 inequality test performed when pattern matching against
214 <literal>n+k</literal> patterns uses the
215 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
220 Another change to <option>-fno-implicit-prelude</option>:
221 with the exception of the arrow syntax, the types of
222 functions used by sugar (such as do notation, numeric
223 literal patterns) need not match the types of the
224 <literal>Prelude</literal> functions normally used.
229 The <literal>InstalledPackageInfo</literal> syntax has
231 instead of <literal>extra-libs</literal> we have
232 <literal>extra-libraries</literal>,
233 instead of <literal>extra-hugs-opts</literal> we have
234 <literal>hugs-options</literal>,
235 instead of <literal>extra-cc-opts</literal> we have
236 <literal>cc-options</literal>,
237 instead of <literal>extra-ld-opts</literal> we have
238 <literal>ld-options</literal>,
239 and instead of <literal>extra-frameworks</literal> we have
240 <literal>frameworks</literal>.
241 See <xref linkend="installed-pkg-info" /> for details.
246 If you <literal>newtype</literal> the IO monad, e.g.
248 newtype MyIO a = MyIO (IO a)</programlisting>
249 then GHC will now allow you to have FFI calls return
250 <literal>MyIO <replaceable>t</replaceable></literal>
252 <literal>IO <replaceable>t</replaceable></literal>.
253 See <xref linkend="ffi-newtype-io"/>
256 <listitem> <para> GHC's mechansim for deriving user-defined classes
257 for newtypes has been further generalised, to multi-parameter type
258 classes and higher-kinded types. See <xref
259 linkend="newtype-deriving"/>.
263 By default, pattern bindings in GHC are now monomorphic.
264 This means that some valid Haskell 98 programs will get
265 rejected, but we believe they will be few in number.
266 To revert to the old behaviour use the
267 <option>-fno-mono-pat-binds</option> flag.
268 More details are in <xref linkend="options-language" />.
273 GHCi already does more defaulting than Haskell 98 so that, for
274 example, <literal>reverse []</literal> shows a result rather
275 than giving an ambiguous type variable error. There is now a
276 flag <option>-fextended-default-rules</option> to use these
277 defaulting rules with GHC too.
278 More details are in <xref linkend="extended-default-rules" />.
283 You can now give both class and instance declarations in
284 <filename>.hs-boot</filename> files. More details in
285 <xref linkend="mutual-recursion" />.
290 Linear implicit parameters have been scheduled for removal for some
291 time. In 6.6 we've removed them from the user manual, and they may
292 well disappear from the compiler itself in 6.6.1.
297 It is now possible, with the <literal>-I</literal> RTS flag,
298 to control the amount of idle time that happens before a major
304 The old syntax for FFI declarations (deprecated since 5.04)
305 is no longer accepted.
310 The <option>-split-objs</option> flag can now be used with
311 <option>--make</option>, and hence can be used by cabal.
318 <title>GHCi changes</title>
323 GHCi now allows tab completion of in-scope names and modules
324 on platforms that use readline (i.e. not Windows).
329 GHCi now has a <literal>:main</literal> command that allows
330 you to call the <literal>main</literal> function with
331 command-line arguments.
332 See <xref linkend="ghci-commands" /> for more information.
337 GHCi now has <literal>:ctags</literal> and
338 <literal>:etags</literal> commands to generate tags files for
339 vi-style and emacs-style editors respectively.
340 See <xref linkend="ghci-commands" /> for more information.
347 <title>Libraries</title>
349 Libraries are now divided into core libraries (those that are
350 necessary to build GHC) and extra libraries. Decoupling the extra
351 libraries means that they can release independently of GHC
352 releases, and makes development builds of GHC quicker as they no
353 longer need to build unnecessary libraries.
357 The hslibs libraries have finally been removed.
362 <title>Core Libraries</title>
368 Version number 2.0 (was 1.0).
373 We now have <literal>Read</literal> and
374 <literal>Show</literal> instances for up to 15-tuples (used
375 to be up to 5-tuples).
380 New module <literal>Control.Applicative</literal> that
381 describes a structure intermediate between a functor and
382 a monad: it provides pure expressions and sequencing, but
388 <literal>Control.Exception</literal> now exports
389 <literal>bracketOnError</literal>, which behaves like
390 <literal>bracket</literal> but only runs the final
391 action if the main action raised an error.
396 There is a new module
397 <literal>Control.Monad.Instances</literal> which
398 provides <literal>Monad</literal> and
399 <literal>Functor</literal> instances for
400 <literal>((->) r)</literal> (were in
401 <literal>mtl</literal>'s
402 <literal>Control.Monad.Reader</literal>),
403 a <literal>Functor</literal> instance for
404 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
405 <literal>Control.Monad.Error</literal>) and a
406 <literal>Functor</literal> instance for
407 <literal>((,) a)</literal> (new).
412 The <literal>MonadFix</literal> instance for
413 <literal>((->) r)</literal> is now in
414 <literal>Control.Monad.Fix</literal> (was in
415 <literal>mtl</literal>'s
416 <literal>Control.Monad.Reader</literal>).
421 <literal>Control.Monad.ST</literal> now exports
422 <literal>unsafeSTToIO</literal>.
427 The <literal>HasBounds</literal> class has been removed from
428 <literal>Data.Array.Base</literal>, and its
429 <literal>bounds</literal> method is now in the
430 <literal>IArray</literal> class. The
431 <literal>MArray</literal> class
432 has also gained a method <literal>getBounds</literal>.
437 <literal>Data.Array.Base</literal> now provides an
438 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
444 <literal>Data.Array.Storable</literal> now exports a
445 function <literal>unsafeForeignPtrToStorableArray</literal>.
450 The new <literal>Data.ByteString</literal> hierarchy
451 provides time and space-efficient byte vectors.
452 The old <literal>Data.PackedString</literal> module is now
453 deprecated as a result, although there is not yet a
454 replacement if you need full unicode support.
459 <literal>GHC.Exts</literal> now provides a function
460 <literal>inline</literal> which, provided the RHS is visible
461 to the compiler, forcibly inlines its argument.
462 Otherwise, it acts like <literal>id</literal>.
467 <literal>GHC.Exts</literal> now provides a function
468 <literal>lazy</literal> which forces GHC to think that its
469 argument is lazy in its first argument.
474 <literal>Data.FiniteMap</literal> has been removed
475 (deprecated since 6.4). Use <literal>Data.Map</literal>
481 <literal>Data.Char</literal> now exports
482 <literal>isLetter</literal>,
483 <literal>isMark</literal>,
484 <literal>isNumber</literal>,
485 <literal>isPunctuation</literal>,
486 <literal>isSymbol</literal>,
487 <literal>isSeparator</literal>,
488 <literal>isAsciiUpper</literal>,
489 <literal>isAsciiLower</literal> and
490 <literal>toTitle</literal>.
491 It also exports a function
492 <literal>generalCategory</literal> that tells you the
493 category of a character in terms of a datatype
494 <literal>GeneralCategory</literal>.
499 <literal>Data.Dynamic</literal> now exports a function
500 <literal>dynTypeRep</literal>.
505 There is a new module <literal>Data.Eq</literal> which
506 just exports the <literal>Eq</literal> class.
507 Likewise, a new module <literal>Data.Ord</literal>
508 exports the <literal>Ord</literal> class, as well as the
509 handy <literal>comparing</literal> function.
514 There is a new module <literal>Data.Fixed</literal>
515 providing fixed-precision arithmetic.
520 There is a new module <literal>Data.Foldable</literal>
521 providing a class for foldable datatypes. It gives instances
522 for <literal>Maybe</literal>, <literal>[]</literal> and
523 <literal>Array i</literal>.
528 There is a new module <literal>Data.Traversable</literal>
529 providing a class for data structures that can be traversed
530 from left to right. It gives instances
531 for <literal>Maybe</literal>, <literal>[]</literal> and
532 <literal>Array i</literal>.
537 <literal>Data.FunctorM</literal> has been deprecated;
538 use <literal>Data.Foldable</literal> and
539 <literal>Data.Traversable</literal> instead.
544 The <literal>toConstr</literal> definitions for tuples in
545 <literal>Data.Generics.Instances</literal> now actually
546 evaluate their arguments to tuples before returning
552 <literal>Data.IntMap</literal> now exports
553 <literal>notMember</literal>,
554 <literal>alter</literal>,
555 <literal>mapMaybe</literal>,
556 <literal>mapMaybeWithKey</literal>,
557 <literal>mapEither</literal> and
558 <literal>mapEitherWithKey</literal>.
559 It also has <literal>Monoid</literal>,
560 <literal>Foldable</literal> and <literal>Read</literal>
566 <literal>Data.IntSet</literal> now exports
567 <literal>notMember</literal>. It also has
568 <literal>Monoid</literal> and <literal>Read</literal>
574 <literal>Data.Map</literal> now exports
575 <literal>notMember</literal>,
576 <literal>alter</literal>,
577 <literal>mapMaybe</literal>,
578 <literal>mapMaybeWithKey</literal>,
579 <literal>mapEither</literal>,
580 <literal>mapEitherWithKey</literal>,
581 <literal>minView</literal> and
582 <literal>maxView</literal>.
583 It also has <literal>Monoid</literal>,
584 <literal>Traversable</literal>, <literal>Foldable</literal>
585 and <literal>Read</literal> instances.
590 <literal>Data.Set</literal> now exports
591 <literal>notMember</literal>,
592 <literal>minView</literal> and
593 <literal>maxView</literal>.
594 It also has <literal>Monoid</literal>,
595 <literal>Foldable</literal>
596 and <literal>Read</literal> instances.
600 The old, deprecated (since 6.4) interface consisting of
601 <literal>emptySet</literal>,
602 <literal>mkSet</literal>,
603 <literal>setToList</literal>,
604 <literal>unitSet</literal>,
605 <literal>elementOf</literal>,
606 <literal>isEmptySet</literal>,
607 <literal>cardinality</literal>,
608 <literal>unionManySets</literal>,
609 <literal>minusSet</literal>,
610 <literal>mapSet</literal>,
611 <literal>intersect</literal>,
612 <literal>addToSet</literal> and
613 <literal>delFromSet</literal> has been removed.
618 <literal>Data.Monoid</literal> no longer contains the
619 <literal>Monoid</literal>
620 instances for <literal>Map</literal>,
621 <literal>IntMap</literal>, <literal>Set</literal> and
622 <literal>IntSet</literal>. They have been moved to their own
623 modules, as above. The <literal>(a -> a)</literal> instance
624 has been replaced with a
625 <literal>Monoid b => Monoid (a -> b)</literal> instance.
626 The module also now exports
627 <literal>Dual</literal>,
628 <literal>Endo</literal>,
629 <literal>All</literal>,
630 <literal>Any</literal>,
631 <literal>Sum</literal> and
632 <literal>Product</literal> types, and
633 <literal>Monoid</literal> instances for them.
638 There is a new module <literal>Data.Sequence</literal>
639 for finite sequences. The <literal>Data.Queue</literal>
640 module is now deprecated in favour of this faster, more
641 featureful replacement.
646 <literal>Data.Tree</literal> now has
647 <literal>Data</literal>, <literal>Typeable</literal>,
648 <literal>Traversable</literal> and
649 <literal>Foldable</literal>
651 <literal>Tree</literal> datatype.
656 <literal>Data.Typeable</literal> now uses
657 <option>-fallow-overlapping-instances</option>, so the
658 generic instances can be overriden for your own datatypes.
663 <literal>Debug.Trace</literal> now exports
664 <literal>traceShow</literal>, which is the same as
665 <literal>trace</literal> except its first argument can be
666 any showable thing rather than being required to be a
672 <literal>Foreign.C.Types</literal> now also defines
673 <literal>CIntPtr</literal>,
674 <literal>CUIntPtr</literal>,
675 <literal>CIntMax</literal> and
676 <literal>CUIntMax</literal>.
681 <literal>Foreign.ForeignPtr</literal> now exports
682 <literal>FinalizerEnvPtr</literal>,
683 <literal>newForeignPtrEnv</literal> and
684 <literal>addForeignPtrFinalizerEnv</literal>.
685 Together, these allow the use of finalizers which are passed
686 an additional environment parameter.
691 <literal>Foreign.Marshal.Utils</literal> no longer exports
692 the <literal>withObject</literal> function, deprecated since
693 5.04; use <literal>with</literal> instead.
698 Foreign.Ptr now also defines
699 <literal>IntPtr</literal>,
700 <literal>ptrToIntPtr</literal>,
701 <literal>intPtrToPtr</literal>,
702 <literal>WordPtr</literal>,
703 <literal>ptrToWordPtr</literal> and
704 <literal>wordPtrToPtr</literal>.
709 There are now <literal>Bounded</literal> instances for up to
710 15-tuples (used to be up to 4-tuples).
715 The <literal>Text.Html</literal> and
716 <literal>Text.Html.BlockTable</literal> modules have now
717 been removed, with the new <literal>html</literal> and
718 <literal>xhtml</literal> packages providing replacements.
723 <literal>Text.Read</literal> now exports a function
724 <literal>parens</literal> which parses a value in an
725 arbitrary number of parentheses.
730 The <literal>ForeignPtr</literal> datatype has been altered
731 to make it more efficient. There are also new functions
732 <literal>mallocPlainForeignPtr</literal> and
733 <literal>mallocPlainForeignPtrBytes</literal> which
734 do not allow you to attach a finalizer to the
735 <literal>ForeignPtr</literal>.
740 The <literal>Text.Regex</literal> and
741 <literal>Text.Regex.Posix</literal> modules have been removed.
742 Instead, use the new <literal>regex-compat</literal> package
743 for a drop-in <literal>Text.Regex</literal> replacement, or
744 the new library in the new <literal>regex-posix</literal>
756 Version number 1.1.5 (was 1.1.4).
761 Support for JHC, symmetric to the support for the other
762 implementations, has been added throughout.
767 Support for object splitting and building in-place
768 has been added throughout.
773 Added a <filename>debianTemplate</filename> directory with
774 templates for building Debian packages from Cabal packages.
779 Added <filename>cabal-setup</filename>, a user interface to
780 building and installing Cabal packages.
785 Added <filename>cabal-install</filename>, an automated
786 installer for cabal packages.
791 There is now a <literal>Network.Hackage</literal> hierarchy
792 for code needed by hackage, the package server.
797 There are now modules
798 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
799 for each of <literal>GHC</literal>, <literal>NHC</literal>,
800 <literal>Hugs</literal> and <literal>JHC</literal>.
801 The <literal>Distribution.Simple.Build</literal> and
802 <literal>Distribution.Simple.Install</literal> modules have
803 shrunk correspondingly.
808 <literal>Distribution.GetOpt</literal> is no longer a
814 <literal>Distribution.Simple</literal> exports a function
815 <literal>defaultMainArgs</literal>, which is identical to
816 <literal>defaultMain</literal> except that the arguments are
817 given as a list of strings rather than being retrieved with
818 <literal>getArgs</literal>.
823 <literal>Distribution.Simple.Configure</literal>
825 <literal>LocalBuildInfo</literal>,
827 <literal>configDependency</literal> and
828 <literal>configCompilerAux</literal>.
833 <literal>Distribution.Simple.LocalBuildInfo</literal> now
834 exports <literal>mkHaddockDir</literal>,
835 <literal>distPref</literal>,
836 <literal>srcPref</literal>,
837 <literal>autogenModulesDir</literal> and
838 <literal>mkIncludeDir</literal>.
843 <literal>Distribution.PackageDescription</literal> now
844 exports <literal>haddockName</literal>.
849 <literal>Distribution.Simple.Utils</literal> now exports
850 <literal>copyDirectoryRecursiveVerbose</literal>,
851 <literal>dirOf</literal>,
852 <literal>distPref</literal>,
853 <literal>haddockPref</literal> and
854 <literal>srcPref</literal>.
855 It no longer exports <literal>mkGHCiLibName</literal>.
862 <title>haskell98</title>
866 No change (version 1.0).
873 <title>parsec</title>
877 Version number 2.0 (was 1.0).
889 <title>readline</title>
893 No change (version 1.0).
900 <title>regex-base</title>
909 New library that provides common functions for different
917 <title>regex-compat</title>
926 New package providing a replacement
927 <literal>Text.Regex</literal> module.
934 <title>regex-posix</title>
943 A new package providing POSIX regexes.
954 Version number 2.0 (was 1.0).
959 A new module <literal>Control.Monad.STM</literal>
961 <literal>MonadPlus</literal> instance for
962 <literal>STM</literal> and the function
963 <literal>check</literal> (both used to be in
964 <literal>Control.Concurrent.STM</literal>).
966 <literal>STM</literal>,
967 <literal>atomically</literal>,
968 <literal>retry</literal>,
969 <literal>orElse</literal> and
970 <literal>catchSTM</literal>.
976 <literal>Control.Concurrent.STM.TArray</literal> defines
977 <literal>TArray</literal>, a transactional array, and makes
978 it an instance of <literal>MArray</literal>.
983 <literal>Control.Concurrent.STM.TChan</literal> now provides
984 a function <literal>newTChanIO</literal>, which allows
985 <literal>TChan</literal>s to be created in the IO monad.
986 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
987 provides <literal>newTMVarIO</literal> and
988 <literal>newEmptyTMVarIO</literal>, and
989 <literal>Control.Concurrent.STM.TVar</literal> exports
990 <literal>newTVarIO</literal>.
995 <literal>Control.Concurrent.STM.TVar</literal> exports
996 <literal>registerDelay</literal>.
1001 The <literal>Control.Concurrent.STM</literal> module has been
1002 updated to re-export all the new modules.
1009 <title>template-haskell</title>
1013 Version number 2.0 (was 1.0).
1018 A <literal>Show</literal> instance is now derived for
1019 <literal>Info</literal>, <literal>Fixity</literal> and
1020 <literal>FixityDirection</literal> in
1021 <literal>Language.Haskell.TH.Syntax</literal>.
1026 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1027 a type <literal>PkgName</literal> and functions
1028 <literal>mkPkgName</literal> and
1029 <literal>pkgString</literal>
1030 for dealing with package names.
1035 The <literal>patGE</literal> function in
1036 <literal>Language.Haskell.TH.Lib</literal> now takes the
1037 final expression separately to the list of statements
1038 rather than splitting it off itself.
1049 No change (version 1.0).
1056 <title>Win32</title>
1060 Version number 2.0 (was 1.0).
1065 Now maintained by Esa Ilari Vuokko.
1070 There is a new module
1071 <literal>System.Win32.Console</literal>
1072 providing an interface to the Windows Console API.
1077 There is a new module
1078 <literal>System.Win32.DebugApi</literal>
1079 providing an interface to the Windows DebugApi.
1084 There is a new module
1085 <literal>System.Win32.FileMapping</literal>
1086 for working with memory-mapped files.
1091 There is a new module
1092 <literal>System.Win32.SimpleMAPI</literal>
1093 for using the Windows mail API.
1098 There is a new module
1099 <literal>System.Win32.Time</literal>
1100 for using the Windows time API.
1105 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1106 <literal>Graphics.Win32.Misc</literal> to
1107 <literal>System.Win32.Types</literal>.
1112 <literal>System.Win32.File</literal> has a new
1113 function <literal>getFileInformationByHandle</literal>
1114 and associated data types.
1119 <literal>System.Win32.Info</literal> has a new
1120 function <literal>getSystemInfo</literal> and associated
1126 <literal>System.Win32.Process</literal> now has many more
1132 <literal>System.Win32.Types</literal> has new types
1133 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1134 and <literal>SIZE_T</literal>. It also has new helper
1135 functions <literal>ddwordToDwords</literal> and
1136 <literal>dwordsToDdword</literal> to split and combine
1137 ddwords into high and low components.
1142 <literal>System.Win32</literal> re-exports
1143 <literal>System.Win32.FileMapping</literal>,
1144 <literal>System.Win32.Time</literal>
1145 and <literal>System.Win32.Console</literal>.
1153 <title>Extra Libraries</title>
1159 Version number 2.0 (was 1.0).
1164 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1165 Its <literal>Phase</literal> and <literal>Duration</literal>
1166 exports are now exported by
1167 <literal>Sound.ALUT.Loaders</literal> and its
1168 <literal>helloWorld</literal>,
1169 <literal>sine</literal>,
1170 <literal>square</literal>,
1171 <literal>sawtooth</literal>,
1172 <literal>impulse</literal> and
1173 <literal>whiteNoise</literal>
1174 exports are now constructors of the
1175 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1183 <title>arrows</title>
1187 Version number 0.2 (was 0.1).
1192 <literal>Control.Sequence</literal> has been removed in
1193 favour of the new <literal>Control.Applicative</literal>
1194 module in <literal>base</literal>.
1210 <literal>cgi</literal> is a new package, developing on
1211 what used to be <literal>Network.CGI</literal> in the
1212 <literal>network</literal> package.
1223 Version number 5.3 (was 5.2).
1228 <literal>Data.Graph.Inductive.Graph</literal> no longer
1229 exports <literal>UContext</literal>.
1234 <literal>Data.Graph.Inductive.Graph</literal> now exports
1235 <literal>delLEdge</literal>.
1246 Version number remains 2.0.
1251 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1252 <literal>DisplayMode</literal> has a new constructor
1253 <literal>WithAuxBuffers</literal> and
1254 <literal>DisplayCapability</literal> has a new constructor
1255 <literal>DisplayAux</literal>. These represent freeglut-only
1261 There are new examples in
1262 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1263 <filename>RedBook/AAIndex.hs</filename>,
1264 <filename>RedBook/AARGB.hs</filename>,
1265 <filename>RedBook/AccAnti.hs</filename>,
1266 <filename>RedBook/AccPersp.hs</filename>,
1267 <filename>RedBook/Alpha3D.hs</filename>,
1268 <filename>RedBook/DOF.hs</filename>,
1269 <filename>RedBook/FogIndex.hs</filename>,
1270 <filename>RedBook/Multisamp.hs</filename>,
1271 <filename>RedBook/PointP.hs</filename>,
1272 <filename>RedBook/PolyOff.hs</filename>,
1273 <filename>RedBook/Stencil.hs</filename>,
1274 <filename>RedBook/Stroke.hs</filename> and
1275 <filename>RedBook/Torus.hs</filename>,
1277 <filename>RedBook/Font.hs</filename> and
1278 <filename>RedBook/Histogram.hs</filename> have been
1286 <title>haskell-src</title>
1290 No change (version 1.0).
1301 No change (version 3.1).
1317 <literal>html</literal> is a new package, developing on
1318 what used to be <literal>Text.Html</literal> and
1319 <literal>Text.Html.BlockTable</literal> in the
1320 <literal>base</literal> package.
1325 <literal>Text.Html.BlockTable</literal> exports a new
1326 function <literal>empty</literal>.
1333 <title>HUnit</title>
1337 No change (version 1.1).
1348 No change (version 1.0).
1355 <title>network</title>
1359 Version number 2.0 (was 1.0).
1364 <literal>Network.CGI</literal> has been removed; use the
1365 <literal>cgi</literal> package instead.
1370 <literal>Network.BSD</literal> no longer exports
1371 <literal>symlink</literal> or <literal>readlink</literal>;
1373 <literal>System.Posix.Files.createSymbolicLink</literal> and
1374 <literal>System.Posix.Files.readSymbolicLink</literal>
1380 <literal>Network.BSD</literal> now exports
1381 <literal>defaultProtocol</literal>.
1386 <literal>Network.Socket.SocketStatus</literal> now has a
1387 constructor <literal>ConvertedToHandle</literal> for sockets
1388 that have been converted to handles.
1393 <literal>Network.Socket.Family</literal> now has the
1394 following additional constructors:
1395 <literal>AF_NETROM</literal>,
1396 <literal>AF_BRIDGE</literal>,
1397 <literal>AF_ATMPVC</literal>,
1398 <literal>AF_ROSE</literal>,
1399 <literal>AF_NETBEUI</literal>,
1400 <literal>AF_SECURITY</literal>,
1401 <literal>AF_PACKET</literal>,
1402 <literal>AF_ASH</literal>,
1403 <literal>AF_ECONET</literal>,
1404 <literal>AF_ATMSVC</literal>,
1405 <literal>AF_IRDA</literal>,
1406 <literal>AF_PPPOX</literal>,
1407 <literal>AF_WANPIPE</literal> and
1408 <literal>AF_BLUETOOTH</literal>.
1413 In <literal>Network.URI</literal>,
1414 <literal>parseabsoluteURI</literal> has been deprecated with
1415 a new function <literal>parseAbsoluteURI</literal> taking
1423 <title>ObjectIO</title>
1427 No change (version 1.0).
1434 <title>OpenAL</title>
1438 Version number 1.3 (was 1.2).
1450 <title>OpenGL</title>
1454 Version number 2.1 (was 2.0).
1466 <title>QuickCheck</title>
1470 No change (version 1.0).
1486 <literal>time</literal> is a new package, for dealing with
1487 dates, times and time intervals.
1498 Version number 1.2 (was 1.1).
1503 In <literal>Graphics.X11.Xlib.Types</literal>,
1504 <literal>XGCValues</literal> has been renamed
1505 <literal>GCValues</literal> and
1506 <literal>XSetWindowAttributes</literal> has been renamed
1507 <literal>SetWindowAttributes</literal>.
1512 In <literal>Graphics.X11.Xlib.Misc</literal>,
1513 <literal>allocaXSetWindowAttributes</literal> has been
1514 renamed <literal>allocaSetWindowAttributes</literal>.
1519 The <literal>FontStruct</literal> type has moved from
1520 <literal>Graphics.X11.Xlib.Types</literal> to
1521 <literal>Graphics.X11.Xlib.Font</literal>.
1527 <literal>Point</literal>,
1528 <literal>Rectangle</literal>,
1529 <literal>Arc</literal>,
1530 <literal>Segment</literal> and
1531 <literal>Color</literal> types in
1532 <literal>Graphics.X11.Xlib.Types</literal>
1533 are now proper datatypes rather than synonyms for tuples.
1534 They all have a <literal>Storable</literal> instance.
1539 The <literal>Byte</literal> and <literal>Short</literal>
1540 types from <literal>Graphics.X11.Xlib.Types</literal> have
1542 The following type synonyms, which had already been marked
1543 "Backwards compatibility", have also been removed:
1544 <literal>ListPoint</literal>,
1545 <literal>ListRectangle</literal>,
1546 <literal>ListArc</literal>,
1547 <literal>ListSegment</literal> and
1548 <literal>ListColor</literal>.
1553 <literal>Eq</literal>,
1554 <literal>Ord</literal>,
1555 <literal>Show</literal>,
1556 <literal>Typeable</literal> and
1557 <literal>Data</literal> are now derived for:
1558 <literal>XEvent</literal>,
1559 <literal>FdSet</literal> and
1560 <literal>TimeZone</literal> in
1561 <literal>Graphics.X11.Xlib.Event</literal>,
1562 <literal>FontStruct</literal> in
1563 <literal>Graphics.X11.Xlib.Font</literal>,
1564 <literal>XErrorEvent</literal>,
1565 <literal>XComposeStatus</literal> and
1566 <literal>XTextProperty</literal> in
1567 <literal>Graphics.X11.Xlib.Misc</literal>,
1568 <literal>Region</literal> in
1569 <literal>Graphics.X11.Xlib.Region</literal>,
1570 <literal>Display</literal>,
1571 <literal>Screen</literal>,
1572 <literal>Visual</literal>,
1573 <literal>GC</literal>,
1574 <literal>GCValues</literal>,
1575 <literal>SetWindowAttributes</literal>,
1576 <literal>Point</literal>,
1577 <literal>Rectangle</literal>,
1578 <literal>Arc</literal>,
1579 <literal>Segment</literal> and
1580 <literal>Color</literal> in
1581 <literal>Graphics.X11.Xlib.Types</literal>.
1588 <title>xhtml</title>
1597 <literal>xhtml</literal> is a new package, developing on
1598 what used to be <literal>Text.Html</literal> and
1599 <literal>Text.Html.BlockTable</literal> in the
1600 <literal>base</literal> package.
1608 <title>Internal changes</title>
1612 GHC development now has its own integrated
1613 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1619 GHC has now moved to darcs. See
1621 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1622 wiki</ulink> for more details. The sources have moved around a
1623 bit within the tree as a result, most notably the GHC sources
1624 are no longer kept within a <filename>ghc/</filename>
1630 The native code generator is now capable of compiling loops,
1631 which gets us a big step closer to being able to compile
1632 entirely without gcc on well-supported arches.