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; see <xref linkend="impredicative-polymorphism" />.
25 There are significant changes to the way scoped type variables work;
26 see <xref linkend="scoped-type-variables" />.
27 (<ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
28 gives some background.)
33 GHC now supports bang patterns to require a function is strict
34 in a given argument, e.g.
36 f (!x, y) = [x,y]</programlisting>
39 f (x, y) | x `seq` False = undefined
40 | otherwise = [x,y]</programlisting>
41 See <xref linkend="sec-bang-patterns" /> for more details.
46 The restriction that you cannot use two packages together if
47 they contain a module with the same name has been removed.
48 In implementation terms, the package name is now included in
49 every exported symbol name in the object file, so that
50 modules with the same name in different packages do not
51 clash. See <xref linkend="package-overlaps" />.
56 GHC now treats source files as UTF-8 (ASCII is a strict
57 subset of UTF-8, so ASCII source files will continue to
58 work as before). However, invalid UTF-8 sequences are
59 ignored in comments, so ASCII code with comments in, for
60 example, Latin-1 will also work.
65 GADTs can now use record syntax. Also, if the datatype could
66 have been declared with Haskell 98 syntax then deriving
67 clauses are permitted. For more info see <xref linkend="gadt" />.
72 There is a new pragma <literal>LANGUAGE</literal> which allows
73 extensions to be specified portably, i.e. without having to
74 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
75 GHC-specific options. The arguments to the pragma are the same
76 extensions that Cabal knows about. More info in
77 <xref linkend="language-pragma" />.
82 When you use <command>ghc --make</command>, GHC will now take
83 the executable filename from the name of the file containing
84 the <literal>Main</literal> module rather than using
85 <filename>a.out</filename>. The <filename>.exe</filename>
86 extension is appended on Windows, and it can of course be
87 overridden with <option>-o</option>.
92 GHC's garbage collector now deals more intelligently with
93 mutable data, so you mostly no longer need to worry about GC
94 performance when a lot of memory is taken up by
95 <literal>STArray</literal>s, <literal>IOArray</literal>s,
96 <literal>STRef</literal>s or <literal>IORef</literal>s.
98 <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
103 GHC now allows more generalisation when typing mutually
104 recursive bindings, resulting in more programs being accepted.
105 See <xref linkend="typing-binds" /> for more details.
110 The rules for instance declarations have been further relaxed.
111 You are now permitted to have instances whose heads contain
112 only type variables, e.g.
114 instance C a</programlisting>
115 and instances whose constraints are not only type variables,
118 instance C2 Int a => C3 [a] b</programlisting>
119 For more details, see <xref linkend="instance-rules" />.
124 The following flags (and, where appropriate, their inverses)
125 used to be static (can only be given on
126 the command line) but are now dynamic (can also be given in
127 a <literal>GHC_OPTIONS</literal> pragma or with
128 <literal>:set</literal> in GHCi):
130 <option>-hcsuf</option>,
131 <option>-hidir</option>,
132 <option>-hisuf</option>,
134 <option>-odir</option>,
135 <option>-ohi</option>,
136 <option>-osuf</option>,
137 <option>-keep-hc-file</option>,
138 <option>-keep-s-file</option>,
139 <option>-keep-raw-s-file</option>,
140 <option>-keep-tmp-files</option>,
141 <option>-tmpdir</option>,
143 <option>-package</option>,
144 <option>-hide-package</option>,
145 <option>-ignore-package</option>,
146 <option>-package-conf</option>,
147 <option>-no-user-package-conf</option>,
148 <option>-fcontext-stack</option>,
149 <option>-fexcess-precision</option>,
150 <option>-fignore-asserts</option>,
151 <option>-fignore-interface-pragmas</option>,
153 <option>-framework</option>,
154 <option>-framework-path</option>,
157 <option>-main-is</option>,
158 <option>-no-hs-main</option>,
159 <option>-split-objs</option>,
160 <option>-pgmL</option>,
161 <option>-pgmP</option>,
162 <option>-pgmc</option>,
163 <option>-pgma</option>,
164 <option>-pgml</option>,
165 <option>-pgmdll</option>,
166 <option>-pgmdep</option>,
167 <option>-pgmF</option>,
168 <option>-optl</option>,
169 <option>-optdll</option>,
170 <option>-optdep</option>,
171 <option>-fno-asm-mangling</option>.
172 See <xref linkend="static-dynamic-flags" /> for more on
173 the meaning of static and dynamic flags, and
174 <xref linkend="flag-reference" /> for more on the flags
180 There is a new flag <option>-x</option> for overriding the
181 default behaviour for source files; see
182 <xref linkend="overriding-suffixes" /> details.
188 <option>-no-recomp</option><indexterm><primary><option>-no-recomp</option></primary></indexterm>
190 <option>-fforce-recomp</option><indexterm><primary><option>-fforce-recomp</option></primary></indexterm>.
191 (the old name is still accepted for backwards compatibility,
192 but will be removed in the future).
197 The <option>-fglobalise-toplev-names</option>
198 flag has been removed.
203 The <option>-fallow-overlapping-instances</option> flag is
204 implied by the <option>-fallow-incoherent-instances</option>
210 The directory that the <filename>foo_stub.c</filename> and
211 <filename>foo_stub.h</filename> files are put in can now be
212 controlled with the <option>-stubdir</option> flag.
213 See <xref linkend="options-output" /> for more details.
218 When the <option>-fno-implicit-prelude</option> is given,
219 the equality test performed when pattern matching against an
220 overloaded numeric literal now uses the
221 <literal>(==)</literal> in scope, rather than the one from
222 <literal>Prelude</literal>. Likewise, the subtraction and
223 inequality test performed when pattern matching against
224 <literal>n+k</literal> patterns uses the
225 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
230 Another change to <option>-fno-implicit-prelude</option>:
231 with the exception of the arrow syntax, the types of
232 functions used by sugar (such as do notation, numeric
233 literal patterns) need not match the types of the
234 <literal>Prelude</literal> functions normally used.
239 The <literal>InstalledPackageInfo</literal> syntax has
241 instead of <literal>extra-libs</literal> we have
242 <literal>extra-libraries</literal>,
243 instead of <literal>extra-hugs-opts</literal> we have
244 <literal>hugs-options</literal>,
245 instead of <literal>extra-cc-opts</literal> we have
246 <literal>cc-options</literal>,
247 instead of <literal>extra-ld-opts</literal> we have
248 <literal>ld-options</literal>,
249 and instead of <literal>extra-frameworks</literal> we have
250 <literal>frameworks</literal>.
251 See <xref linkend="installed-pkg-info" /> for details.
256 If you <literal>newtype</literal> the IO monad, e.g.
258 newtype MyIO a = MyIO (IO a)</programlisting>
259 then GHC will now allow you to have FFI calls return
260 <literal>MyIO <replaceable>t</replaceable></literal>
262 <literal>IO <replaceable>t</replaceable></literal>.
263 See <xref linkend="ffi-newtype-io"/>
266 <listitem> <para> GHC's mechansim for deriving user-defined classes
267 for newtypes has been further generalised, to multi-parameter type
268 classes and higher-kinded types. See <xref
269 linkend="newtype-deriving"/>.
273 By default, pattern bindings in GHC are now monomorphic.
274 This means that some valid Haskell 98 programs will get
275 rejected, but we believe they will be few in number.
276 To revert to the old behaviour use the
277 <option>-fno-mono-pat-binds</option> flag.
278 More details are in <xref linkend="options-language" />.
283 GHCi already does more defaulting than Haskell 98 so that, for
284 example, <literal>reverse []</literal> shows a result rather
285 than giving an ambiguous type variable error. There is now a
286 flag <option>-fextended-default-rules</option> to use these
287 defaulting rules with GHC too.
288 More details are in <xref linkend="extended-default-rules" />.
293 You can now give both class and instance declarations in
294 <filename>.hs-boot</filename> files. More details in
295 <xref linkend="mutual-recursion" />.
300 Linear implicit parameters have been scheduled for removal for some
301 time. In 6.6 we've removed them from the user manual, and they may
302 well disappear from the compiler itself in 6.6.1.
307 If the program is idle for a certain amount of time then GHC
308 will now take the opportunity to do a major garbage collection.
309 The amount of idle time that is required before that happens
310 is controlled by the new <literal>-I</literal> RTS flag.
311 There is more detail in <xref linkend="rts-options-gc" />.
316 It is now possible to control the frequency that the RTS clock
317 ticks at with the new <literal>-V</literal> RTS flag. This is
318 normally handled automatically by other flags, but this flag
319 is needed if you want to increase the resolution of the time
321 For more details see <xref linkend="rts-options-misc" />.
326 The old syntax for FFI declarations (deprecated since 5.04)
327 is no longer accepted.
332 The <option>-split-objs</option> flag, which when used to compile
333 libraries means executables using the library will be smaller,
334 can now be used with <option>--make</option> and hence
335 can be used by cabal.
336 See <xref linkend="options-linker" /> for more information.
341 Template Haskell used to have limited support for type signatures in
342 patterns, but since that design is in flux for Haskell (let alone
343 Template Haskell), we've removed type signatures in patterns from
349 GHC now supports postfix operators, as a simple generalisation of
350 left sections (<xref linkend="postfix-operators"/>).
355 Parallel arrays, as enabled by <literal>-fparr</literal>, no
356 longer work. They'll be coming back shortly, in full glory.
363 <title>GHCi changes</title>
368 GHCi now allows tab completion of in-scope names and modules
369 on platforms that use readline (i.e. not Windows).
374 GHCi now has a <literal>:main</literal> command that allows
375 you to call the <literal>main</literal> function with
376 command-line arguments.
377 See <xref linkend="ghci-commands" /> for more information.
382 GHCi now has <literal>:ctags</literal> and
383 <literal>:etags</literal> commands to generate tags files for
384 vi-style and emacs-style editors respectively.
385 See <xref linkend="ghci-commands" /> for more information.
390 GHCi now invokes <literal>print</literal> by default on the
391 result of IO actions and bindings at the prompt. This is
392 occasionally not what you want, so it can be disabled (at
393 least for bindings) with
394 <literal>:set -fno-print-bind-result</literal>. See <xref
395 linkend="ghci-stmts" />.</para>
401 <title>Libraries</title>
403 Libraries are now divided into core libraries (those that are
404 necessary to build GHC) and extra libraries. Decoupling the extra
405 libraries means that they can release independently of GHC
406 releases, and makes development builds of GHC quicker as they no
407 longer need to build unnecessary libraries.
411 The hslibs libraries have finally been removed.
416 <title>Core Libraries</title>
422 Version number 2.0 (was 1.0).
427 We now have <literal>Read</literal> and
428 <literal>Show</literal> instances for up to 15-tuples (used
429 to be up to 5-tuples).
434 New module <literal>Control.Applicative</literal> that
435 describes a structure intermediate between a functor and
436 a monad: it provides pure expressions and sequencing, but
442 <literal>Control.Exception</literal> now exports
443 <literal>bracketOnError</literal>, which behaves like
444 <literal>bracket</literal> but only runs the final
445 action if the main action raised an error.
450 There is a new module
451 <literal>Control.Monad.Instances</literal> which
452 provides <literal>Monad</literal> and
453 <literal>Functor</literal> instances for
454 <literal>((->) r)</literal> (were in
455 <literal>mtl</literal>'s
456 <literal>Control.Monad.Reader</literal>),
457 a <literal>Functor</literal> instance for
458 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
459 <literal>Control.Monad.Error</literal>) and a
460 <literal>Functor</literal> instance for
461 <literal>((,) a)</literal> (new).
466 The <literal>MonadFix</literal> instance for
467 <literal>((->) r)</literal> is now in
468 <literal>Control.Monad.Fix</literal> (was in
469 <literal>mtl</literal>'s
470 <literal>Control.Monad.Reader</literal>).
475 <literal>Control.Monad.ST</literal> now exports
476 <literal>unsafeSTToIO</literal>.
481 The <literal>HasBounds</literal> class has been removed from
482 <literal>Data.Array.Base</literal>, and its
483 <literal>bounds</literal> method is now in the
484 <literal>IArray</literal> class. The
485 <literal>MArray</literal> class
486 has also gained a method <literal>getBounds</literal>.
491 <literal>Data.Array.Base</literal> now provides an
492 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
498 <literal>Data.Array.Storable</literal> now exports a
499 function <literal>unsafeForeignPtrToStorableArray</literal>.
504 The new <literal>Data.ByteString</literal> hierarchy
505 provides time and space-efficient byte vectors.
506 The old <literal>Data.PackedString</literal> module is now
507 deprecated as a result, although there is not yet a
508 replacement if you need full unicode support.
513 <literal>GHC.Exts</literal> now provides a function
514 <literal>inline</literal> which, provided the RHS is visible
515 to the compiler, forcibly inlines its argument.
516 Otherwise, it acts like <literal>id</literal>.
517 For more details, see <xref linkend="special-ids" />.
522 <literal>GHC.Exts</literal> now provides a function
523 <literal>lazy</literal> which forces GHC to think that its
524 argument is lazy in its first argument.
525 For more details, see <xref linkend="special-ids" />.
530 <literal>Data.FiniteMap</literal> has been removed
531 (deprecated since 6.4). Use <literal>Data.Map</literal>
537 <literal>Data.Char</literal> now exports
538 <literal>isLetter</literal>,
539 <literal>isMark</literal>,
540 <literal>isNumber</literal>,
541 <literal>isPunctuation</literal>,
542 <literal>isSymbol</literal>,
543 <literal>isSeparator</literal>,
544 <literal>isAsciiUpper</literal>,
545 <literal>isAsciiLower</literal> and
546 <literal>toTitle</literal>.
547 It also exports a function
548 <literal>generalCategory</literal> that tells you the
549 category of a character in terms of a datatype
550 <literal>GeneralCategory</literal>.
555 <literal>Data.Dynamic</literal> now exports a function
556 <literal>dynTypeRep</literal>.
561 There is a new module <literal>Data.Eq</literal> which
562 just exports the <literal>Eq</literal> class.
563 Likewise, a new module <literal>Data.Ord</literal>
564 exports the <literal>Ord</literal> class, as well as the
565 handy <literal>comparing</literal> function.
570 There is a new module <literal>Data.Fixed</literal>
571 providing fixed-precision arithmetic.
576 There is a new module <literal>Data.Foldable</literal>
577 providing a class for foldable datatypes. It gives instances
578 for <literal>Maybe</literal>, <literal>[]</literal> and
579 <literal>Array i</literal>.
584 There is a new module <literal>Data.Traversable</literal>
585 providing a class for data structures that can be traversed
586 from left to right. It gives instances
587 for <literal>Maybe</literal>, <literal>[]</literal> and
588 <literal>Array i</literal>.
593 <literal>Data.FunctorM</literal> has been deprecated;
594 use <literal>Data.Foldable</literal> and
595 <literal>Data.Traversable</literal> instead.
600 The <literal>toConstr</literal> definitions for tuples in
601 <literal>Data.Generics.Instances</literal> now actually
602 evaluate their arguments to tuples before returning
608 <literal>Data.IntMap</literal> now exports
609 <literal>notMember</literal>,
610 <literal>alter</literal>,
611 <literal>mapMaybe</literal>,
612 <literal>mapMaybeWithKey</literal>,
613 <literal>mapEither</literal> and
614 <literal>mapEitherWithKey</literal>.
615 It also has <literal>Monoid</literal>,
616 <literal>Foldable</literal> and <literal>Read</literal>
622 <literal>Data.IntSet</literal> now exports
623 <literal>notMember</literal>. It also has
624 <literal>Monoid</literal> and <literal>Read</literal>
630 <literal>Data.Map</literal> now exports
631 <literal>notMember</literal>,
632 <literal>alter</literal>,
633 <literal>mapMaybe</literal>,
634 <literal>mapMaybeWithKey</literal>,
635 <literal>mapEither</literal>,
636 <literal>mapEitherWithKey</literal>,
637 <literal>minView</literal> and
638 <literal>maxView</literal>.
639 It also has <literal>Monoid</literal>,
640 <literal>Traversable</literal>, <literal>Foldable</literal>
641 and <literal>Read</literal> instances.
646 <literal>Data.Set</literal> now exports
647 <literal>notMember</literal>,
648 <literal>minView</literal> and
649 <literal>maxView</literal>.
650 It also has <literal>Monoid</literal>,
651 <literal>Foldable</literal>
652 and <literal>Read</literal> instances.
656 The old, deprecated (since 6.4) interface consisting of
657 <literal>emptySet</literal>,
658 <literal>mkSet</literal>,
659 <literal>setToList</literal>,
660 <literal>unitSet</literal>,
661 <literal>elementOf</literal>,
662 <literal>isEmptySet</literal>,
663 <literal>cardinality</literal>,
664 <literal>unionManySets</literal>,
665 <literal>minusSet</literal>,
666 <literal>mapSet</literal>,
667 <literal>intersect</literal>,
668 <literal>addToSet</literal> and
669 <literal>delFromSet</literal> has been removed.
674 <literal>Data.Monoid</literal> no longer contains the
675 <literal>Monoid</literal>
676 instances for <literal>Map</literal>,
677 <literal>IntMap</literal>, <literal>Set</literal> and
678 <literal>IntSet</literal>. They have been moved to their own
679 modules, as above. The <literal>(a -> a)</literal> instance
680 has been replaced with a
681 <literal>Monoid b => Monoid (a -> b)</literal> instance.
682 The module also now exports
683 <literal>Dual</literal>,
684 <literal>Endo</literal>,
685 <literal>All</literal>,
686 <literal>Any</literal>,
687 <literal>Sum</literal> and
688 <literal>Product</literal> types, and
689 <literal>Monoid</literal> instances for them.
694 There is a new module <literal>Data.Sequence</literal>
695 for finite sequences. The <literal>Data.Queue</literal>
696 module is now deprecated in favour of this faster, more
697 featureful replacement.
702 <literal>Data.Tree</literal> now has
703 <literal>Data</literal>, <literal>Typeable</literal>,
704 <literal>Traversable</literal> and
705 <literal>Foldable</literal>
707 <literal>Tree</literal> datatype.
712 <literal>Data.Typeable</literal> now uses
713 <option>-fallow-overlapping-instances</option>, so the
714 generic instances can be overriden for your own datatypes.
719 <literal>Debug.Trace</literal> now exports
720 <literal>traceShow</literal>, which is the same as
721 <literal>trace</literal> except its first argument can be
722 any showable thing rather than being required to be a
728 <literal>Foreign.C.Types</literal> now also defines
729 <literal>CIntPtr</literal>,
730 <literal>CUIntPtr</literal>,
731 <literal>CIntMax</literal> and
732 <literal>CUIntMax</literal>.
737 <literal>Foreign.ForeignPtr</literal> now exports
738 <literal>FinalizerEnvPtr</literal>,
739 <literal>newForeignPtrEnv</literal> and
740 <literal>addForeignPtrFinalizerEnv</literal>.
741 Together, these allow the use of finalizers which are passed
742 an additional environment parameter.
747 <literal>Foreign.Marshal.Utils</literal> no longer exports
748 the <literal>withObject</literal> function, deprecated since
749 5.04; use <literal>with</literal> instead.
754 Foreign.Ptr now also defines
755 <literal>IntPtr</literal>,
756 <literal>ptrToIntPtr</literal>,
757 <literal>intPtrToPtr</literal>,
758 <literal>WordPtr</literal>,
759 <literal>ptrToWordPtr</literal> and
760 <literal>wordPtrToPtr</literal>.
765 There are now <literal>Bounded</literal> instances for up to
766 15-tuples (used to be up to 4-tuples).
771 The <literal>Text.Html</literal> and
772 <literal>Text.Html.BlockTable</literal> modules have now
773 been removed, with the new <literal>html</literal> and
774 <literal>xhtml</literal> packages providing replacements.
779 <literal>Text.Read</literal> now exports a function
780 <literal>parens</literal> which parses a value in an
781 arbitrary number of parentheses.
786 The <literal>ForeignPtr</literal> datatype has been altered
787 to make it more efficient. There are also new functions
788 <literal>mallocPlainForeignPtr</literal> and
789 <literal>mallocPlainForeignPtrBytes</literal> which
790 do not allow you to attach a finalizer to the
791 <literal>ForeignPtr</literal>.
796 The <literal>Text.Regex</literal> and
797 <literal>Text.Regex.Posix</literal> modules have been removed.
798 Instead, use the new <literal>regex-compat</literal> package
799 for a drop-in <literal>Text.Regex</literal> replacement, or
800 the new library in the new <literal>regex-posix</literal>
812 Version number 1.1.6 (was 1.1.4).
817 Support for JHC, symmetric to the support for the other
818 implementations, has been added throughout.
823 Support for object splitting and building in-place
824 has been added throughout.
829 Added a <filename>debianTemplate</filename> directory with
830 templates for building Debian packages from Cabal packages.
835 There are now modules
836 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
837 for each of <literal>GHC</literal>, <literal>NHC</literal>,
838 <literal>Hugs</literal> and <literal>JHC</literal>.
839 The <literal>Distribution.Simple.Build</literal> and
840 <literal>Distribution.Simple.Install</literal> modules have
841 shrunk correspondingly.
846 <literal>Distribution.GetOpt</literal> is no longer a
852 <literal>Distribution.Simple</literal> exports a function
853 <literal>defaultMainArgs</literal>, which is identical to
854 <literal>defaultMain</literal> except that the arguments are
855 given as a list of strings rather than being retrieved with
856 <literal>getArgs</literal>.
861 <literal>Distribution.Simple.Configure</literal>
863 <literal>LocalBuildInfo</literal>,
865 <literal>configDependency</literal> and
866 <literal>configCompilerAux</literal>.
871 <literal>Distribution.Simple.LocalBuildInfo</literal> now
872 exports <literal>mkHaddockDir</literal>,
873 <literal>distPref</literal>,
874 <literal>srcPref</literal>,
875 <literal>autogenModulesDir</literal> and
876 <literal>mkIncludeDir</literal>.
881 <literal>Distribution.PackageDescription</literal> now
882 exports <literal>haddockName</literal>.
887 <literal>Distribution.Simple.Utils</literal> now exports
888 <literal>copyDirectoryRecursiveVerbose</literal>,
889 <literal>dirOf</literal>,
890 <literal>distPref</literal>,
891 <literal>haddockPref</literal> and
892 <literal>srcPref</literal>.
893 It no longer exports <literal>mkGHCiLibName</literal>.
900 <title>haskell98</title>
904 No change (version 1.0).
911 <title>parsec</title>
915 Version number 2.0 (was 1.0).
927 <title>readline</title>
931 No change (version 1.0).
938 <title>regex-base</title>
947 New library that provides common functions for different
955 <title>regex-compat</title>
964 New package providing a replacement
965 <literal>Text.Regex</literal> module.
972 <title>regex-posix</title>
981 A new package providing POSIX regexes.
992 Version number 2.0 (was 1.0).
997 A new module <literal>Control.Monad.STM</literal>
999 <literal>MonadPlus</literal> instance for
1000 <literal>STM</literal> and the function
1001 <literal>check</literal> (both used to be in
1002 <literal>Control.Concurrent.STM</literal>).
1004 <literal>STM</literal>,
1005 <literal>atomically</literal>,
1006 <literal>retry</literal>,
1007 <literal>orElse</literal> and
1008 <literal>catchSTM</literal>.
1014 <literal>Control.Concurrent.STM.TArray</literal> defines
1015 <literal>TArray</literal>, a transactional array, and makes
1016 it an instance of <literal>MArray</literal>.
1021 <literal>Control.Concurrent.STM.TChan</literal> now provides
1022 a function <literal>newTChanIO</literal>, which allows
1023 <literal>TChan</literal>s to be created in the IO monad.
1024 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1025 provides <literal>newTMVarIO</literal> and
1026 <literal>newEmptyTMVarIO</literal>, and
1027 <literal>Control.Concurrent.STM.TVar</literal> exports
1028 <literal>newTVarIO</literal>.
1033 <literal>Control.Concurrent.STM.TVar</literal> exports
1034 <literal>registerDelay</literal>.
1039 The <literal>Control.Concurrent.STM</literal> module has been
1040 updated to re-export all the new modules.
1047 <title>template-haskell</title>
1051 Version number 2.0 (was 1.0).
1056 A <literal>Show</literal> instance is now derived for
1057 <literal>Info</literal>, <literal>Fixity</literal> and
1058 <literal>FixityDirection</literal> in
1059 <literal>Language.Haskell.TH.Syntax</literal>.
1064 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1065 a type <literal>PkgName</literal> and functions
1066 <literal>mkPkgName</literal> and
1067 <literal>pkgString</literal>
1068 for dealing with package names.
1073 The <literal>patGE</literal> function in
1074 <literal>Language.Haskell.TH.Lib</literal> now takes the
1075 final expression separately to the list of statements
1076 rather than splitting it off itself.
1087 No change (version 1.0).
1094 <title>Win32</title>
1098 Version number 2.0 (was 1.0).
1103 Now maintained by Esa Ilari Vuokko.
1108 There is a new module
1109 <literal>System.Win32.Console</literal>
1110 providing an interface to the Windows Console API.
1115 There is a new module
1116 <literal>System.Win32.DebugApi</literal>
1117 providing an interface to the Windows DebugApi.
1122 There is a new module
1123 <literal>System.Win32.FileMapping</literal>
1124 for working with memory-mapped files.
1129 There is a new module
1130 <literal>System.Win32.SimpleMAPI</literal>
1131 for using the Windows mail API.
1136 There is a new module
1137 <literal>System.Win32.Time</literal>
1138 for using the Windows time API.
1143 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1144 <literal>Graphics.Win32.Misc</literal> to
1145 <literal>System.Win32.Types</literal>.
1150 <literal>System.Win32.File</literal> has a new
1151 function <literal>getFileInformationByHandle</literal>
1152 and associated data types.
1157 <literal>System.Win32.Info</literal> has a new
1158 function <literal>getSystemInfo</literal> and associated
1164 <literal>System.Win32.Process</literal> now has many more
1170 <literal>System.Win32.Types</literal> has new types
1171 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1172 and <literal>SIZE_T</literal>. It also has new helper
1173 functions <literal>ddwordToDwords</literal> and
1174 <literal>dwordsToDdword</literal> to split and combine
1175 ddwords into high and low components.
1180 <literal>System.Win32</literal> re-exports
1181 <literal>System.Win32.FileMapping</literal>,
1182 <literal>System.Win32.Time</literal>
1183 and <literal>System.Win32.Console</literal>.
1191 <title>Extra Libraries</title>
1197 Version number 2.0 (was 1.0).
1202 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1203 Its <literal>Phase</literal> and <literal>Duration</literal>
1204 exports are now exported by
1205 <literal>Sound.ALUT.Loaders</literal> and its
1206 <literal>helloWorld</literal>,
1207 <literal>sine</literal>,
1208 <literal>square</literal>,
1209 <literal>sawtooth</literal>,
1210 <literal>impulse</literal> and
1211 <literal>whiteNoise</literal>
1212 exports are now constructors of the
1213 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1221 <title>arrows</title>
1225 Version number 0.2 (was 0.1).
1230 <literal>Control.Sequence</literal> has been removed in
1231 favour of the new <literal>Control.Applicative</literal>
1232 module in <literal>base</literal>.
1248 <literal>cgi</literal> is a new package, developing on
1249 what used to be <literal>Network.CGI</literal> in the
1250 <literal>network</literal> package.
1261 Version number 5.3 (was 5.2).
1266 <literal>Data.Graph.Inductive.Graph</literal> no longer
1267 exports <literal>UContext</literal>.
1272 <literal>Data.Graph.Inductive.Graph</literal> now exports
1273 <literal>delLEdge</literal>.
1284 Version number remains 2.0.
1289 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1290 <literal>DisplayMode</literal> has a new constructor
1291 <literal>WithAuxBuffers</literal> and
1292 <literal>DisplayCapability</literal> has a new constructor
1293 <literal>DisplayAux</literal>. These represent freeglut-only
1299 There are new examples in
1300 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1301 <filename>RedBook/AAIndex.hs</filename>,
1302 <filename>RedBook/AARGB.hs</filename>,
1303 <filename>RedBook/AccAnti.hs</filename>,
1304 <filename>RedBook/AccPersp.hs</filename>,
1305 <filename>RedBook/Alpha3D.hs</filename>,
1306 <filename>RedBook/DOF.hs</filename>,
1307 <filename>RedBook/FogIndex.hs</filename>,
1308 <filename>RedBook/Multisamp.hs</filename>,
1309 <filename>RedBook/PointP.hs</filename>,
1310 <filename>RedBook/PolyOff.hs</filename>,
1311 <filename>RedBook/Stencil.hs</filename>,
1312 <filename>RedBook/Stroke.hs</filename> and
1313 <filename>RedBook/Torus.hs</filename>,
1315 <filename>RedBook/Font.hs</filename> and
1316 <filename>RedBook/Histogram.hs</filename> have been
1324 <title>haskell-src</title>
1328 No change (version 1.0).
1339 No change (version 3.1).
1355 <literal>html</literal> is a new package, developing on
1356 what used to be <literal>Text.Html</literal> and
1357 <literal>Text.Html.BlockTable</literal> in the
1358 <literal>base</literal> package.
1363 <literal>Text.Html.BlockTable</literal> exports a new
1364 function <literal>empty</literal>.
1371 <title>HUnit</title>
1375 No change (version 1.1).
1386 No change (version 1.0).
1393 <title>network</title>
1397 Version number 2.0 (was 1.0).
1402 <literal>Network.CGI</literal> has been removed; use the
1403 <literal>cgi</literal> package instead.
1408 <literal>Network.BSD</literal> no longer exports
1409 <literal>symlink</literal> or <literal>readlink</literal>;
1411 <literal>System.Posix.Files.createSymbolicLink</literal> and
1412 <literal>System.Posix.Files.readSymbolicLink</literal>
1418 <literal>Network.BSD</literal> now exports
1419 <literal>defaultProtocol</literal>.
1424 <literal>Network.Socket.SocketStatus</literal> now has a
1425 constructor <literal>ConvertedToHandle</literal> for sockets
1426 that have been converted to handles.
1431 <literal>Network.Socket.Family</literal> now has the
1432 following additional constructors:
1433 <literal>AF_NETROM</literal>,
1434 <literal>AF_BRIDGE</literal>,
1435 <literal>AF_ATMPVC</literal>,
1436 <literal>AF_ROSE</literal>,
1437 <literal>AF_NETBEUI</literal>,
1438 <literal>AF_SECURITY</literal>,
1439 <literal>AF_PACKET</literal>,
1440 <literal>AF_ASH</literal>,
1441 <literal>AF_ECONET</literal>,
1442 <literal>AF_ATMSVC</literal>,
1443 <literal>AF_IRDA</literal>,
1444 <literal>AF_PPPOX</literal>,
1445 <literal>AF_WANPIPE</literal> and
1446 <literal>AF_BLUETOOTH</literal>.
1451 In <literal>Network.URI</literal>,
1452 <literal>parseabsoluteURI</literal> has been deprecated with
1453 a new function <literal>parseAbsoluteURI</literal> taking
1461 <title>ObjectIO</title>
1465 No change (version 1.0).
1472 <title>OpenAL</title>
1476 Version number 1.3 (was 1.2).
1488 <title>OpenGL</title>
1492 Version number 2.1 (was 2.0).
1504 <title>QuickCheck</title>
1508 No change (version 1.0).
1524 <literal>time</literal> is a new package, for dealing with
1525 dates, times and time intervals.
1536 Version number 1.2 (was 1.1).
1541 In <literal>Graphics.X11.Xlib.Types</literal>,
1542 <literal>XGCValues</literal> has been renamed
1543 <literal>GCValues</literal> and
1544 <literal>XSetWindowAttributes</literal> has been renamed
1545 <literal>SetWindowAttributes</literal>.
1550 In <literal>Graphics.X11.Xlib.Misc</literal>,
1551 <literal>allocaXSetWindowAttributes</literal> has been
1552 renamed <literal>allocaSetWindowAttributes</literal>.
1557 The <literal>FontStruct</literal> type has moved from
1558 <literal>Graphics.X11.Xlib.Types</literal> to
1559 <literal>Graphics.X11.Xlib.Font</literal>.
1565 <literal>Point</literal>,
1566 <literal>Rectangle</literal>,
1567 <literal>Arc</literal>,
1568 <literal>Segment</literal> and
1569 <literal>Color</literal> types in
1570 <literal>Graphics.X11.Xlib.Types</literal>
1571 are now proper datatypes rather than synonyms for tuples.
1572 They all have a <literal>Storable</literal> instance.
1577 The <literal>Byte</literal> and <literal>Short</literal>
1578 types from <literal>Graphics.X11.Xlib.Types</literal> have
1580 The following type synonyms, which had already been marked
1581 "Backwards compatibility", have also been removed:
1582 <literal>ListPoint</literal>,
1583 <literal>ListRectangle</literal>,
1584 <literal>ListArc</literal>,
1585 <literal>ListSegment</literal> and
1586 <literal>ListColor</literal>.
1591 <literal>Eq</literal>,
1592 <literal>Ord</literal>,
1593 <literal>Show</literal>,
1594 <literal>Typeable</literal> and
1595 <literal>Data</literal> are now derived for:
1596 <literal>XEvent</literal>,
1597 <literal>FdSet</literal> and
1598 <literal>TimeZone</literal> in
1599 <literal>Graphics.X11.Xlib.Event</literal>,
1600 <literal>FontStruct</literal> in
1601 <literal>Graphics.X11.Xlib.Font</literal>,
1602 <literal>XErrorEvent</literal>,
1603 <literal>XComposeStatus</literal> and
1604 <literal>XTextProperty</literal> in
1605 <literal>Graphics.X11.Xlib.Misc</literal>,
1606 <literal>Region</literal> in
1607 <literal>Graphics.X11.Xlib.Region</literal>,
1608 <literal>Display</literal>,
1609 <literal>Screen</literal>,
1610 <literal>Visual</literal>,
1611 <literal>GC</literal>,
1612 <literal>GCValues</literal>,
1613 <literal>SetWindowAttributes</literal>,
1614 <literal>Point</literal>,
1615 <literal>Rectangle</literal>,
1616 <literal>Arc</literal>,
1617 <literal>Segment</literal> and
1618 <literal>Color</literal> in
1619 <literal>Graphics.X11.Xlib.Types</literal>.
1626 <title>xhtml</title>
1635 <literal>xhtml</literal> is a new package, developing on
1636 what used to be <literal>Text.Html</literal> and
1637 <literal>Text.Html.BlockTable</literal> in the
1638 <literal>base</literal> package.
1646 <title>GHC As A Library</title>
1651 The internal modules of GHC are now available as a library, package
1652 name <literal>ghc</literal>.
1653 The interface has not been designed with use by other programs
1654 in mind, so expect the API to vary radically in future
1658 An introduction to using the library can be found
1659 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1664 <title>Internal changes</title>
1668 GHC development now has its own integrated
1669 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1675 GHC has now moved to darcs. See
1677 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1678 wiki</ulink> for more details. The sources have moved around a
1679 bit within the tree as a result, most notably the GHC sources
1680 are no longer kept within a <filename>ghc/</filename>
1686 The native code generator is now capable of compiling loops,
1687 which gets us a big step closer to being able to compile
1688 entirely without gcc on well-supported arches.