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.
183 <option>-no-recomp</option><indexterm><primary><option>-no-recomp</option></primary></indexterm>
185 <option>-fforce-recomp</option><indexterm><primary><option>-fforce-recomp</option></primary></indexterm>.
186 (the old name is still accepted for backwards compatibility,
187 but will be removed in the future).
192 The <option>-fglobalise-toplev-names</option>
193 flag has been removed.
198 The <option>-fallow-overlapping-instances</option> flag is
199 implied by the <option>-fallow-incoherent-instances</option>
205 The directory that the <filename>foo_stub.c</filename> and
206 <filename>foo_stub.h</filename> files are put in can now be
207 controlled with the <option>-stubdir</option> flag.
208 See <xref linkend="options-output" /> for more details.
213 When the <option>-fno-implicit-prelude</option> is given,
214 the equality test performed when pattern matching against an
215 overloaded numeric literal now uses the
216 <literal>(==)</literal> in scope, rather than the one from
217 <literal>Prelude</literal>. Likewise, the subtraction and
218 inequality test performed when pattern matching against
219 <literal>n+k</literal> patterns uses the
220 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
225 Another change to <option>-fno-implicit-prelude</option>:
226 with the exception of the arrow syntax, the types of
227 functions used by sugar (such as do notation, numeric
228 literal patterns) need not match the types of the
229 <literal>Prelude</literal> functions normally used.
234 The <literal>InstalledPackageInfo</literal> syntax has
236 instead of <literal>extra-libs</literal> we have
237 <literal>extra-libraries</literal>,
238 instead of <literal>extra-hugs-opts</literal> we have
239 <literal>hugs-options</literal>,
240 instead of <literal>extra-cc-opts</literal> we have
241 <literal>cc-options</literal>,
242 instead of <literal>extra-ld-opts</literal> we have
243 <literal>ld-options</literal>,
244 and instead of <literal>extra-frameworks</literal> we have
245 <literal>frameworks</literal>.
246 See <xref linkend="installed-pkg-info" /> for details.
251 If you <literal>newtype</literal> the IO monad, e.g.
253 newtype MyIO a = MyIO (IO a)</programlisting>
254 then GHC will now allow you to have FFI calls return
255 <literal>MyIO <replaceable>t</replaceable></literal>
257 <literal>IO <replaceable>t</replaceable></literal>.
258 See <xref linkend="ffi-newtype-io"/>
261 <listitem> <para> GHC's mechansim for deriving user-defined classes
262 for newtypes has been further generalised, to multi-parameter type
263 classes and higher-kinded types. See <xref
264 linkend="newtype-deriving"/>.
268 By default, pattern bindings in GHC are now monomorphic.
269 This means that some valid Haskell 98 programs will get
270 rejected, but we believe they will be few in number.
271 To revert to the old behaviour use the
272 <option>-fno-mono-pat-binds</option> flag.
273 More details are in <xref linkend="options-language" />.
278 GHCi already does more defaulting than Haskell 98 so that, for
279 example, <literal>reverse []</literal> shows a result rather
280 than giving an ambiguous type variable error. There is now a
281 flag <option>-fextended-default-rules</option> to use these
282 defaulting rules with GHC too.
283 More details are in <xref linkend="extended-default-rules" />.
288 You can now give both class and instance declarations in
289 <filename>.hs-boot</filename> files. More details in
290 <xref linkend="mutual-recursion" />.
295 Linear implicit parameters have been scheduled for removal for some
296 time. In 6.6 we've removed them from the user manual, and they may
297 well disappear from the compiler itself in 6.6.1.
302 If the program is idle for a certain amount of time then GHC
303 will now take the opportunity to do a major garbage collection.
304 The amount of idle time that is required before that happens
305 is controlled by the new <literal>-I</literal> RTS flag.
306 There is more detail in <xref linkend="rts-options-gc" />.
311 It is now possible to control the frequency that the RTS clock
312 ticks at with the new <literal>-V</literal> RTS flag. This is
313 normally handled automatically by other flags, but this flag
314 is needed if you want to increase the resolution of the time
316 For more details see <xref linkend="rts-options-misc" />.
321 The old syntax for FFI declarations (deprecated since 5.04)
322 is no longer accepted.
327 The <option>-split-objs</option> flag, which when used to compile
328 libraries means executables using the library will be smaller,
329 can now be used with <option>--make</option> and hence
330 can be used by cabal.
331 See <xref linkend="options-linker" /> for more information.
336 Template Haskell used to have limited support for type signatures in
337 patterns, but since that design is in flux for Haskell (let alone
338 Template Haskell), we've removed type signatures in patterns from
344 GHC now supports postfix operators, as a simple generalisation of
345 left sections (<xref linkend="postfix-operators"/>).
350 Parallel arrays, as enabled by <literal>-fparr</literal>, no
351 longer work. They'll be coming back shortly, in full glory.
358 <title>GHCi changes</title>
363 GHCi now allows tab completion of in-scope names and modules
364 on platforms that use readline (i.e. not Windows).
369 GHCi now has a <literal>:main</literal> command that allows
370 you to call the <literal>main</literal> function with
371 command-line arguments.
372 See <xref linkend="ghci-commands" /> for more information.
377 GHCi now has <literal>:ctags</literal> and
378 <literal>:etags</literal> commands to generate tags files for
379 vi-style and emacs-style editors respectively.
380 See <xref linkend="ghci-commands" /> for more information.
385 GHCi now invokes <literal>print</literal> by default on the
386 result of IO actions and bindings at the prompt. This is
387 occasionally not what you want, so it can be disabled (at
388 least for bindings) with
389 <literal>:set -fno-print-bind-result</literal>. See <xref
390 linkend="ghci-stmts" />.</para>
396 <title>Libraries</title>
398 Libraries are now divided into core libraries (those that are
399 necessary to build GHC) and extra libraries. Decoupling the extra
400 libraries means that they can release independently of GHC
401 releases, and makes development builds of GHC quicker as they no
402 longer need to build unnecessary libraries.
406 The hslibs libraries have finally been removed.
411 <title>Core Libraries</title>
417 Version number 2.0 (was 1.0).
422 We now have <literal>Read</literal> and
423 <literal>Show</literal> instances for up to 15-tuples (used
424 to be up to 5-tuples).
429 New module <literal>Control.Applicative</literal> that
430 describes a structure intermediate between a functor and
431 a monad: it provides pure expressions and sequencing, but
437 <literal>Control.Exception</literal> now exports
438 <literal>bracketOnError</literal>, which behaves like
439 <literal>bracket</literal> but only runs the final
440 action if the main action raised an error.
445 There is a new module
446 <literal>Control.Monad.Instances</literal> which
447 provides <literal>Monad</literal> and
448 <literal>Functor</literal> instances for
449 <literal>((->) r)</literal> (were in
450 <literal>mtl</literal>'s
451 <literal>Control.Monad.Reader</literal>),
452 a <literal>Functor</literal> instance for
453 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
454 <literal>Control.Monad.Error</literal>) and a
455 <literal>Functor</literal> instance for
456 <literal>((,) a)</literal> (new).
461 The <literal>MonadFix</literal> instance for
462 <literal>((->) r)</literal> is now in
463 <literal>Control.Monad.Fix</literal> (was in
464 <literal>mtl</literal>'s
465 <literal>Control.Monad.Reader</literal>).
470 <literal>Control.Monad.ST</literal> now exports
471 <literal>unsafeSTToIO</literal>.
476 The <literal>HasBounds</literal> class has been removed from
477 <literal>Data.Array.Base</literal>, and its
478 <literal>bounds</literal> method is now in the
479 <literal>IArray</literal> class. The
480 <literal>MArray</literal> class
481 has also gained a method <literal>getBounds</literal>.
486 <literal>Data.Array.Base</literal> now provides an
487 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
493 <literal>Data.Array.Storable</literal> now exports a
494 function <literal>unsafeForeignPtrToStorableArray</literal>.
499 The new <literal>Data.ByteString</literal> hierarchy
500 provides time and space-efficient byte vectors.
501 The old <literal>Data.PackedString</literal> module is now
502 deprecated as a result, although there is not yet a
503 replacement if you need full unicode support.
508 <literal>GHC.Exts</literal> now provides a function
509 <literal>inline</literal> which, provided the RHS is visible
510 to the compiler, forcibly inlines its argument.
511 Otherwise, it acts like <literal>id</literal>.
512 For more details, see <xref linkend="special-ids" />.
517 <literal>GHC.Exts</literal> now provides a function
518 <literal>lazy</literal> which forces GHC to think that its
519 argument is lazy in its first argument.
520 For more details, see <xref linkend="special-ids" />.
525 <literal>Data.FiniteMap</literal> has been removed
526 (deprecated since 6.4). Use <literal>Data.Map</literal>
532 <literal>Data.Char</literal> now exports
533 <literal>isLetter</literal>,
534 <literal>isMark</literal>,
535 <literal>isNumber</literal>,
536 <literal>isPunctuation</literal>,
537 <literal>isSymbol</literal>,
538 <literal>isSeparator</literal>,
539 <literal>isAsciiUpper</literal>,
540 <literal>isAsciiLower</literal> and
541 <literal>toTitle</literal>.
542 It also exports a function
543 <literal>generalCategory</literal> that tells you the
544 category of a character in terms of a datatype
545 <literal>GeneralCategory</literal>.
550 <literal>Data.Dynamic</literal> now exports a function
551 <literal>dynTypeRep</literal>.
556 There is a new module <literal>Data.Eq</literal> which
557 just exports the <literal>Eq</literal> class.
558 Likewise, a new module <literal>Data.Ord</literal>
559 exports the <literal>Ord</literal> class, as well as the
560 handy <literal>comparing</literal> function.
565 There is a new module <literal>Data.Fixed</literal>
566 providing fixed-precision arithmetic.
571 There is a new module <literal>Data.Foldable</literal>
572 providing a class for foldable datatypes. It gives instances
573 for <literal>Maybe</literal>, <literal>[]</literal> and
574 <literal>Array i</literal>.
579 There is a new module <literal>Data.Traversable</literal>
580 providing a class for data structures that can be traversed
581 from left to right. It gives instances
582 for <literal>Maybe</literal>, <literal>[]</literal> and
583 <literal>Array i</literal>.
588 <literal>Data.FunctorM</literal> has been deprecated;
589 use <literal>Data.Foldable</literal> and
590 <literal>Data.Traversable</literal> instead.
595 The <literal>toConstr</literal> definitions for tuples in
596 <literal>Data.Generics.Instances</literal> now actually
597 evaluate their arguments to tuples before returning
603 <literal>Data.IntMap</literal> now exports
604 <literal>notMember</literal>,
605 <literal>alter</literal>,
606 <literal>mapMaybe</literal>,
607 <literal>mapMaybeWithKey</literal>,
608 <literal>mapEither</literal> and
609 <literal>mapEitherWithKey</literal>.
610 It also has <literal>Monoid</literal>,
611 <literal>Foldable</literal> and <literal>Read</literal>
617 <literal>Data.IntSet</literal> now exports
618 <literal>notMember</literal>. It also has
619 <literal>Monoid</literal> and <literal>Read</literal>
625 <literal>Data.Map</literal> now exports
626 <literal>notMember</literal>,
627 <literal>alter</literal>,
628 <literal>mapMaybe</literal>,
629 <literal>mapMaybeWithKey</literal>,
630 <literal>mapEither</literal>,
631 <literal>mapEitherWithKey</literal>,
632 <literal>minView</literal> and
633 <literal>maxView</literal>.
634 It also has <literal>Monoid</literal>,
635 <literal>Traversable</literal>, <literal>Foldable</literal>
636 and <literal>Read</literal> instances.
641 <literal>Data.Set</literal> now exports
642 <literal>notMember</literal>,
643 <literal>minView</literal> and
644 <literal>maxView</literal>.
645 It also has <literal>Monoid</literal>,
646 <literal>Foldable</literal>
647 and <literal>Read</literal> instances.
651 The old, deprecated (since 6.4) interface consisting of
652 <literal>emptySet</literal>,
653 <literal>mkSet</literal>,
654 <literal>setToList</literal>,
655 <literal>unitSet</literal>,
656 <literal>elementOf</literal>,
657 <literal>isEmptySet</literal>,
658 <literal>cardinality</literal>,
659 <literal>unionManySets</literal>,
660 <literal>minusSet</literal>,
661 <literal>mapSet</literal>,
662 <literal>intersect</literal>,
663 <literal>addToSet</literal> and
664 <literal>delFromSet</literal> has been removed.
669 <literal>Data.Monoid</literal> no longer contains the
670 <literal>Monoid</literal>
671 instances for <literal>Map</literal>,
672 <literal>IntMap</literal>, <literal>Set</literal> and
673 <literal>IntSet</literal>. They have been moved to their own
674 modules, as above. The <literal>(a -> a)</literal> instance
675 has been replaced with a
676 <literal>Monoid b => Monoid (a -> b)</literal> instance.
677 The module also now exports
678 <literal>Dual</literal>,
679 <literal>Endo</literal>,
680 <literal>All</literal>,
681 <literal>Any</literal>,
682 <literal>Sum</literal> and
683 <literal>Product</literal> types, and
684 <literal>Monoid</literal> instances for them.
689 There is a new module <literal>Data.Sequence</literal>
690 for finite sequences. The <literal>Data.Queue</literal>
691 module is now deprecated in favour of this faster, more
692 featureful replacement.
697 <literal>Data.Tree</literal> now has
698 <literal>Data</literal>, <literal>Typeable</literal>,
699 <literal>Traversable</literal> and
700 <literal>Foldable</literal>
702 <literal>Tree</literal> datatype.
707 <literal>Data.Typeable</literal> now uses
708 <option>-fallow-overlapping-instances</option>, so the
709 generic instances can be overriden for your own datatypes.
714 <literal>Debug.Trace</literal> now exports
715 <literal>traceShow</literal>, which is the same as
716 <literal>trace</literal> except its first argument can be
717 any showable thing rather than being required to be a
723 <literal>Foreign.C.Types</literal> now also defines
724 <literal>CIntPtr</literal>,
725 <literal>CUIntPtr</literal>,
726 <literal>CIntMax</literal> and
727 <literal>CUIntMax</literal>.
732 <literal>Foreign.ForeignPtr</literal> now exports
733 <literal>FinalizerEnvPtr</literal>,
734 <literal>newForeignPtrEnv</literal> and
735 <literal>addForeignPtrFinalizerEnv</literal>.
736 Together, these allow the use of finalizers which are passed
737 an additional environment parameter.
742 <literal>Foreign.Marshal.Utils</literal> no longer exports
743 the <literal>withObject</literal> function, deprecated since
744 5.04; use <literal>with</literal> instead.
749 Foreign.Ptr now also defines
750 <literal>IntPtr</literal>,
751 <literal>ptrToIntPtr</literal>,
752 <literal>intPtrToPtr</literal>,
753 <literal>WordPtr</literal>,
754 <literal>ptrToWordPtr</literal> and
755 <literal>wordPtrToPtr</literal>.
760 There are now <literal>Bounded</literal> instances for up to
761 15-tuples (used to be up to 4-tuples).
766 The <literal>Text.Html</literal> and
767 <literal>Text.Html.BlockTable</literal> modules have now
768 been removed, with the new <literal>html</literal> and
769 <literal>xhtml</literal> packages providing replacements.
774 <literal>Text.Read</literal> now exports a function
775 <literal>parens</literal> which parses a value in an
776 arbitrary number of parentheses.
781 The <literal>ForeignPtr</literal> datatype has been altered
782 to make it more efficient. There are also new functions
783 <literal>mallocPlainForeignPtr</literal> and
784 <literal>mallocPlainForeignPtrBytes</literal> which
785 do not allow you to attach a finalizer to the
786 <literal>ForeignPtr</literal>.
791 The <literal>Text.Regex</literal> and
792 <literal>Text.Regex.Posix</literal> modules have been removed.
793 Instead, use the new <literal>regex-compat</literal> package
794 for a drop-in <literal>Text.Regex</literal> replacement, or
795 the new library in the new <literal>regex-posix</literal>
807 Version number 1.1.6 (was 1.1.4).
812 Support for JHC, symmetric to the support for the other
813 implementations, has been added throughout.
818 Support for object splitting and building in-place
819 has been added throughout.
824 Added a <filename>debianTemplate</filename> directory with
825 templates for building Debian packages from Cabal packages.
830 There are now modules
831 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
832 for each of <literal>GHC</literal>, <literal>NHC</literal>,
833 <literal>Hugs</literal> and <literal>JHC</literal>.
834 The <literal>Distribution.Simple.Build</literal> and
835 <literal>Distribution.Simple.Install</literal> modules have
836 shrunk correspondingly.
841 <literal>Distribution.GetOpt</literal> is no longer a
847 <literal>Distribution.Simple</literal> exports a function
848 <literal>defaultMainArgs</literal>, which is identical to
849 <literal>defaultMain</literal> except that the arguments are
850 given as a list of strings rather than being retrieved with
851 <literal>getArgs</literal>.
856 <literal>Distribution.Simple.Configure</literal>
858 <literal>LocalBuildInfo</literal>,
860 <literal>configDependency</literal> and
861 <literal>configCompilerAux</literal>.
866 <literal>Distribution.Simple.LocalBuildInfo</literal> now
867 exports <literal>mkHaddockDir</literal>,
868 <literal>distPref</literal>,
869 <literal>srcPref</literal>,
870 <literal>autogenModulesDir</literal> and
871 <literal>mkIncludeDir</literal>.
876 <literal>Distribution.PackageDescription</literal> now
877 exports <literal>haddockName</literal>.
882 <literal>Distribution.Simple.Utils</literal> now exports
883 <literal>copyDirectoryRecursiveVerbose</literal>,
884 <literal>dirOf</literal>,
885 <literal>distPref</literal>,
886 <literal>haddockPref</literal> and
887 <literal>srcPref</literal>.
888 It no longer exports <literal>mkGHCiLibName</literal>.
895 <title>haskell98</title>
899 No change (version 1.0).
906 <title>parsec</title>
910 Version number 2.0 (was 1.0).
922 <title>readline</title>
926 No change (version 1.0).
933 <title>regex-base</title>
942 New library that provides common functions for different
950 <title>regex-compat</title>
959 New package providing a replacement
960 <literal>Text.Regex</literal> module.
967 <title>regex-posix</title>
976 A new package providing POSIX regexes.
987 Version number 2.0 (was 1.0).
992 A new module <literal>Control.Monad.STM</literal>
994 <literal>MonadPlus</literal> instance for
995 <literal>STM</literal> and the function
996 <literal>check</literal> (both used to be in
997 <literal>Control.Concurrent.STM</literal>).
999 <literal>STM</literal>,
1000 <literal>atomically</literal>,
1001 <literal>retry</literal>,
1002 <literal>orElse</literal> and
1003 <literal>catchSTM</literal>.
1009 <literal>Control.Concurrent.STM.TArray</literal> defines
1010 <literal>TArray</literal>, a transactional array, and makes
1011 it an instance of <literal>MArray</literal>.
1016 <literal>Control.Concurrent.STM.TChan</literal> now provides
1017 a function <literal>newTChanIO</literal>, which allows
1018 <literal>TChan</literal>s to be created in the IO monad.
1019 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1020 provides <literal>newTMVarIO</literal> and
1021 <literal>newEmptyTMVarIO</literal>, and
1022 <literal>Control.Concurrent.STM.TVar</literal> exports
1023 <literal>newTVarIO</literal>.
1028 <literal>Control.Concurrent.STM.TVar</literal> exports
1029 <literal>registerDelay</literal>.
1034 The <literal>Control.Concurrent.STM</literal> module has been
1035 updated to re-export all the new modules.
1042 <title>template-haskell</title>
1046 Version number 2.0 (was 1.0).
1051 A <literal>Show</literal> instance is now derived for
1052 <literal>Info</literal>, <literal>Fixity</literal> and
1053 <literal>FixityDirection</literal> in
1054 <literal>Language.Haskell.TH.Syntax</literal>.
1059 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1060 a type <literal>PkgName</literal> and functions
1061 <literal>mkPkgName</literal> and
1062 <literal>pkgString</literal>
1063 for dealing with package names.
1068 The <literal>patGE</literal> function in
1069 <literal>Language.Haskell.TH.Lib</literal> now takes the
1070 final expression separately to the list of statements
1071 rather than splitting it off itself.
1082 No change (version 1.0).
1089 <title>Win32</title>
1093 Version number 2.0 (was 1.0).
1098 Now maintained by Esa Ilari Vuokko.
1103 There is a new module
1104 <literal>System.Win32.Console</literal>
1105 providing an interface to the Windows Console API.
1110 There is a new module
1111 <literal>System.Win32.DebugApi</literal>
1112 providing an interface to the Windows DebugApi.
1117 There is a new module
1118 <literal>System.Win32.FileMapping</literal>
1119 for working with memory-mapped files.
1124 There is a new module
1125 <literal>System.Win32.SimpleMAPI</literal>
1126 for using the Windows mail API.
1131 There is a new module
1132 <literal>System.Win32.Time</literal>
1133 for using the Windows time API.
1138 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1139 <literal>Graphics.Win32.Misc</literal> to
1140 <literal>System.Win32.Types</literal>.
1145 <literal>System.Win32.File</literal> has a new
1146 function <literal>getFileInformationByHandle</literal>
1147 and associated data types.
1152 <literal>System.Win32.Info</literal> has a new
1153 function <literal>getSystemInfo</literal> and associated
1159 <literal>System.Win32.Process</literal> now has many more
1165 <literal>System.Win32.Types</literal> has new types
1166 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1167 and <literal>SIZE_T</literal>. It also has new helper
1168 functions <literal>ddwordToDwords</literal> and
1169 <literal>dwordsToDdword</literal> to split and combine
1170 ddwords into high and low components.
1175 <literal>System.Win32</literal> re-exports
1176 <literal>System.Win32.FileMapping</literal>,
1177 <literal>System.Win32.Time</literal>
1178 and <literal>System.Win32.Console</literal>.
1186 <title>Extra Libraries</title>
1192 Version number 2.0 (was 1.0).
1197 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1198 Its <literal>Phase</literal> and <literal>Duration</literal>
1199 exports are now exported by
1200 <literal>Sound.ALUT.Loaders</literal> and its
1201 <literal>helloWorld</literal>,
1202 <literal>sine</literal>,
1203 <literal>square</literal>,
1204 <literal>sawtooth</literal>,
1205 <literal>impulse</literal> and
1206 <literal>whiteNoise</literal>
1207 exports are now constructors of the
1208 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1216 <title>arrows</title>
1220 Version number 0.2 (was 0.1).
1225 <literal>Control.Sequence</literal> has been removed in
1226 favour of the new <literal>Control.Applicative</literal>
1227 module in <literal>base</literal>.
1243 <literal>cgi</literal> is a new package, developing on
1244 what used to be <literal>Network.CGI</literal> in the
1245 <literal>network</literal> package.
1256 Version number 5.3 (was 5.2).
1261 <literal>Data.Graph.Inductive.Graph</literal> no longer
1262 exports <literal>UContext</literal>.
1267 <literal>Data.Graph.Inductive.Graph</literal> now exports
1268 <literal>delLEdge</literal>.
1279 Version number remains 2.0.
1284 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1285 <literal>DisplayMode</literal> has a new constructor
1286 <literal>WithAuxBuffers</literal> and
1287 <literal>DisplayCapability</literal> has a new constructor
1288 <literal>DisplayAux</literal>. These represent freeglut-only
1294 There are new examples in
1295 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1296 <filename>RedBook/AAIndex.hs</filename>,
1297 <filename>RedBook/AARGB.hs</filename>,
1298 <filename>RedBook/AccAnti.hs</filename>,
1299 <filename>RedBook/AccPersp.hs</filename>,
1300 <filename>RedBook/Alpha3D.hs</filename>,
1301 <filename>RedBook/DOF.hs</filename>,
1302 <filename>RedBook/FogIndex.hs</filename>,
1303 <filename>RedBook/Multisamp.hs</filename>,
1304 <filename>RedBook/PointP.hs</filename>,
1305 <filename>RedBook/PolyOff.hs</filename>,
1306 <filename>RedBook/Stencil.hs</filename>,
1307 <filename>RedBook/Stroke.hs</filename> and
1308 <filename>RedBook/Torus.hs</filename>,
1310 <filename>RedBook/Font.hs</filename> and
1311 <filename>RedBook/Histogram.hs</filename> have been
1319 <title>haskell-src</title>
1323 No change (version 1.0).
1334 No change (version 3.1).
1350 <literal>html</literal> is a new package, developing on
1351 what used to be <literal>Text.Html</literal> and
1352 <literal>Text.Html.BlockTable</literal> in the
1353 <literal>base</literal> package.
1358 <literal>Text.Html.BlockTable</literal> exports a new
1359 function <literal>empty</literal>.
1366 <title>HUnit</title>
1370 No change (version 1.1).
1381 No change (version 1.0).
1388 <title>network</title>
1392 Version number 2.0 (was 1.0).
1397 <literal>Network.CGI</literal> has been removed; use the
1398 <literal>cgi</literal> package instead.
1403 <literal>Network.BSD</literal> no longer exports
1404 <literal>symlink</literal> or <literal>readlink</literal>;
1406 <literal>System.Posix.Files.createSymbolicLink</literal> and
1407 <literal>System.Posix.Files.readSymbolicLink</literal>
1413 <literal>Network.BSD</literal> now exports
1414 <literal>defaultProtocol</literal>.
1419 <literal>Network.Socket.SocketStatus</literal> now has a
1420 constructor <literal>ConvertedToHandle</literal> for sockets
1421 that have been converted to handles.
1426 <literal>Network.Socket.Family</literal> now has the
1427 following additional constructors:
1428 <literal>AF_NETROM</literal>,
1429 <literal>AF_BRIDGE</literal>,
1430 <literal>AF_ATMPVC</literal>,
1431 <literal>AF_ROSE</literal>,
1432 <literal>AF_NETBEUI</literal>,
1433 <literal>AF_SECURITY</literal>,
1434 <literal>AF_PACKET</literal>,
1435 <literal>AF_ASH</literal>,
1436 <literal>AF_ECONET</literal>,
1437 <literal>AF_ATMSVC</literal>,
1438 <literal>AF_IRDA</literal>,
1439 <literal>AF_PPPOX</literal>,
1440 <literal>AF_WANPIPE</literal> and
1441 <literal>AF_BLUETOOTH</literal>.
1446 In <literal>Network.URI</literal>,
1447 <literal>parseabsoluteURI</literal> has been deprecated with
1448 a new function <literal>parseAbsoluteURI</literal> taking
1456 <title>ObjectIO</title>
1460 No change (version 1.0).
1467 <title>OpenAL</title>
1471 Version number 1.3 (was 1.2).
1483 <title>OpenGL</title>
1487 Version number 2.1 (was 2.0).
1499 <title>QuickCheck</title>
1503 No change (version 1.0).
1519 <literal>time</literal> is a new package, for dealing with
1520 dates, times and time intervals.
1531 Version number 1.2 (was 1.1).
1536 In <literal>Graphics.X11.Xlib.Types</literal>,
1537 <literal>XGCValues</literal> has been renamed
1538 <literal>GCValues</literal> and
1539 <literal>XSetWindowAttributes</literal> has been renamed
1540 <literal>SetWindowAttributes</literal>.
1545 In <literal>Graphics.X11.Xlib.Misc</literal>,
1546 <literal>allocaXSetWindowAttributes</literal> has been
1547 renamed <literal>allocaSetWindowAttributes</literal>.
1552 The <literal>FontStruct</literal> type has moved from
1553 <literal>Graphics.X11.Xlib.Types</literal> to
1554 <literal>Graphics.X11.Xlib.Font</literal>.
1560 <literal>Point</literal>,
1561 <literal>Rectangle</literal>,
1562 <literal>Arc</literal>,
1563 <literal>Segment</literal> and
1564 <literal>Color</literal> types in
1565 <literal>Graphics.X11.Xlib.Types</literal>
1566 are now proper datatypes rather than synonyms for tuples.
1567 They all have a <literal>Storable</literal> instance.
1572 The <literal>Byte</literal> and <literal>Short</literal>
1573 types from <literal>Graphics.X11.Xlib.Types</literal> have
1575 The following type synonyms, which had already been marked
1576 "Backwards compatibility", have also been removed:
1577 <literal>ListPoint</literal>,
1578 <literal>ListRectangle</literal>,
1579 <literal>ListArc</literal>,
1580 <literal>ListSegment</literal> and
1581 <literal>ListColor</literal>.
1586 <literal>Eq</literal>,
1587 <literal>Ord</literal>,
1588 <literal>Show</literal>,
1589 <literal>Typeable</literal> and
1590 <literal>Data</literal> are now derived for:
1591 <literal>XEvent</literal>,
1592 <literal>FdSet</literal> and
1593 <literal>TimeZone</literal> in
1594 <literal>Graphics.X11.Xlib.Event</literal>,
1595 <literal>FontStruct</literal> in
1596 <literal>Graphics.X11.Xlib.Font</literal>,
1597 <literal>XErrorEvent</literal>,
1598 <literal>XComposeStatus</literal> and
1599 <literal>XTextProperty</literal> in
1600 <literal>Graphics.X11.Xlib.Misc</literal>,
1601 <literal>Region</literal> in
1602 <literal>Graphics.X11.Xlib.Region</literal>,
1603 <literal>Display</literal>,
1604 <literal>Screen</literal>,
1605 <literal>Visual</literal>,
1606 <literal>GC</literal>,
1607 <literal>GCValues</literal>,
1608 <literal>SetWindowAttributes</literal>,
1609 <literal>Point</literal>,
1610 <literal>Rectangle</literal>,
1611 <literal>Arc</literal>,
1612 <literal>Segment</literal> and
1613 <literal>Color</literal> in
1614 <literal>Graphics.X11.Xlib.Types</literal>.
1621 <title>xhtml</title>
1630 <literal>xhtml</literal> is a new package, developing on
1631 what used to be <literal>Text.Html</literal> and
1632 <literal>Text.Html.BlockTable</literal> in the
1633 <literal>base</literal> package.
1641 <title>GHC As A Library</title>
1646 The internal modules of GHC are now available as a library, package
1647 name <literal>ghc</literal>.
1648 The interface has not been designed with use by other programs
1649 in mind, so expect the API to vary radically in future
1653 An introduction to using the library can be found
1654 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1659 <title>Internal changes</title>
1663 GHC development now has its own integrated
1664 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1670 GHC has now moved to darcs. See
1672 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1673 wiki</ulink> for more details. The sources have moved around a
1674 bit within the tree as a result, most notably the GHC sources
1675 are no longer kept within a <filename>ghc/</filename>
1681 The native code generator is now capable of compiling loops,
1682 which gets us a big step closer to being able to compile
1683 entirely without gcc on well-supported arches.