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 It is now possible, with the <literal>-I</literal> RTS flag,
291 to control the amount of idle time that happens before a major
297 The old syntax for FFI declarations (deprecated since 5.04)
298 is no longer accepted.
303 The <option>-split-objs</option> flag can now be used with
304 <option>--make</option>, and hence can be used by cabal.
311 <title>GHCi changes</title>
316 GHCi now allows tab completion of in-scope names and modules
317 on platforms that use readline (i.e. not Windows).
322 GHCi now has a <literal>:main</literal> command that allows
323 you to call the <literal>main</literal> function with
324 command-line arguments.
325 See <xref linkend="ghci-commands" /> for more information.
330 GHCi now has <literal>:ctags</literal> and
331 <literal>:etags</literal> commands to generate tags files for
332 vi-style and emacs-style editors respectively.
333 See <xref linkend="ghci-commands" /> for more information.
340 <title>Libraries</title>
342 Libraries are now divided into core libraries (those that are
343 necessary to build GHC) and extra libraries. Decoupling the extra
344 libraries means that they can release independently of GHC
345 releases, and makes development builds of GHC quicker as they no
346 longer need to build unnecessary libraries.
350 The hslibs libraries have finally been removed.
355 <title>Core Libraries</title>
361 Version number 2.0 (was 1.0).
366 We now have <literal>Read</literal> and
367 <literal>Show</literal> instances for up to 15-tuples (used
368 to be up to 5-tuples).
373 New module <literal>Control.Applicative</literal> that
374 describes a structure intermediate between a functor and
375 a monad: it provides pure expressions and sequencing, but
381 <literal>Control.Exception</literal> now exports
382 <literal>bracketOnError</literal>, which behaves like
383 <literal>bracket</literal> but only runs the final
384 action if the main action raised an error.
389 There is a new module
390 <literal>Control.Monad.Instances</literal> which
391 provides <literal>Monad</literal> and
392 <literal>Functor</literal> instances for
393 <literal>((->) r)</literal> (were in
394 <literal>mtl</literal>'s
395 <literal>Control.Monad.Reader</literal>),
396 a <literal>Functor</literal> instance for
397 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
398 <literal>Control.Monad.Error</literal>) and a
399 <literal>Functor</literal> instance for
400 <literal>((,) a)</literal> (new).
405 The <literal>MonadFix</literal> instance for
406 <literal>((->) r)</literal> is now in
407 <literal>Control.Monad.Fix</literal> (was in
408 <literal>mtl</literal>'s
409 <literal>Control.Monad.Reader</literal>).
414 <literal>Control.Monad.ST</literal> now exports
415 <literal>unsafeSTToIO</literal>.
420 The <literal>HasBounds</literal> class has been removed from
421 <literal>Data.Array.Base</literal>, and its
422 <literal>bounds</literal> method is now in the
423 <literal>IArray</literal> class. The
424 <literal>MArray</literal> class
425 has also gained a method <literal>getBounds</literal>.
430 <literal>Data.Array.Base</literal> now provides an
431 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
437 <literal>Data.Array.Storable</literal> now exports a
438 function <literal>unsafeForeignPtrToStorableArray</literal>.
443 The new <literal>Data.ByteString</literal> hierarchy
444 provides time and space-efficient byte vectors.
445 The old <literal>Data.PackedString</literal> module is now
446 deprecated as a result, although there is not yet a
447 replacement if you need full unicode support.
452 <literal>GHC.Exts</literal> now provides a function
453 <literal>inline</literal> which, provided the RHS is visible
454 to the compiler, forcibly inlines its argument.
455 Otherwise, it acts like <literal>id</literal>.
460 <literal>GHC.Exts</literal> now provides a function
461 <literal>lazy</literal> which forces GHC to think that its
462 argument is lazy in its first argument.
467 <literal>Data.FiniteMap</literal> has been removed
468 (deprecated since 6.4). Use <literal>Data.Map</literal>
474 <literal>Data.Char</literal> now exports
475 <literal>isLetter</literal>,
476 <literal>isMark</literal>,
477 <literal>isNumber</literal>,
478 <literal>isPunctuation</literal>,
479 <literal>isSymbol</literal>,
480 <literal>isSeparator</literal>,
481 <literal>isAsciiUpper</literal>,
482 <literal>isAsciiLower</literal> and
483 <literal>toTitle</literal>.
484 It also exports a function
485 <literal>generalCategory</literal> that tells you the
486 category of a character in terms of a datatype
487 <literal>GeneralCategory</literal>.
492 <literal>Data.Dynamic</literal> now exports a function
493 <literal>dynTypeRep</literal>.
498 There is a new module <literal>Data.Eq</literal> which
499 just exports the <literal>Eq</literal> class.
500 Likewise, a new module <literal>Data.Ord</literal>
501 exports the <literal>Ord</literal> class, as well as the
502 handy <literal>comparing</literal> function.
507 There is a new module <literal>Data.Fixed</literal>
508 providing fixed-precision arithmetic.
513 There is a new module <literal>Data.Foldable</literal>
514 providing a class for foldable datatypes. It gives instances
515 for <literal>Maybe</literal>, <literal>[]</literal> and
516 <literal>Array i</literal>.
521 There is a new module <literal>Data.Traversable</literal>
522 providing a class for data structures that can be traversed
523 from left to right. It gives instances
524 for <literal>Maybe</literal>, <literal>[]</literal> and
525 <literal>Array i</literal>.
530 <literal>Data.FunctorM</literal> has been deprecated;
531 use <literal>Data.Foldable</literal> and
532 <literal>Data.Traversable</literal> instead.
537 The <literal>toConstr</literal> definitions for tuples in
538 <literal>Data.Generics.Instances</literal> now actually
539 evaluate their arguments to tuples before returning
545 <literal>Data.IntMap</literal> now exports
546 <literal>notMember</literal>,
547 <literal>alter</literal>,
548 <literal>mapMaybe</literal>,
549 <literal>mapMaybeWithKey</literal>,
550 <literal>mapEither</literal> and
551 <literal>mapEitherWithKey</literal>.
552 It also has <literal>Monoid</literal>,
553 <literal>Foldable</literal> and <literal>Read</literal>
559 <literal>Data.IntSet</literal> now exports
560 <literal>notMember</literal>. It also has
561 <literal>Monoid</literal> and <literal>Read</literal>
567 <literal>Data.Map</literal> now exports
568 <literal>notMember</literal>,
569 <literal>alter</literal>,
570 <literal>mapMaybe</literal>,
571 <literal>mapMaybeWithKey</literal>,
572 <literal>mapEither</literal>,
573 <literal>mapEitherWithKey</literal>,
574 <literal>minView</literal> and
575 <literal>maxView</literal>.
576 It also has <literal>Monoid</literal>,
577 <literal>Traversable</literal>, <literal>Foldable</literal>
578 and <literal>Read</literal> instances.
583 <literal>Data.Set</literal> now exports
584 <literal>notMember</literal>,
585 <literal>minView</literal> and
586 <literal>maxView</literal>.
587 It also has <literal>Monoid</literal>,
588 <literal>Foldable</literal>
589 and <literal>Read</literal> instances.
593 The old, deprecated (since 6.4) interface consisting of
594 <literal>emptySet</literal>,
595 <literal>mkSet</literal>,
596 <literal>setToList</literal>,
597 <literal>unitSet</literal>,
598 <literal>elementOf</literal>,
599 <literal>isEmptySet</literal>,
600 <literal>cardinality</literal>,
601 <literal>unionManySets</literal>,
602 <literal>minusSet</literal>,
603 <literal>mapSet</literal>,
604 <literal>intersect</literal>,
605 <literal>addToSet</literal> and
606 <literal>delFromSet</literal> has been removed.
611 <literal>Data.Monoid</literal> no longer contains the
612 <literal>Monoid</literal>
613 instances for <literal>Map</literal>,
614 <literal>IntMap</literal>, <literal>Set</literal> and
615 <literal>IntSet</literal>. They have been moved to their own
616 modules, as above. The <literal>(a -> a)</literal> instance
617 has been replaced with a
618 <literal>Monoid b => Monoid (a -> b)</literal> instance.
619 The module also now exports
620 <literal>Dual</literal>,
621 <literal>Endo</literal>,
622 <literal>All</literal>,
623 <literal>Any</literal>,
624 <literal>Sum</literal> and
625 <literal>Product</literal> types, and
626 <literal>Monoid</literal> instances for them.
631 There is a new module <literal>Data.Sequence</literal>
632 for finite sequences. The <literal>Data.Queue</literal>
633 module is now deprecated in favour of this faster, more
634 featureful replacement.
639 <literal>Data.Tree</literal> now has
640 <literal>Data</literal>, <literal>Typeable</literal>,
641 <literal>Traversable</literal> and
642 <literal>Foldable</literal>
644 <literal>Tree</literal> datatype.
649 <literal>Data.Typeable</literal> now uses
650 <option>-fallow-overlapping-instances</option>, so the
651 generic instances can be overriden for your own datatypes.
656 <literal>Debug.Trace</literal> now exports
657 <literal>traceShow</literal>, which is the same as
658 <literal>trace</literal> except its first argument can be
659 any showable thing rather than being required to be a
665 <literal>Foreign.C.Types</literal> now also defines
666 <literal>CIntPtr</literal>,
667 <literal>CUIntPtr</literal>,
668 <literal>CIntMax</literal> and
669 <literal>CUIntMax</literal>.
674 <literal>Foreign.ForeignPtr</literal> now exports
675 <literal>FinalizerEnvPtr</literal>,
676 <literal>newForeignPtrEnv</literal> and
677 <literal>addForeignPtrFinalizerEnv</literal>.
678 Together, these allow the use of finalizers which are passed
679 an additional environment parameter.
684 <literal>Foreign.Marshal.Utils</literal> no longer exports
685 the <literal>withObject</literal> function, deprecated since
686 5.04; use <literal>with</literal> instead.
691 Foreign.Ptr now also defines
692 <literal>IntPtr</literal>,
693 <literal>ptrToIntPtr</literal>,
694 <literal>intPtrToPtr</literal>,
695 <literal>WordPtr</literal>,
696 <literal>ptrToWordPtr</literal> and
697 <literal>wordPtrToPtr</literal>.
702 There are now <literal>Bounded</literal> instances for up to
703 15-tuples (used to be up to 4-tuples).
708 The <literal>Text.Html</literal> and
709 <literal>Text.Html.BlockTable</literal> modules have now
710 been removed, with the new <literal>html</literal> and
711 <literal>xhtml</literal> packages providing replacements.
716 <literal>Text.Read</literal> now exports a function
717 <literal>parens</literal> which parses a value in an
718 arbitrary number of parentheses.
723 The <literal>ForeignPtr</literal> datatype has been altered
724 to make it more efficient. There are also new functions
725 <literal>mallocPlainForeignPtr</literal> and
726 <literal>mallocPlainForeignPtrBytes</literal> which
727 do not allow you to attach a finalizer to the
728 <literal>ForeignPtr</literal>.
733 The <literal>Text.Regex</literal> and
734 <literal>Text.Regex.Posix</literal> modules have been removed.
735 Instead, use the new <literal>regex-compat</literal> package
736 for a drop-in <literal>Text.Regex</literal> replacement, or
737 the new library in the new <literal>regex-posix</literal>
749 Version number 1.1.5 (was 1.1.4).
754 Support for JHC, symmetric to the support for the other
755 implementations, has been added throughout.
760 Support for object splitting and building in-place
761 has been added throughout.
766 Added a <filename>debianTemplate</filename> directory with
767 templates for building Debian packages from Cabal packages.
772 Added <filename>cabal-setup</filename>, a user interface to
773 building and installing Cabal packages.
778 Added <filename>cabal-install</filename>, an automated
779 installer for cabal packages.
784 There is now a <literal>Network.Hackage</literal> hierarchy
785 for code needed by hackage, the package server.
790 There are now modules
791 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
792 for each of <literal>GHC</literal>, <literal>NHC</literal>,
793 <literal>Hugs</literal> and <literal>JHC</literal>.
794 The <literal>Distribution.Simple.Build</literal> and
795 <literal>Distribution.Simple.Install</literal> modules have
796 shrunk correspondingly.
801 <literal>Distribution.GetOpt</literal> is no longer a
807 <literal>Distribution.Simple</literal> exports a function
808 <literal>defaultMainArgs</literal>, which is identical to
809 <literal>defaultMain</literal> except that the arguments are
810 given as a list of strings rather than being retrieved with
811 <literal>getArgs</literal>.
816 <literal>Distribution.Simple.Configure</literal>
818 <literal>LocalBuildInfo</literal>,
820 <literal>configDependency</literal> and
821 <literal>configCompilerAux</literal>.
826 <literal>Distribution.Simple.LocalBuildInfo</literal> now
827 exports <literal>mkHaddockDir</literal>,
828 <literal>distPref</literal>,
829 <literal>srcPref</literal>,
830 <literal>autogenModulesDir</literal> and
831 <literal>mkIncludeDir</literal>.
836 <literal>Distribution.PackageDescription</literal> now
837 exports <literal>haddockName</literal>.
842 <literal>Distribution.Simple.Utils</literal> now exports
843 <literal>copyDirectoryRecursiveVerbose</literal>,
844 <literal>dirOf</literal>,
845 <literal>distPref</literal>,
846 <literal>haddockPref</literal> and
847 <literal>srcPref</literal>.
848 It no longer exports <literal>mkGHCiLibName</literal>.
855 <title>haskell98</title>
859 No change (version 1.0).
866 <title>parsec</title>
870 Version number 2.0 (was 1.0).
882 <title>readline</title>
886 No change (version 1.0).
893 <title>regex-base</title>
902 New library that provides common functions for different
910 <title>regex-compat</title>
919 New package providing a replacement
920 <literal>Text.Regex</literal> module.
927 <title>regex-posix</title>
936 A new package providing POSIX regexes.
947 Version number 2.0 (was 1.0).
952 A new module <literal>Control.Monad.STM</literal>
954 <literal>MonadPlus</literal> instance for
955 <literal>STM</literal> and the function
956 <literal>check</literal> (both used to be in
957 <literal>Control.Concurrent.STM</literal>).
959 <literal>STM</literal>,
960 <literal>atomically</literal>,
961 <literal>retry</literal>,
962 <literal>orElse</literal> and
963 <literal>catchSTM</literal>.
969 <literal>Control.Concurrent.STM.TArray</literal> defines
970 <literal>TArray</literal>, a transactional array, and makes
971 it an instance of <literal>MArray</literal>.
976 <literal>Control.Concurrent.STM.TChan</literal> now provides
977 a function <literal>newTChanIO</literal>, which allows
978 <literal>TChan</literal>s to be created in the IO monad.
979 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
980 provides <literal>newTMVarIO</literal> and
981 <literal>newEmptyTMVarIO</literal>, and
982 <literal>Control.Concurrent.STM.TVar</literal> exports
983 <literal>newTVarIO</literal>.
988 <literal>Control.Concurrent.STM.TVar</literal> exports
989 <literal>registerDelay</literal>.
994 The <literal>Control.Concurrent.STM</literal> module has been
995 updated to re-export all the new modules.
1002 <title>template-haskell</title>
1006 Version number 2.0 (was 1.0).
1011 A <literal>Show</literal> instance is now derived for
1012 <literal>Info</literal>, <literal>Fixity</literal> and
1013 <literal>FixityDirection</literal> in
1014 <literal>Language.Haskell.TH.Syntax</literal>.
1019 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1020 a type <literal>PkgName</literal> and functions
1021 <literal>mkPkgName</literal> and
1022 <literal>pkgString</literal>
1023 for dealing with package names.
1028 The <literal>patGE</literal> function in
1029 <literal>Language.Haskell.TH.Lib</literal> now takes the
1030 final expression separately to the list of statements
1031 rather than splitting it off itself.
1042 No change (version 1.0).
1049 <title>Win32</title>
1053 Version number 2.0 (was 1.0).
1058 Now maintained by Esa Ilari Vuokko.
1063 There is a new module
1064 <literal>System.Win32.Console</literal>
1065 providing an interface to the Windows Console API.
1070 There is a new module
1071 <literal>System.Win32.DebugApi</literal>
1072 providing an interface to the Windows DebugApi.
1077 There is a new module
1078 <literal>System.Win32.FileMapping</literal>
1079 for working with memory-mapped files.
1084 There is a new module
1085 <literal>System.Win32.SimpleMAPI</literal>
1086 for using the Windows mail API.
1091 There is a new module
1092 <literal>System.Win32.Time</literal>
1093 for using the Windows time API.
1098 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1099 <literal>Graphics.Win32.Misc</literal> to
1100 <literal>System.Win32.Types</literal>.
1105 <literal>System.Win32.File</literal> has a new
1106 function <literal>getFileInformationByHandle</literal>
1107 and associated data types.
1112 <literal>System.Win32.Info</literal> has a new
1113 function <literal>getSystemInfo</literal> and associated
1119 <literal>System.Win32.Process</literal> now has many more
1125 <literal>System.Win32.Types</literal> has new types
1126 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1127 and <literal>SIZE_T</literal>. It also has new helper
1128 functions <literal>ddwordToDwords</literal> and
1129 <literal>dwordsToDdword</literal> to split and combine
1130 ddwords into high and low components.
1135 <literal>System.Win32</literal> re-exports
1136 <literal>System.Win32.FileMapping</literal>,
1137 <literal>System.Win32.Time</literal>
1138 and <literal>System.Win32.Console</literal>.
1146 <title>Extra Libraries</title>
1152 Version number 2.0 (was 1.0).
1157 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1158 Its <literal>Phase</literal> and <literal>Duration</literal>
1159 exports are now exported by
1160 <literal>Sound.ALUT.Loaders</literal> and its
1161 <literal>helloWorld</literal>,
1162 <literal>sine</literal>,
1163 <literal>square</literal>,
1164 <literal>sawtooth</literal>,
1165 <literal>impulse</literal> and
1166 <literal>whiteNoise</literal>
1167 exports are now constructors of the
1168 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1176 <title>arrows</title>
1180 Version number 0.2 (was 0.1).
1185 <literal>Control.Sequence</literal> has been removed in
1186 favour of the new <literal>Control.Applicative</literal>
1187 module in <literal>base</literal>.
1203 <literal>cgi</literal> is a new package, developing on
1204 what used to be <literal>Network.CGI</literal> in the
1205 <literal>network</literal> package.
1216 Version number 5.3 (was 5.2).
1221 <literal>Data.Graph.Inductive.Graph</literal> no longer
1222 exports <literal>UContext</literal>.
1227 <literal>Data.Graph.Inductive.Graph</literal> now exports
1228 <literal>delLEdge</literal>.
1239 Version number remains 2.0.
1244 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1245 <literal>DisplayMode</literal> has a new constructor
1246 <literal>WithAuxBuffers</literal> and
1247 <literal>DisplayCapability</literal> has a new constructor
1248 <literal>DisplayAux</literal>. These represent freeglut-only
1254 There are new examples in
1255 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1256 <filename>RedBook/AAIndex.hs</filename>,
1257 <filename>RedBook/AARGB.hs</filename>,
1258 <filename>RedBook/AccAnti.hs</filename>,
1259 <filename>RedBook/AccPersp.hs</filename>,
1260 <filename>RedBook/Alpha3D.hs</filename>,
1261 <filename>RedBook/DOF.hs</filename>,
1262 <filename>RedBook/FogIndex.hs</filename>,
1263 <filename>RedBook/Multisamp.hs</filename>,
1264 <filename>RedBook/PointP.hs</filename>,
1265 <filename>RedBook/PolyOff.hs</filename>,
1266 <filename>RedBook/Stencil.hs</filename>,
1267 <filename>RedBook/Stroke.hs</filename> and
1268 <filename>RedBook/Torus.hs</filename>,
1270 <filename>RedBook/Font.hs</filename> and
1271 <filename>RedBook/Histogram.hs</filename> have been
1279 <title>haskell-src</title>
1283 No change (version 1.0).
1294 No change (version 3.1).
1310 <literal>html</literal> is a new package, developing on
1311 what used to be <literal>Text.Html</literal> and
1312 <literal>Text.Html.BlockTable</literal> in the
1313 <literal>base</literal> package.
1318 <literal>Text.Html.BlockTable</literal> exports a new
1319 function <literal>empty</literal>.
1326 <title>HUnit</title>
1330 No change (version 1.1).
1341 No change (version 1.0).
1348 <title>network</title>
1352 Version number 2.0 (was 1.0).
1357 <literal>Network.CGI</literal> has been removed; use the
1358 <literal>cgi</literal> package instead.
1363 <literal>Network.BSD</literal> no longer exports
1364 <literal>symlink</literal> or <literal>readlink</literal>;
1366 <literal>System.Posix.Files.createSymbolicLink</literal> and
1367 <literal>System.Posix.Files.readSymbolicLink</literal>
1373 <literal>Network.BSD</literal> now exports
1374 <literal>defaultProtocol</literal>.
1379 <literal>Network.Socket.SocketStatus</literal> now has a
1380 constructor <literal>ConvertedToHandle</literal> for sockets
1381 that have been converted to handles.
1386 <literal>Network.Socket.Family</literal> now has the
1387 following additional constructors:
1388 <literal>AF_NETROM</literal>,
1389 <literal>AF_BRIDGE</literal>,
1390 <literal>AF_ATMPVC</literal>,
1391 <literal>AF_ROSE</literal>,
1392 <literal>AF_NETBEUI</literal>,
1393 <literal>AF_SECURITY</literal>,
1394 <literal>AF_PACKET</literal>,
1395 <literal>AF_ASH</literal>,
1396 <literal>AF_ECONET</literal>,
1397 <literal>AF_ATMSVC</literal>,
1398 <literal>AF_IRDA</literal>,
1399 <literal>AF_PPPOX</literal>,
1400 <literal>AF_WANPIPE</literal> and
1401 <literal>AF_BLUETOOTH</literal>.
1406 In <literal>Network.URI</literal>,
1407 <literal>parseabsoluteURI</literal> has been deprecated with
1408 a new function <literal>parseAbsoluteURI</literal> taking
1416 <title>ObjectIO</title>
1420 No change (version 1.0).
1427 <title>OpenAL</title>
1431 Version number 1.3 (was 1.2).
1443 <title>OpenGL</title>
1447 Version number 2.1 (was 2.0).
1459 <title>QuickCheck</title>
1463 No change (version 1.0).
1479 <literal>time</literal> is a new package, for dealing with
1480 dates, times and time intervals.
1491 Version number 1.2 (was 1.1).
1496 In <literal>Graphics.X11.Xlib.Types</literal>,
1497 <literal>XGCValues</literal> has been renamed
1498 <literal>GCValues</literal> and
1499 <literal>XSetWindowAttributes</literal> has been renamed
1500 <literal>SetWindowAttributes</literal>.
1505 In <literal>Graphics.X11.Xlib.Misc</literal>,
1506 <literal>allocaXSetWindowAttributes</literal> has been
1507 renamed <literal>allocaSetWindowAttributes</literal>.
1512 The <literal>FontStruct</literal> type has moved from
1513 <literal>Graphics.X11.Xlib.Types</literal> to
1514 <literal>Graphics.X11.Xlib.Font</literal>.
1520 <literal>Point</literal>,
1521 <literal>Rectangle</literal>,
1522 <literal>Arc</literal>,
1523 <literal>Segment</literal> and
1524 <literal>Color</literal> types in
1525 <literal>Graphics.X11.Xlib.Types</literal>
1526 are now proper datatypes rather than synonyms for tuples.
1527 They all have a <literal>Storable</literal> instance.
1532 The <literal>Byte</literal> and <literal>Short</literal>
1533 types from <literal>Graphics.X11.Xlib.Types</literal> have
1535 The following type synonyms, which had already been marked
1536 "Backwards compatibility", have also been removed:
1537 <literal>ListPoint</literal>,
1538 <literal>ListRectangle</literal>,
1539 <literal>ListArc</literal>,
1540 <literal>ListSegment</literal> and
1541 <literal>ListColor</literal>.
1546 <literal>Eq</literal>,
1547 <literal>Ord</literal>,
1548 <literal>Show</literal>,
1549 <literal>Typeable</literal> and
1550 <literal>Data</literal> are now derived for:
1551 <literal>XEvent</literal>,
1552 <literal>FdSet</literal> and
1553 <literal>TimeZone</literal> in
1554 <literal>Graphics.X11.Xlib.Event</literal>,
1555 <literal>FontStruct</literal> in
1556 <literal>Graphics.X11.Xlib.Font</literal>,
1557 <literal>XErrorEvent</literal>,
1558 <literal>XComposeStatus</literal> and
1559 <literal>XTextProperty</literal> in
1560 <literal>Graphics.X11.Xlib.Misc</literal>,
1561 <literal>Region</literal> in
1562 <literal>Graphics.X11.Xlib.Region</literal>,
1563 <literal>Display</literal>,
1564 <literal>Screen</literal>,
1565 <literal>Visual</literal>,
1566 <literal>GC</literal>,
1567 <literal>GCValues</literal>,
1568 <literal>SetWindowAttributes</literal>,
1569 <literal>Point</literal>,
1570 <literal>Rectangle</literal>,
1571 <literal>Arc</literal>,
1572 <literal>Segment</literal> and
1573 <literal>Color</literal> in
1574 <literal>Graphics.X11.Xlib.Types</literal>.
1581 <title>xhtml</title>
1590 <literal>xhtml</literal> is a new package, developing on
1591 what used to be <literal>Text.Html</literal> and
1592 <literal>Text.Html.BlockTable</literal> in the
1593 <literal>base</literal> package.
1601 <title>Internal changes</title>
1605 GHC development now has its own integrated
1606 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1612 GHC has now moved to darcs. See
1614 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1615 wiki</ulink> for more details. The sources have moved around a
1616 bit within the tree as a result, most notably the GHC sources
1617 are no longer kept within a <filename>ghc/</filename>
1623 The native code generator is now capable of compiling loops,
1624 which gets us a big step closer to being able to compile
1625 entirely without gcc on well-supported arches.