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 GHC now supports postfix operators, as a simple generalisation of
331 left sections (<xref linkend="postfix-operators"/>).
336 Parallel arrays, as enabled by <literal>-fparr</literal>, no
337 longer work. They'll be coming back shortly, in full glory.
344 <title>GHCi changes</title>
349 GHCi now allows tab completion of in-scope names and modules
350 on platforms that use readline (i.e. not Windows).
355 GHCi now has a <literal>:main</literal> command that allows
356 you to call the <literal>main</literal> function with
357 command-line arguments.
358 See <xref linkend="ghci-commands" /> for more information.
363 GHCi now has <literal>:ctags</literal> and
364 <literal>:etags</literal> commands to generate tags files for
365 vi-style and emacs-style editors respectively.
366 See <xref linkend="ghci-commands" /> for more information.
373 <title>Libraries</title>
375 Libraries are now divided into core libraries (those that are
376 necessary to build GHC) and extra libraries. Decoupling the extra
377 libraries means that they can release independently of GHC
378 releases, and makes development builds of GHC quicker as they no
379 longer need to build unnecessary libraries.
383 The hslibs libraries have finally been removed.
388 <title>Core Libraries</title>
394 Version number 2.0 (was 1.0).
399 We now have <literal>Read</literal> and
400 <literal>Show</literal> instances for up to 15-tuples (used
401 to be up to 5-tuples).
406 New module <literal>Control.Applicative</literal> that
407 describes a structure intermediate between a functor and
408 a monad: it provides pure expressions and sequencing, but
414 <literal>Control.Exception</literal> now exports
415 <literal>bracketOnError</literal>, which behaves like
416 <literal>bracket</literal> but only runs the final
417 action if the main action raised an error.
422 There is a new module
423 <literal>Control.Monad.Instances</literal> which
424 provides <literal>Monad</literal> and
425 <literal>Functor</literal> instances for
426 <literal>((->) r)</literal> (were in
427 <literal>mtl</literal>'s
428 <literal>Control.Monad.Reader</literal>),
429 a <literal>Functor</literal> instance for
430 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
431 <literal>Control.Monad.Error</literal>) and a
432 <literal>Functor</literal> instance for
433 <literal>((,) a)</literal> (new).
438 The <literal>MonadFix</literal> instance for
439 <literal>((->) r)</literal> is now in
440 <literal>Control.Monad.Fix</literal> (was in
441 <literal>mtl</literal>'s
442 <literal>Control.Monad.Reader</literal>).
447 <literal>Control.Monad.ST</literal> now exports
448 <literal>unsafeSTToIO</literal>.
453 The <literal>HasBounds</literal> class has been removed from
454 <literal>Data.Array.Base</literal>, and its
455 <literal>bounds</literal> method is now in the
456 <literal>IArray</literal> class. The
457 <literal>MArray</literal> class
458 has also gained a method <literal>getBounds</literal>.
463 <literal>Data.Array.Base</literal> now provides an
464 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
470 <literal>Data.Array.Storable</literal> now exports a
471 function <literal>unsafeForeignPtrToStorableArray</literal>.
476 The new <literal>Data.ByteString</literal> hierarchy
477 provides time and space-efficient byte vectors.
478 The old <literal>Data.PackedString</literal> module is now
479 deprecated as a result, although there is not yet a
480 replacement if you need full unicode support.
485 <literal>GHC.Exts</literal> now provides a function
486 <literal>inline</literal> which, provided the RHS is visible
487 to the compiler, forcibly inlines its argument.
488 Otherwise, it acts like <literal>id</literal>.
493 <literal>GHC.Exts</literal> now provides a function
494 <literal>lazy</literal> which forces GHC to think that its
495 argument is lazy in its first argument.
500 <literal>Data.FiniteMap</literal> has been removed
501 (deprecated since 6.4). Use <literal>Data.Map</literal>
507 <literal>Data.Char</literal> now exports
508 <literal>isLetter</literal>,
509 <literal>isMark</literal>,
510 <literal>isNumber</literal>,
511 <literal>isPunctuation</literal>,
512 <literal>isSymbol</literal>,
513 <literal>isSeparator</literal>,
514 <literal>isAsciiUpper</literal>,
515 <literal>isAsciiLower</literal> and
516 <literal>toTitle</literal>.
517 It also exports a function
518 <literal>generalCategory</literal> that tells you the
519 category of a character in terms of a datatype
520 <literal>GeneralCategory</literal>.
525 <literal>Data.Dynamic</literal> now exports a function
526 <literal>dynTypeRep</literal>.
531 There is a new module <literal>Data.Eq</literal> which
532 just exports the <literal>Eq</literal> class.
533 Likewise, a new module <literal>Data.Ord</literal>
534 exports the <literal>Ord</literal> class, as well as the
535 handy <literal>comparing</literal> function.
540 There is a new module <literal>Data.Fixed</literal>
541 providing fixed-precision arithmetic.
546 There is a new module <literal>Data.Foldable</literal>
547 providing a class for foldable datatypes. It gives instances
548 for <literal>Maybe</literal>, <literal>[]</literal> and
549 <literal>Array i</literal>.
554 There is a new module <literal>Data.Traversable</literal>
555 providing a class for data structures that can be traversed
556 from left to right. It gives instances
557 for <literal>Maybe</literal>, <literal>[]</literal> and
558 <literal>Array i</literal>.
563 <literal>Data.FunctorM</literal> has been deprecated;
564 use <literal>Data.Foldable</literal> and
565 <literal>Data.Traversable</literal> instead.
570 The <literal>toConstr</literal> definitions for tuples in
571 <literal>Data.Generics.Instances</literal> now actually
572 evaluate their arguments to tuples before returning
578 <literal>Data.IntMap</literal> now exports
579 <literal>notMember</literal>,
580 <literal>alter</literal>,
581 <literal>mapMaybe</literal>,
582 <literal>mapMaybeWithKey</literal>,
583 <literal>mapEither</literal> and
584 <literal>mapEitherWithKey</literal>.
585 It also has <literal>Monoid</literal>,
586 <literal>Foldable</literal> and <literal>Read</literal>
592 <literal>Data.IntSet</literal> now exports
593 <literal>notMember</literal>. It also has
594 <literal>Monoid</literal> and <literal>Read</literal>
600 <literal>Data.Map</literal> now exports
601 <literal>notMember</literal>,
602 <literal>alter</literal>,
603 <literal>mapMaybe</literal>,
604 <literal>mapMaybeWithKey</literal>,
605 <literal>mapEither</literal>,
606 <literal>mapEitherWithKey</literal>,
607 <literal>minView</literal> and
608 <literal>maxView</literal>.
609 It also has <literal>Monoid</literal>,
610 <literal>Traversable</literal>, <literal>Foldable</literal>
611 and <literal>Read</literal> instances.
616 <literal>Data.Set</literal> now exports
617 <literal>notMember</literal>,
618 <literal>minView</literal> and
619 <literal>maxView</literal>.
620 It also has <literal>Monoid</literal>,
621 <literal>Foldable</literal>
622 and <literal>Read</literal> instances.
626 The old, deprecated (since 6.4) interface consisting of
627 <literal>emptySet</literal>,
628 <literal>mkSet</literal>,
629 <literal>setToList</literal>,
630 <literal>unitSet</literal>,
631 <literal>elementOf</literal>,
632 <literal>isEmptySet</literal>,
633 <literal>cardinality</literal>,
634 <literal>unionManySets</literal>,
635 <literal>minusSet</literal>,
636 <literal>mapSet</literal>,
637 <literal>intersect</literal>,
638 <literal>addToSet</literal> and
639 <literal>delFromSet</literal> has been removed.
644 <literal>Data.Monoid</literal> no longer contains the
645 <literal>Monoid</literal>
646 instances for <literal>Map</literal>,
647 <literal>IntMap</literal>, <literal>Set</literal> and
648 <literal>IntSet</literal>. They have been moved to their own
649 modules, as above. The <literal>(a -> a)</literal> instance
650 has been replaced with a
651 <literal>Monoid b => Monoid (a -> b)</literal> instance.
652 The module also now exports
653 <literal>Dual</literal>,
654 <literal>Endo</literal>,
655 <literal>All</literal>,
656 <literal>Any</literal>,
657 <literal>Sum</literal> and
658 <literal>Product</literal> types, and
659 <literal>Monoid</literal> instances for them.
664 There is a new module <literal>Data.Sequence</literal>
665 for finite sequences. The <literal>Data.Queue</literal>
666 module is now deprecated in favour of this faster, more
667 featureful replacement.
672 <literal>Data.Tree</literal> now has
673 <literal>Data</literal>, <literal>Typeable</literal>,
674 <literal>Traversable</literal> and
675 <literal>Foldable</literal>
677 <literal>Tree</literal> datatype.
682 <literal>Data.Typeable</literal> now uses
683 <option>-fallow-overlapping-instances</option>, so the
684 generic instances can be overriden for your own datatypes.
689 <literal>Debug.Trace</literal> now exports
690 <literal>traceShow</literal>, which is the same as
691 <literal>trace</literal> except its first argument can be
692 any showable thing rather than being required to be a
698 <literal>Foreign.C.Types</literal> now also defines
699 <literal>CIntPtr</literal>,
700 <literal>CUIntPtr</literal>,
701 <literal>CIntMax</literal> and
702 <literal>CUIntMax</literal>.
707 <literal>Foreign.ForeignPtr</literal> now exports
708 <literal>FinalizerEnvPtr</literal>,
709 <literal>newForeignPtrEnv</literal> and
710 <literal>addForeignPtrFinalizerEnv</literal>.
711 Together, these allow the use of finalizers which are passed
712 an additional environment parameter.
717 <literal>Foreign.Marshal.Utils</literal> no longer exports
718 the <literal>withObject</literal> function, deprecated since
719 5.04; use <literal>with</literal> instead.
724 Foreign.Ptr now also defines
725 <literal>IntPtr</literal>,
726 <literal>ptrToIntPtr</literal>,
727 <literal>intPtrToPtr</literal>,
728 <literal>WordPtr</literal>,
729 <literal>ptrToWordPtr</literal> and
730 <literal>wordPtrToPtr</literal>.
735 There are now <literal>Bounded</literal> instances for up to
736 15-tuples (used to be up to 4-tuples).
741 The <literal>Text.Html</literal> and
742 <literal>Text.Html.BlockTable</literal> modules have now
743 been removed, with the new <literal>html</literal> and
744 <literal>xhtml</literal> packages providing replacements.
749 <literal>Text.Read</literal> now exports a function
750 <literal>parens</literal> which parses a value in an
751 arbitrary number of parentheses.
756 The <literal>ForeignPtr</literal> datatype has been altered
757 to make it more efficient. There are also new functions
758 <literal>mallocPlainForeignPtr</literal> and
759 <literal>mallocPlainForeignPtrBytes</literal> which
760 do not allow you to attach a finalizer to the
761 <literal>ForeignPtr</literal>.
766 The <literal>Text.Regex</literal> and
767 <literal>Text.Regex.Posix</literal> modules have been removed.
768 Instead, use the new <literal>regex-compat</literal> package
769 for a drop-in <literal>Text.Regex</literal> replacement, or
770 the new library in the new <literal>regex-posix</literal>
782 Version number 1.1.6 (was 1.1.4).
787 Support for JHC, symmetric to the support for the other
788 implementations, has been added throughout.
793 Support for object splitting and building in-place
794 has been added throughout.
799 Added a <filename>debianTemplate</filename> directory with
800 templates for building Debian packages from Cabal packages.
805 There are now modules
806 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
807 for each of <literal>GHC</literal>, <literal>NHC</literal>,
808 <literal>Hugs</literal> and <literal>JHC</literal>.
809 The <literal>Distribution.Simple.Build</literal> and
810 <literal>Distribution.Simple.Install</literal> modules have
811 shrunk correspondingly.
816 <literal>Distribution.GetOpt</literal> is no longer a
822 <literal>Distribution.Simple</literal> exports a function
823 <literal>defaultMainArgs</literal>, which is identical to
824 <literal>defaultMain</literal> except that the arguments are
825 given as a list of strings rather than being retrieved with
826 <literal>getArgs</literal>.
831 <literal>Distribution.Simple.Configure</literal>
833 <literal>LocalBuildInfo</literal>,
835 <literal>configDependency</literal> and
836 <literal>configCompilerAux</literal>.
841 <literal>Distribution.Simple.LocalBuildInfo</literal> now
842 exports <literal>mkHaddockDir</literal>,
843 <literal>distPref</literal>,
844 <literal>srcPref</literal>,
845 <literal>autogenModulesDir</literal> and
846 <literal>mkIncludeDir</literal>.
851 <literal>Distribution.PackageDescription</literal> now
852 exports <literal>haddockName</literal>.
857 <literal>Distribution.Simple.Utils</literal> now exports
858 <literal>copyDirectoryRecursiveVerbose</literal>,
859 <literal>dirOf</literal>,
860 <literal>distPref</literal>,
861 <literal>haddockPref</literal> and
862 <literal>srcPref</literal>.
863 It no longer exports <literal>mkGHCiLibName</literal>.
870 <title>haskell98</title>
874 No change (version 1.0).
881 <title>parsec</title>
885 Version number 2.0 (was 1.0).
897 <title>readline</title>
901 No change (version 1.0).
908 <title>regex-base</title>
917 New library that provides common functions for different
925 <title>regex-compat</title>
934 New package providing a replacement
935 <literal>Text.Regex</literal> module.
942 <title>regex-posix</title>
951 A new package providing POSIX regexes.
962 Version number 2.0 (was 1.0).
967 A new module <literal>Control.Monad.STM</literal>
969 <literal>MonadPlus</literal> instance for
970 <literal>STM</literal> and the function
971 <literal>check</literal> (both used to be in
972 <literal>Control.Concurrent.STM</literal>).
974 <literal>STM</literal>,
975 <literal>atomically</literal>,
976 <literal>retry</literal>,
977 <literal>orElse</literal> and
978 <literal>catchSTM</literal>.
984 <literal>Control.Concurrent.STM.TArray</literal> defines
985 <literal>TArray</literal>, a transactional array, and makes
986 it an instance of <literal>MArray</literal>.
991 <literal>Control.Concurrent.STM.TChan</literal> now provides
992 a function <literal>newTChanIO</literal>, which allows
993 <literal>TChan</literal>s to be created in the IO monad.
994 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
995 provides <literal>newTMVarIO</literal> and
996 <literal>newEmptyTMVarIO</literal>, and
997 <literal>Control.Concurrent.STM.TVar</literal> exports
998 <literal>newTVarIO</literal>.
1003 <literal>Control.Concurrent.STM.TVar</literal> exports
1004 <literal>registerDelay</literal>.
1009 The <literal>Control.Concurrent.STM</literal> module has been
1010 updated to re-export all the new modules.
1017 <title>template-haskell</title>
1021 Version number 2.0 (was 1.0).
1026 A <literal>Show</literal> instance is now derived for
1027 <literal>Info</literal>, <literal>Fixity</literal> and
1028 <literal>FixityDirection</literal> in
1029 <literal>Language.Haskell.TH.Syntax</literal>.
1034 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1035 a type <literal>PkgName</literal> and functions
1036 <literal>mkPkgName</literal> and
1037 <literal>pkgString</literal>
1038 for dealing with package names.
1043 The <literal>patGE</literal> function in
1044 <literal>Language.Haskell.TH.Lib</literal> now takes the
1045 final expression separately to the list of statements
1046 rather than splitting it off itself.
1057 No change (version 1.0).
1064 <title>Win32</title>
1068 Version number 2.0 (was 1.0).
1073 Now maintained by Esa Ilari Vuokko.
1078 There is a new module
1079 <literal>System.Win32.Console</literal>
1080 providing an interface to the Windows Console API.
1085 There is a new module
1086 <literal>System.Win32.DebugApi</literal>
1087 providing an interface to the Windows DebugApi.
1092 There is a new module
1093 <literal>System.Win32.FileMapping</literal>
1094 for working with memory-mapped files.
1099 There is a new module
1100 <literal>System.Win32.SimpleMAPI</literal>
1101 for using the Windows mail API.
1106 There is a new module
1107 <literal>System.Win32.Time</literal>
1108 for using the Windows time API.
1113 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1114 <literal>Graphics.Win32.Misc</literal> to
1115 <literal>System.Win32.Types</literal>.
1120 <literal>System.Win32.File</literal> has a new
1121 function <literal>getFileInformationByHandle</literal>
1122 and associated data types.
1127 <literal>System.Win32.Info</literal> has a new
1128 function <literal>getSystemInfo</literal> and associated
1134 <literal>System.Win32.Process</literal> now has many more
1140 <literal>System.Win32.Types</literal> has new types
1141 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1142 and <literal>SIZE_T</literal>. It also has new helper
1143 functions <literal>ddwordToDwords</literal> and
1144 <literal>dwordsToDdword</literal> to split and combine
1145 ddwords into high and low components.
1150 <literal>System.Win32</literal> re-exports
1151 <literal>System.Win32.FileMapping</literal>,
1152 <literal>System.Win32.Time</literal>
1153 and <literal>System.Win32.Console</literal>.
1161 <title>Extra Libraries</title>
1167 Version number 2.0 (was 1.0).
1172 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1173 Its <literal>Phase</literal> and <literal>Duration</literal>
1174 exports are now exported by
1175 <literal>Sound.ALUT.Loaders</literal> and its
1176 <literal>helloWorld</literal>,
1177 <literal>sine</literal>,
1178 <literal>square</literal>,
1179 <literal>sawtooth</literal>,
1180 <literal>impulse</literal> and
1181 <literal>whiteNoise</literal>
1182 exports are now constructors of the
1183 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1191 <title>arrows</title>
1195 Version number 0.2 (was 0.1).
1200 <literal>Control.Sequence</literal> has been removed in
1201 favour of the new <literal>Control.Applicative</literal>
1202 module in <literal>base</literal>.
1218 <literal>cgi</literal> is a new package, developing on
1219 what used to be <literal>Network.CGI</literal> in the
1220 <literal>network</literal> package.
1231 Version number 5.3 (was 5.2).
1236 <literal>Data.Graph.Inductive.Graph</literal> no longer
1237 exports <literal>UContext</literal>.
1242 <literal>Data.Graph.Inductive.Graph</literal> now exports
1243 <literal>delLEdge</literal>.
1254 Version number remains 2.0.
1259 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1260 <literal>DisplayMode</literal> has a new constructor
1261 <literal>WithAuxBuffers</literal> and
1262 <literal>DisplayCapability</literal> has a new constructor
1263 <literal>DisplayAux</literal>. These represent freeglut-only
1269 There are new examples in
1270 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1271 <filename>RedBook/AAIndex.hs</filename>,
1272 <filename>RedBook/AARGB.hs</filename>,
1273 <filename>RedBook/AccAnti.hs</filename>,
1274 <filename>RedBook/AccPersp.hs</filename>,
1275 <filename>RedBook/Alpha3D.hs</filename>,
1276 <filename>RedBook/DOF.hs</filename>,
1277 <filename>RedBook/FogIndex.hs</filename>,
1278 <filename>RedBook/Multisamp.hs</filename>,
1279 <filename>RedBook/PointP.hs</filename>,
1280 <filename>RedBook/PolyOff.hs</filename>,
1281 <filename>RedBook/Stencil.hs</filename>,
1282 <filename>RedBook/Stroke.hs</filename> and
1283 <filename>RedBook/Torus.hs</filename>,
1285 <filename>RedBook/Font.hs</filename> and
1286 <filename>RedBook/Histogram.hs</filename> have been
1294 <title>haskell-src</title>
1298 No change (version 1.0).
1309 No change (version 3.1).
1325 <literal>html</literal> is a new package, developing on
1326 what used to be <literal>Text.Html</literal> and
1327 <literal>Text.Html.BlockTable</literal> in the
1328 <literal>base</literal> package.
1333 <literal>Text.Html.BlockTable</literal> exports a new
1334 function <literal>empty</literal>.
1341 <title>HUnit</title>
1345 No change (version 1.1).
1356 No change (version 1.0).
1363 <title>network</title>
1367 Version number 2.0 (was 1.0).
1372 <literal>Network.CGI</literal> has been removed; use the
1373 <literal>cgi</literal> package instead.
1378 <literal>Network.BSD</literal> no longer exports
1379 <literal>symlink</literal> or <literal>readlink</literal>;
1381 <literal>System.Posix.Files.createSymbolicLink</literal> and
1382 <literal>System.Posix.Files.readSymbolicLink</literal>
1388 <literal>Network.BSD</literal> now exports
1389 <literal>defaultProtocol</literal>.
1394 <literal>Network.Socket.SocketStatus</literal> now has a
1395 constructor <literal>ConvertedToHandle</literal> for sockets
1396 that have been converted to handles.
1401 <literal>Network.Socket.Family</literal> now has the
1402 following additional constructors:
1403 <literal>AF_NETROM</literal>,
1404 <literal>AF_BRIDGE</literal>,
1405 <literal>AF_ATMPVC</literal>,
1406 <literal>AF_ROSE</literal>,
1407 <literal>AF_NETBEUI</literal>,
1408 <literal>AF_SECURITY</literal>,
1409 <literal>AF_PACKET</literal>,
1410 <literal>AF_ASH</literal>,
1411 <literal>AF_ECONET</literal>,
1412 <literal>AF_ATMSVC</literal>,
1413 <literal>AF_IRDA</literal>,
1414 <literal>AF_PPPOX</literal>,
1415 <literal>AF_WANPIPE</literal> and
1416 <literal>AF_BLUETOOTH</literal>.
1421 In <literal>Network.URI</literal>,
1422 <literal>parseabsoluteURI</literal> has been deprecated with
1423 a new function <literal>parseAbsoluteURI</literal> taking
1431 <title>ObjectIO</title>
1435 No change (version 1.0).
1442 <title>OpenAL</title>
1446 Version number 1.3 (was 1.2).
1458 <title>OpenGL</title>
1462 Version number 2.1 (was 2.0).
1474 <title>QuickCheck</title>
1478 No change (version 1.0).
1494 <literal>time</literal> is a new package, for dealing with
1495 dates, times and time intervals.
1506 Version number 1.2 (was 1.1).
1511 In <literal>Graphics.X11.Xlib.Types</literal>,
1512 <literal>XGCValues</literal> has been renamed
1513 <literal>GCValues</literal> and
1514 <literal>XSetWindowAttributes</literal> has been renamed
1515 <literal>SetWindowAttributes</literal>.
1520 In <literal>Graphics.X11.Xlib.Misc</literal>,
1521 <literal>allocaXSetWindowAttributes</literal> has been
1522 renamed <literal>allocaSetWindowAttributes</literal>.
1527 The <literal>FontStruct</literal> type has moved from
1528 <literal>Graphics.X11.Xlib.Types</literal> to
1529 <literal>Graphics.X11.Xlib.Font</literal>.
1535 <literal>Point</literal>,
1536 <literal>Rectangle</literal>,
1537 <literal>Arc</literal>,
1538 <literal>Segment</literal> and
1539 <literal>Color</literal> types in
1540 <literal>Graphics.X11.Xlib.Types</literal>
1541 are now proper datatypes rather than synonyms for tuples.
1542 They all have a <literal>Storable</literal> instance.
1547 The <literal>Byte</literal> and <literal>Short</literal>
1548 types from <literal>Graphics.X11.Xlib.Types</literal> have
1550 The following type synonyms, which had already been marked
1551 "Backwards compatibility", have also been removed:
1552 <literal>ListPoint</literal>,
1553 <literal>ListRectangle</literal>,
1554 <literal>ListArc</literal>,
1555 <literal>ListSegment</literal> and
1556 <literal>ListColor</literal>.
1561 <literal>Eq</literal>,
1562 <literal>Ord</literal>,
1563 <literal>Show</literal>,
1564 <literal>Typeable</literal> and
1565 <literal>Data</literal> are now derived for:
1566 <literal>XEvent</literal>,
1567 <literal>FdSet</literal> and
1568 <literal>TimeZone</literal> in
1569 <literal>Graphics.X11.Xlib.Event</literal>,
1570 <literal>FontStruct</literal> in
1571 <literal>Graphics.X11.Xlib.Font</literal>,
1572 <literal>XErrorEvent</literal>,
1573 <literal>XComposeStatus</literal> and
1574 <literal>XTextProperty</literal> in
1575 <literal>Graphics.X11.Xlib.Misc</literal>,
1576 <literal>Region</literal> in
1577 <literal>Graphics.X11.Xlib.Region</literal>,
1578 <literal>Display</literal>,
1579 <literal>Screen</literal>,
1580 <literal>Visual</literal>,
1581 <literal>GC</literal>,
1582 <literal>GCValues</literal>,
1583 <literal>SetWindowAttributes</literal>,
1584 <literal>Point</literal>,
1585 <literal>Rectangle</literal>,
1586 <literal>Arc</literal>,
1587 <literal>Segment</literal> and
1588 <literal>Color</literal> in
1589 <literal>Graphics.X11.Xlib.Types</literal>.
1596 <title>xhtml</title>
1605 <literal>xhtml</literal> is a new package, developing on
1606 what used to be <literal>Text.Html</literal> and
1607 <literal>Text.Html.BlockTable</literal> in the
1608 <literal>base</literal> package.
1616 <title>Internal changes</title>
1620 GHC development now has its own integrated
1621 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1627 GHC has now moved to darcs. See
1629 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1630 wiki</ulink> for more details. The sources have moved around a
1631 bit within the tree as a result, most notably the GHC sources
1632 are no longer kept within a <filename>ghc/</filename>
1638 The native code generator is now capable of compiling loops,
1639 which gets us a big step closer to being able to compile
1640 entirely without gcc on well-supported arches.