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 now handles impredicative polymorphism and there are
21 changes to the way scoped type variables work; see
22 <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
23 for more details of the change, or <xref linkend="impredicative-polymorphism" /> for the documentation.
28 GHC now supports bang patterns to require a function is strict
29 in a given argument, e.g.
31 f (!x, y) = [x,y]</programlisting>
34 f (x, y) | x `seq` False = undefined
35 | otherwise = [x,y]</programlisting>
36 See <xref linkend="sec-bang-patterns" /> for more details.
41 The restriction that you cannot use two packages together if
42 they contain a module with the same name has been removed.
43 In implementation terms, the package name is now included in
44 every exported symbol name in the object file, so that
45 modules with the same name in different packages do not
46 clash. See <xref linkend="package-overlaps" />.
51 GHC now treats source files as UTF-8 (ASCII is a strict
52 subset of UTF-8, so ASCII source files will continue to
53 work as before). However, invalid UTF-8 sequences are
54 ignored in comments, so ASCII code with comments in, for
55 example, Latin-1 will also work.
60 GADTs can now use record syntax. Also, if the datatype could
61 have been declared with Haskell 98 syntax then deriving
62 clauses are permitted. For more info see <xref linkend="gadt" />.
67 There is a new pragma <literal>LANGUAGE</literal> which allows
68 extensions to be specified portably, i.e. without having to
69 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
70 GHC-specific options. The arguments to the pragma are the same
71 extensions that Cabal knows about. More info in
72 <xref linkend="language-pragma" />.
77 When you use <command>ghc --make</command>, GHC will now take
78 the executable filename from the name of the file containing
79 the <literal>Main</literal> module rather than using
80 <filename>a.out</filename>. The <filename>.exe</filename>
81 extension is appended on Windows, and it can of course be
82 overridden with <option>-o</option>.
87 GHC's garbage collector now deals more intelligently with
88 mutable data, so you mostly no longer need to worry about GC
89 performance when a lot of memory is taken up by
90 <literal>STArray</literal>s, <literal>IOArray</literal>s,
91 <literal>STRef</literal>s or <literal>IORef</literal>s.
93 <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
98 GHC now allows more generalisation when typing mutually
99 recursive bindings, resulting in more programs being accepted.
100 See <xref linkend="typing-binds" /> for more details.
105 The rules for instance declarations have been further relaxed.
106 You are now permitted to have instances whose heads contain
107 only type variables, e.g.
109 instance C a</programlisting>
110 and instances whose constraints are not only type variables,
113 instance C2 Int a => C3 [a] b</programlisting>
114 For more details, see <xref linkend="instance-rules" />.
119 The following flags (and, where appropriate, their inverses)
120 used to be static (can only be given on
121 the command line) but are now dynamic (can also be given in
122 a <literal>GHC_OPTIONS</literal> pragma or with
123 <literal>:set</literal> in GHCi):
125 <option>-hcsuf</option>,
126 <option>-hidir</option>,
127 <option>-hisuf</option>,
129 <option>-odir</option>,
130 <option>-ohi</option>,
131 <option>-osuf</option>,
132 <option>-keep-hc-file</option>,
133 <option>-keep-s-file</option>,
134 <option>-keep-raw-s-file</option>,
135 <option>-keep-tmp-files</option>,
136 <option>-tmpdir</option>,
138 <option>-package</option>,
139 <option>-hide-package</option>,
140 <option>-ignore-package</option>,
141 <option>-package-conf</option>,
142 <option>-no-user-package-conf</option>,
143 <option>-fcontext-stack</option>,
144 <option>-fexcess-precision</option>,
145 <option>-fignore-asserts</option>,
146 <option>-fignore-interface-pragmas</option>,
148 <option>-framework</option>,
149 <option>-framework-path</option>,
152 <option>-main-is</option>,
153 <option>-no-hs-main</option>,
154 <option>-split-objs</option>,
155 <option>-pgmL</option>,
156 <option>-pgmP</option>,
157 <option>-pgmc</option>,
158 <option>-pgma</option>,
159 <option>-pgml</option>,
160 <option>-pgmdll</option>,
161 <option>-pgmdep</option>,
162 <option>-pgmF</option>,
163 <option>-optl</option>,
164 <option>-optdll</option>,
165 <option>-optdep</option>,
166 <option>-fno-asm-mangling</option>.
167 See <xref linkend="static-dynamic-flags" /> for more on
168 the meaning of static and dynamic flags, and
169 <xref linkend="flag-reference" /> for more on the flags
175 There is a new flag <option>-x</option> for overriding the
176 default behaviour for source files; see
177 <xref linkend="overriding-suffixes" /> details.
182 The <option>-fglobalise-toplev-names</option>
183 flag has been removed.
188 The <option>-fallow-overlapping-instances</option> flag is
189 implied by the <option>-fallow-incoherent-instances</option>
195 The directory that the <filename>foo_stub.c</filename> and
196 <filename>foo_stub.h</filename> files are put in can now be
197 controlled with the <option>-stubdir</option> flag.
198 See <xref linkend="options-output" /> for more details.
203 When the <option>-fno-implicit-prelude</option> is given,
204 the equality test performed when pattern matching against an
205 overloaded numeric literal now uses the
206 <literal>(==)</literal> in scope, rather than the one from
207 <literal>Prelude</literal>. Likewise, the subtraction and
208 inequality test performed when pattern matching against
209 <literal>n+k</literal> patterns uses the
210 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
215 Another change to <option>-fno-implicit-prelude</option>:
216 with the exception of the arrow syntax, the types of
217 functions used by sugar (such as do notation, numeric
218 literal patterns) need not match the types of the
219 <literal>Prelude</literal> functions normally used.
224 The <literal>InstalledPackageInfo</literal> syntax has
226 instead of <literal>extra-libs</literal> we have
227 <literal>extra-libraries</literal>,
228 instead of <literal>extra-hugs-opts</literal> we have
229 <literal>hugs-options</literal>,
230 instead of <literal>extra-cc-opts</literal> we have
231 <literal>cc-options</literal>,
232 instead of <literal>extra-ld-opts</literal> we have
233 <literal>ld-options</literal>,
234 and instead of <literal>extra-frameworks</literal> we have
235 <literal>frameworks</literal>.
236 See <xref linkend="installed-pkg-info" /> for details.
241 If you <literal>newtype</literal> the IO monad, e.g.
243 newtype MyIO a = MyIO (IO a)</programlisting>
244 then GHC will now allow you to have FFI calls return
245 <literal>MyIO <replaceable>t</replaceable></literal>
247 <literal>IO <replaceable>t</replaceable></literal>.
248 See <xref linkend="ffi-newtype-io"/>
251 <listitem> <para> GHC's mechansim for deriving user-defined classes
252 for newtypes has been further generalised, to multi-parameter type
253 classes and higher-kinded types. See <xref
254 linkend="newtype-deriving"/>.
258 By default, pattern bindings in GHC are now monomorphic.
259 This means that some valid Haskell 98 programs will get
260 rejected, but we believe they will be few in number.
261 To revert to the old behaviour use the
262 <option>-fno-mono-pat-binds</option> flag.
263 More details are in <xref linkend="options-language" />.
268 GHCi already does more defaulting than Haskell 98 so that, for
269 example, <literal>reverse []</literal> shows a result rather
270 than giving an ambiguous type variable error. There is now a
271 flag <option>-fextended-default-rules</option> to use these
272 defaulting rules with GHC too.
273 More details are in <xref linkend="extended-default-rules" />.
278 You can now give both class and instance declarations in
279 <filename>.hs-boot</filename> files. More details in
280 <xref linkend="mutual-recursion" />.
285 Linear implicit parameters have been scheduled for removal for some
286 time. In 6.6 we've removed them from the user manual, and they may
287 well disappear from the compiler itself in 6.6.1.
292 If the program is idle for a certain amount of time then GHC
293 will now take the opportunity to do a major garbage collection.
294 The amount of idle time that is required before that happens
295 is controlled by the new <literal>-I</literal> RTS flag.
296 There is more detail in <xref linkend="rts-options-gc" />.
301 It is now possible to control the frequency that the RTS clock
302 ticks at with the new <literal>-V</literal> RTS flag. This is
303 normally handled automatically by other flags, but this flag
304 is needed if you want to increase the resolution of the time
306 For more details see <xref linkend="rts-options-misc" />.
311 The old syntax for FFI declarations (deprecated since 5.04)
312 is no longer accepted.
317 The <option>-split-objs</option> flag, which when used to compile
318 libraries means executables using the library will be smaller,
319 can now be used with <option>--make</option> and hence
320 can be used by cabal.
321 See <xref linkend="options-linker" /> for more information.
326 Template Haskell used to have limited support for type signatures in
327 patterns, but since that design is in flux for Haskell (let alone
328 Template Haskell), we've removed type signatures in patterns from
334 GHC now supports postfix operators, as a simple generalisation of
335 left sections (<xref linkend="postfix-operators"/>).
340 Parallel arrays, as enabled by <literal>-fparr</literal>, no
341 longer work. They'll be coming back shortly, in full glory.
348 <title>GHCi changes</title>
353 GHCi now allows tab completion of in-scope names and modules
354 on platforms that use readline (i.e. not Windows).
359 GHCi now has a <literal>:main</literal> command that allows
360 you to call the <literal>main</literal> function with
361 command-line arguments.
362 See <xref linkend="ghci-commands" /> for more information.
367 GHCi now has <literal>:ctags</literal> and
368 <literal>:etags</literal> commands to generate tags files for
369 vi-style and emacs-style editors respectively.
370 See <xref linkend="ghci-commands" /> for more information.
377 <title>Libraries</title>
379 Libraries are now divided into core libraries (those that are
380 necessary to build GHC) and extra libraries. Decoupling the extra
381 libraries means that they can release independently of GHC
382 releases, and makes development builds of GHC quicker as they no
383 longer need to build unnecessary libraries.
387 The hslibs libraries have finally been removed.
392 <title>Core Libraries</title>
398 Version number 2.0 (was 1.0).
403 We now have <literal>Read</literal> and
404 <literal>Show</literal> instances for up to 15-tuples (used
405 to be up to 5-tuples).
410 New module <literal>Control.Applicative</literal> that
411 describes a structure intermediate between a functor and
412 a monad: it provides pure expressions and sequencing, but
418 <literal>Control.Exception</literal> now exports
419 <literal>bracketOnError</literal>, which behaves like
420 <literal>bracket</literal> but only runs the final
421 action if the main action raised an error.
426 There is a new module
427 <literal>Control.Monad.Instances</literal> which
428 provides <literal>Monad</literal> and
429 <literal>Functor</literal> instances for
430 <literal>((->) r)</literal> (were in
431 <literal>mtl</literal>'s
432 <literal>Control.Monad.Reader</literal>),
433 a <literal>Functor</literal> instance for
434 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
435 <literal>Control.Monad.Error</literal>) and a
436 <literal>Functor</literal> instance for
437 <literal>((,) a)</literal> (new).
442 The <literal>MonadFix</literal> instance for
443 <literal>((->) r)</literal> is now in
444 <literal>Control.Monad.Fix</literal> (was in
445 <literal>mtl</literal>'s
446 <literal>Control.Monad.Reader</literal>).
451 <literal>Control.Monad.ST</literal> now exports
452 <literal>unsafeSTToIO</literal>.
457 The <literal>HasBounds</literal> class has been removed from
458 <literal>Data.Array.Base</literal>, and its
459 <literal>bounds</literal> method is now in the
460 <literal>IArray</literal> class. The
461 <literal>MArray</literal> class
462 has also gained a method <literal>getBounds</literal>.
467 <literal>Data.Array.Base</literal> now provides an
468 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
474 <literal>Data.Array.Storable</literal> now exports a
475 function <literal>unsafeForeignPtrToStorableArray</literal>.
480 The new <literal>Data.ByteString</literal> hierarchy
481 provides time and space-efficient byte vectors.
482 The old <literal>Data.PackedString</literal> module is now
483 deprecated as a result, although there is not yet a
484 replacement if you need full unicode support.
489 <literal>GHC.Exts</literal> now provides a function
490 <literal>inline</literal> which, provided the RHS is visible
491 to the compiler, forcibly inlines its argument.
492 Otherwise, it acts like <literal>id</literal>.
493 For more details, see <xref linkend="special-ids" />.
498 <literal>GHC.Exts</literal> now provides a function
499 <literal>lazy</literal> which forces GHC to think that its
500 argument is lazy in its first argument.
501 For more details, see <xref linkend="special-ids" />.
506 <literal>Data.FiniteMap</literal> has been removed
507 (deprecated since 6.4). Use <literal>Data.Map</literal>
513 <literal>Data.Char</literal> now exports
514 <literal>isLetter</literal>,
515 <literal>isMark</literal>,
516 <literal>isNumber</literal>,
517 <literal>isPunctuation</literal>,
518 <literal>isSymbol</literal>,
519 <literal>isSeparator</literal>,
520 <literal>isAsciiUpper</literal>,
521 <literal>isAsciiLower</literal> and
522 <literal>toTitle</literal>.
523 It also exports a function
524 <literal>generalCategory</literal> that tells you the
525 category of a character in terms of a datatype
526 <literal>GeneralCategory</literal>.
531 <literal>Data.Dynamic</literal> now exports a function
532 <literal>dynTypeRep</literal>.
537 There is a new module <literal>Data.Eq</literal> which
538 just exports the <literal>Eq</literal> class.
539 Likewise, a new module <literal>Data.Ord</literal>
540 exports the <literal>Ord</literal> class, as well as the
541 handy <literal>comparing</literal> function.
546 There is a new module <literal>Data.Fixed</literal>
547 providing fixed-precision arithmetic.
552 There is a new module <literal>Data.Foldable</literal>
553 providing a class for foldable datatypes. It gives instances
554 for <literal>Maybe</literal>, <literal>[]</literal> and
555 <literal>Array i</literal>.
560 There is a new module <literal>Data.Traversable</literal>
561 providing a class for data structures that can be traversed
562 from left to right. It gives instances
563 for <literal>Maybe</literal>, <literal>[]</literal> and
564 <literal>Array i</literal>.
569 <literal>Data.FunctorM</literal> has been deprecated;
570 use <literal>Data.Foldable</literal> and
571 <literal>Data.Traversable</literal> instead.
576 The <literal>toConstr</literal> definitions for tuples in
577 <literal>Data.Generics.Instances</literal> now actually
578 evaluate their arguments to tuples before returning
584 <literal>Data.IntMap</literal> now exports
585 <literal>notMember</literal>,
586 <literal>alter</literal>,
587 <literal>mapMaybe</literal>,
588 <literal>mapMaybeWithKey</literal>,
589 <literal>mapEither</literal> and
590 <literal>mapEitherWithKey</literal>.
591 It also has <literal>Monoid</literal>,
592 <literal>Foldable</literal> and <literal>Read</literal>
598 <literal>Data.IntSet</literal> now exports
599 <literal>notMember</literal>. It also has
600 <literal>Monoid</literal> and <literal>Read</literal>
606 <literal>Data.Map</literal> now exports
607 <literal>notMember</literal>,
608 <literal>alter</literal>,
609 <literal>mapMaybe</literal>,
610 <literal>mapMaybeWithKey</literal>,
611 <literal>mapEither</literal>,
612 <literal>mapEitherWithKey</literal>,
613 <literal>minView</literal> and
614 <literal>maxView</literal>.
615 It also has <literal>Monoid</literal>,
616 <literal>Traversable</literal>, <literal>Foldable</literal>
617 and <literal>Read</literal> instances.
622 <literal>Data.Set</literal> now exports
623 <literal>notMember</literal>,
624 <literal>minView</literal> and
625 <literal>maxView</literal>.
626 It also has <literal>Monoid</literal>,
627 <literal>Foldable</literal>
628 and <literal>Read</literal> instances.
632 The old, deprecated (since 6.4) interface consisting of
633 <literal>emptySet</literal>,
634 <literal>mkSet</literal>,
635 <literal>setToList</literal>,
636 <literal>unitSet</literal>,
637 <literal>elementOf</literal>,
638 <literal>isEmptySet</literal>,
639 <literal>cardinality</literal>,
640 <literal>unionManySets</literal>,
641 <literal>minusSet</literal>,
642 <literal>mapSet</literal>,
643 <literal>intersect</literal>,
644 <literal>addToSet</literal> and
645 <literal>delFromSet</literal> has been removed.
650 <literal>Data.Monoid</literal> no longer contains the
651 <literal>Monoid</literal>
652 instances for <literal>Map</literal>,
653 <literal>IntMap</literal>, <literal>Set</literal> and
654 <literal>IntSet</literal>. They have been moved to their own
655 modules, as above. The <literal>(a -> a)</literal> instance
656 has been replaced with a
657 <literal>Monoid b => Monoid (a -> b)</literal> instance.
658 The module also now exports
659 <literal>Dual</literal>,
660 <literal>Endo</literal>,
661 <literal>All</literal>,
662 <literal>Any</literal>,
663 <literal>Sum</literal> and
664 <literal>Product</literal> types, and
665 <literal>Monoid</literal> instances for them.
670 There is a new module <literal>Data.Sequence</literal>
671 for finite sequences. The <literal>Data.Queue</literal>
672 module is now deprecated in favour of this faster, more
673 featureful replacement.
678 <literal>Data.Tree</literal> now has
679 <literal>Data</literal>, <literal>Typeable</literal>,
680 <literal>Traversable</literal> and
681 <literal>Foldable</literal>
683 <literal>Tree</literal> datatype.
688 <literal>Data.Typeable</literal> now uses
689 <option>-fallow-overlapping-instances</option>, so the
690 generic instances can be overriden for your own datatypes.
695 <literal>Debug.Trace</literal> now exports
696 <literal>traceShow</literal>, which is the same as
697 <literal>trace</literal> except its first argument can be
698 any showable thing rather than being required to be a
704 <literal>Foreign.C.Types</literal> now also defines
705 <literal>CIntPtr</literal>,
706 <literal>CUIntPtr</literal>,
707 <literal>CIntMax</literal> and
708 <literal>CUIntMax</literal>.
713 <literal>Foreign.ForeignPtr</literal> now exports
714 <literal>FinalizerEnvPtr</literal>,
715 <literal>newForeignPtrEnv</literal> and
716 <literal>addForeignPtrFinalizerEnv</literal>.
717 Together, these allow the use of finalizers which are passed
718 an additional environment parameter.
723 <literal>Foreign.Marshal.Utils</literal> no longer exports
724 the <literal>withObject</literal> function, deprecated since
725 5.04; use <literal>with</literal> instead.
730 Foreign.Ptr now also defines
731 <literal>IntPtr</literal>,
732 <literal>ptrToIntPtr</literal>,
733 <literal>intPtrToPtr</literal>,
734 <literal>WordPtr</literal>,
735 <literal>ptrToWordPtr</literal> and
736 <literal>wordPtrToPtr</literal>.
741 There are now <literal>Bounded</literal> instances for up to
742 15-tuples (used to be up to 4-tuples).
747 The <literal>Text.Html</literal> and
748 <literal>Text.Html.BlockTable</literal> modules have now
749 been removed, with the new <literal>html</literal> and
750 <literal>xhtml</literal> packages providing replacements.
755 <literal>Text.Read</literal> now exports a function
756 <literal>parens</literal> which parses a value in an
757 arbitrary number of parentheses.
762 The <literal>ForeignPtr</literal> datatype has been altered
763 to make it more efficient. There are also new functions
764 <literal>mallocPlainForeignPtr</literal> and
765 <literal>mallocPlainForeignPtrBytes</literal> which
766 do not allow you to attach a finalizer to the
767 <literal>ForeignPtr</literal>.
772 The <literal>Text.Regex</literal> and
773 <literal>Text.Regex.Posix</literal> modules have been removed.
774 Instead, use the new <literal>regex-compat</literal> package
775 for a drop-in <literal>Text.Regex</literal> replacement, or
776 the new library in the new <literal>regex-posix</literal>
788 Version number 1.1.6 (was 1.1.4).
793 Support for JHC, symmetric to the support for the other
794 implementations, has been added throughout.
799 Support for object splitting and building in-place
800 has been added throughout.
805 Added a <filename>debianTemplate</filename> directory with
806 templates for building Debian packages from Cabal packages.
811 There are now modules
812 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
813 for each of <literal>GHC</literal>, <literal>NHC</literal>,
814 <literal>Hugs</literal> and <literal>JHC</literal>.
815 The <literal>Distribution.Simple.Build</literal> and
816 <literal>Distribution.Simple.Install</literal> modules have
817 shrunk correspondingly.
822 <literal>Distribution.GetOpt</literal> is no longer a
828 <literal>Distribution.Simple</literal> exports a function
829 <literal>defaultMainArgs</literal>, which is identical to
830 <literal>defaultMain</literal> except that the arguments are
831 given as a list of strings rather than being retrieved with
832 <literal>getArgs</literal>.
837 <literal>Distribution.Simple.Configure</literal>
839 <literal>LocalBuildInfo</literal>,
841 <literal>configDependency</literal> and
842 <literal>configCompilerAux</literal>.
847 <literal>Distribution.Simple.LocalBuildInfo</literal> now
848 exports <literal>mkHaddockDir</literal>,
849 <literal>distPref</literal>,
850 <literal>srcPref</literal>,
851 <literal>autogenModulesDir</literal> and
852 <literal>mkIncludeDir</literal>.
857 <literal>Distribution.PackageDescription</literal> now
858 exports <literal>haddockName</literal>.
863 <literal>Distribution.Simple.Utils</literal> now exports
864 <literal>copyDirectoryRecursiveVerbose</literal>,
865 <literal>dirOf</literal>,
866 <literal>distPref</literal>,
867 <literal>haddockPref</literal> and
868 <literal>srcPref</literal>.
869 It no longer exports <literal>mkGHCiLibName</literal>.
876 <title>haskell98</title>
880 No change (version 1.0).
887 <title>parsec</title>
891 Version number 2.0 (was 1.0).
903 <title>readline</title>
907 No change (version 1.0).
914 <title>regex-base</title>
923 New library that provides common functions for different
931 <title>regex-compat</title>
940 New package providing a replacement
941 <literal>Text.Regex</literal> module.
948 <title>regex-posix</title>
957 A new package providing POSIX regexes.
968 Version number 2.0 (was 1.0).
973 A new module <literal>Control.Monad.STM</literal>
975 <literal>MonadPlus</literal> instance for
976 <literal>STM</literal> and the function
977 <literal>check</literal> (both used to be in
978 <literal>Control.Concurrent.STM</literal>).
980 <literal>STM</literal>,
981 <literal>atomically</literal>,
982 <literal>retry</literal>,
983 <literal>orElse</literal> and
984 <literal>catchSTM</literal>.
990 <literal>Control.Concurrent.STM.TArray</literal> defines
991 <literal>TArray</literal>, a transactional array, and makes
992 it an instance of <literal>MArray</literal>.
997 <literal>Control.Concurrent.STM.TChan</literal> now provides
998 a function <literal>newTChanIO</literal>, which allows
999 <literal>TChan</literal>s to be created in the IO monad.
1000 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1001 provides <literal>newTMVarIO</literal> and
1002 <literal>newEmptyTMVarIO</literal>, and
1003 <literal>Control.Concurrent.STM.TVar</literal> exports
1004 <literal>newTVarIO</literal>.
1009 <literal>Control.Concurrent.STM.TVar</literal> exports
1010 <literal>registerDelay</literal>.
1015 The <literal>Control.Concurrent.STM</literal> module has been
1016 updated to re-export all the new modules.
1023 <title>template-haskell</title>
1027 Version number 2.0 (was 1.0).
1032 A <literal>Show</literal> instance is now derived for
1033 <literal>Info</literal>, <literal>Fixity</literal> and
1034 <literal>FixityDirection</literal> in
1035 <literal>Language.Haskell.TH.Syntax</literal>.
1040 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1041 a type <literal>PkgName</literal> and functions
1042 <literal>mkPkgName</literal> and
1043 <literal>pkgString</literal>
1044 for dealing with package names.
1049 The <literal>patGE</literal> function in
1050 <literal>Language.Haskell.TH.Lib</literal> now takes the
1051 final expression separately to the list of statements
1052 rather than splitting it off itself.
1063 No change (version 1.0).
1070 <title>Win32</title>
1074 Version number 2.0 (was 1.0).
1079 Now maintained by Esa Ilari Vuokko.
1084 There is a new module
1085 <literal>System.Win32.Console</literal>
1086 providing an interface to the Windows Console API.
1091 There is a new module
1092 <literal>System.Win32.DebugApi</literal>
1093 providing an interface to the Windows DebugApi.
1098 There is a new module
1099 <literal>System.Win32.FileMapping</literal>
1100 for working with memory-mapped files.
1105 There is a new module
1106 <literal>System.Win32.SimpleMAPI</literal>
1107 for using the Windows mail API.
1112 There is a new module
1113 <literal>System.Win32.Time</literal>
1114 for using the Windows time API.
1119 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1120 <literal>Graphics.Win32.Misc</literal> to
1121 <literal>System.Win32.Types</literal>.
1126 <literal>System.Win32.File</literal> has a new
1127 function <literal>getFileInformationByHandle</literal>
1128 and associated data types.
1133 <literal>System.Win32.Info</literal> has a new
1134 function <literal>getSystemInfo</literal> and associated
1140 <literal>System.Win32.Process</literal> now has many more
1146 <literal>System.Win32.Types</literal> has new types
1147 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1148 and <literal>SIZE_T</literal>. It also has new helper
1149 functions <literal>ddwordToDwords</literal> and
1150 <literal>dwordsToDdword</literal> to split and combine
1151 ddwords into high and low components.
1156 <literal>System.Win32</literal> re-exports
1157 <literal>System.Win32.FileMapping</literal>,
1158 <literal>System.Win32.Time</literal>
1159 and <literal>System.Win32.Console</literal>.
1167 <title>Extra Libraries</title>
1173 Version number 2.0 (was 1.0).
1178 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1179 Its <literal>Phase</literal> and <literal>Duration</literal>
1180 exports are now exported by
1181 <literal>Sound.ALUT.Loaders</literal> and its
1182 <literal>helloWorld</literal>,
1183 <literal>sine</literal>,
1184 <literal>square</literal>,
1185 <literal>sawtooth</literal>,
1186 <literal>impulse</literal> and
1187 <literal>whiteNoise</literal>
1188 exports are now constructors of the
1189 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1197 <title>arrows</title>
1201 Version number 0.2 (was 0.1).
1206 <literal>Control.Sequence</literal> has been removed in
1207 favour of the new <literal>Control.Applicative</literal>
1208 module in <literal>base</literal>.
1224 <literal>cgi</literal> is a new package, developing on
1225 what used to be <literal>Network.CGI</literal> in the
1226 <literal>network</literal> package.
1237 Version number 5.3 (was 5.2).
1242 <literal>Data.Graph.Inductive.Graph</literal> no longer
1243 exports <literal>UContext</literal>.
1248 <literal>Data.Graph.Inductive.Graph</literal> now exports
1249 <literal>delLEdge</literal>.
1260 Version number remains 2.0.
1265 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1266 <literal>DisplayMode</literal> has a new constructor
1267 <literal>WithAuxBuffers</literal> and
1268 <literal>DisplayCapability</literal> has a new constructor
1269 <literal>DisplayAux</literal>. These represent freeglut-only
1275 There are new examples in
1276 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1277 <filename>RedBook/AAIndex.hs</filename>,
1278 <filename>RedBook/AARGB.hs</filename>,
1279 <filename>RedBook/AccAnti.hs</filename>,
1280 <filename>RedBook/AccPersp.hs</filename>,
1281 <filename>RedBook/Alpha3D.hs</filename>,
1282 <filename>RedBook/DOF.hs</filename>,
1283 <filename>RedBook/FogIndex.hs</filename>,
1284 <filename>RedBook/Multisamp.hs</filename>,
1285 <filename>RedBook/PointP.hs</filename>,
1286 <filename>RedBook/PolyOff.hs</filename>,
1287 <filename>RedBook/Stencil.hs</filename>,
1288 <filename>RedBook/Stroke.hs</filename> and
1289 <filename>RedBook/Torus.hs</filename>,
1291 <filename>RedBook/Font.hs</filename> and
1292 <filename>RedBook/Histogram.hs</filename> have been
1300 <title>haskell-src</title>
1304 No change (version 1.0).
1315 No change (version 3.1).
1331 <literal>html</literal> is a new package, developing on
1332 what used to be <literal>Text.Html</literal> and
1333 <literal>Text.Html.BlockTable</literal> in the
1334 <literal>base</literal> package.
1339 <literal>Text.Html.BlockTable</literal> exports a new
1340 function <literal>empty</literal>.
1347 <title>HUnit</title>
1351 No change (version 1.1).
1362 No change (version 1.0).
1369 <title>network</title>
1373 Version number 2.0 (was 1.0).
1378 <literal>Network.CGI</literal> has been removed; use the
1379 <literal>cgi</literal> package instead.
1384 <literal>Network.BSD</literal> no longer exports
1385 <literal>symlink</literal> or <literal>readlink</literal>;
1387 <literal>System.Posix.Files.createSymbolicLink</literal> and
1388 <literal>System.Posix.Files.readSymbolicLink</literal>
1394 <literal>Network.BSD</literal> now exports
1395 <literal>defaultProtocol</literal>.
1400 <literal>Network.Socket.SocketStatus</literal> now has a
1401 constructor <literal>ConvertedToHandle</literal> for sockets
1402 that have been converted to handles.
1407 <literal>Network.Socket.Family</literal> now has the
1408 following additional constructors:
1409 <literal>AF_NETROM</literal>,
1410 <literal>AF_BRIDGE</literal>,
1411 <literal>AF_ATMPVC</literal>,
1412 <literal>AF_ROSE</literal>,
1413 <literal>AF_NETBEUI</literal>,
1414 <literal>AF_SECURITY</literal>,
1415 <literal>AF_PACKET</literal>,
1416 <literal>AF_ASH</literal>,
1417 <literal>AF_ECONET</literal>,
1418 <literal>AF_ATMSVC</literal>,
1419 <literal>AF_IRDA</literal>,
1420 <literal>AF_PPPOX</literal>,
1421 <literal>AF_WANPIPE</literal> and
1422 <literal>AF_BLUETOOTH</literal>.
1427 In <literal>Network.URI</literal>,
1428 <literal>parseabsoluteURI</literal> has been deprecated with
1429 a new function <literal>parseAbsoluteURI</literal> taking
1437 <title>ObjectIO</title>
1441 No change (version 1.0).
1448 <title>OpenAL</title>
1452 Version number 1.3 (was 1.2).
1464 <title>OpenGL</title>
1468 Version number 2.1 (was 2.0).
1480 <title>QuickCheck</title>
1484 No change (version 1.0).
1500 <literal>time</literal> is a new package, for dealing with
1501 dates, times and time intervals.
1512 Version number 1.2 (was 1.1).
1517 In <literal>Graphics.X11.Xlib.Types</literal>,
1518 <literal>XGCValues</literal> has been renamed
1519 <literal>GCValues</literal> and
1520 <literal>XSetWindowAttributes</literal> has been renamed
1521 <literal>SetWindowAttributes</literal>.
1526 In <literal>Graphics.X11.Xlib.Misc</literal>,
1527 <literal>allocaXSetWindowAttributes</literal> has been
1528 renamed <literal>allocaSetWindowAttributes</literal>.
1533 The <literal>FontStruct</literal> type has moved from
1534 <literal>Graphics.X11.Xlib.Types</literal> to
1535 <literal>Graphics.X11.Xlib.Font</literal>.
1541 <literal>Point</literal>,
1542 <literal>Rectangle</literal>,
1543 <literal>Arc</literal>,
1544 <literal>Segment</literal> and
1545 <literal>Color</literal> types in
1546 <literal>Graphics.X11.Xlib.Types</literal>
1547 are now proper datatypes rather than synonyms for tuples.
1548 They all have a <literal>Storable</literal> instance.
1553 The <literal>Byte</literal> and <literal>Short</literal>
1554 types from <literal>Graphics.X11.Xlib.Types</literal> have
1556 The following type synonyms, which had already been marked
1557 "Backwards compatibility", have also been removed:
1558 <literal>ListPoint</literal>,
1559 <literal>ListRectangle</literal>,
1560 <literal>ListArc</literal>,
1561 <literal>ListSegment</literal> and
1562 <literal>ListColor</literal>.
1567 <literal>Eq</literal>,
1568 <literal>Ord</literal>,
1569 <literal>Show</literal>,
1570 <literal>Typeable</literal> and
1571 <literal>Data</literal> are now derived for:
1572 <literal>XEvent</literal>,
1573 <literal>FdSet</literal> and
1574 <literal>TimeZone</literal> in
1575 <literal>Graphics.X11.Xlib.Event</literal>,
1576 <literal>FontStruct</literal> in
1577 <literal>Graphics.X11.Xlib.Font</literal>,
1578 <literal>XErrorEvent</literal>,
1579 <literal>XComposeStatus</literal> and
1580 <literal>XTextProperty</literal> in
1581 <literal>Graphics.X11.Xlib.Misc</literal>,
1582 <literal>Region</literal> in
1583 <literal>Graphics.X11.Xlib.Region</literal>,
1584 <literal>Display</literal>,
1585 <literal>Screen</literal>,
1586 <literal>Visual</literal>,
1587 <literal>GC</literal>,
1588 <literal>GCValues</literal>,
1589 <literal>SetWindowAttributes</literal>,
1590 <literal>Point</literal>,
1591 <literal>Rectangle</literal>,
1592 <literal>Arc</literal>,
1593 <literal>Segment</literal> and
1594 <literal>Color</literal> in
1595 <literal>Graphics.X11.Xlib.Types</literal>.
1602 <title>xhtml</title>
1611 <literal>xhtml</literal> is a new package, developing on
1612 what used to be <literal>Text.Html</literal> and
1613 <literal>Text.Html.BlockTable</literal> in the
1614 <literal>base</literal> package.
1622 <title>GHC As A Library</title>
1627 The internal modules of GHC are now available as a library, package
1628 name <literal>ghc</literal>.
1629 The interface has not been designed with use by other programs
1630 in mind, so expect the API to vary radically in future
1634 An introduction to using the library can be found
1635 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1640 <title>Internal changes</title>
1644 GHC development now has its own integrated
1645 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1651 GHC has now moved to darcs. See
1653 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1654 wiki</ulink> for more details. The sources have moved around a
1655 bit within the tree as a result, most notably the GHC sources
1656 are no longer kept within a <filename>ghc/</filename>
1662 The native code generator is now capable of compiling loops,
1663 which gets us a big step closer to being able to compile
1664 entirely without gcc on well-supported arches.