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 and some programs that used to compile may no longer do so.
27 The new story is documented in <xref linkend="scoped-type-variables" />.
28 (<ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
29 gives some background, but the user manual should be complete (tell
31 certainly takes precedence if there is any conflict.)
36 GHC now supports bang patterns to require a function is strict
37 in a given argument, e.g.
39 f (!x, y) = [x,y]</programlisting>
42 f (x, y) | x `seq` False = undefined
43 | otherwise = [x,y]</programlisting>
44 See <xref linkend="sec-bang-patterns" /> for more details.
49 The restriction that you cannot use two packages together if
50 they contain a module with the same name has been removed.
51 In implementation terms, the package name is now included in
52 every exported symbol name in the object file, so that
53 modules with the same name in different packages do not
54 clash. See <xref linkend="package-overlaps" />.
59 GHC now treats source files as UTF-8 (ASCII is a strict
60 subset of UTF-8, so ASCII source files will continue to
61 work as before). However, invalid UTF-8 sequences are
62 ignored in comments, so ASCII code with comments in, for
63 example, Latin-1 will also work.
68 GADTs can now use record syntax. Also, if the datatype could
69 have been declared with Haskell 98 syntax then deriving
70 clauses are permitted. For more info see <xref linkend="gadt" />.
75 There is a new pragma <literal>LANGUAGE</literal> which allows
76 extensions to be specified portably, i.e. without having to
77 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
78 GHC-specific options. The arguments to the pragma are the same
79 extensions that Cabal knows about. More info in
80 <xref linkend="language-pragma" />.
85 When you use <command>ghc --make</command>, GHC will now take
86 the executable filename from the name of the file containing
87 the <literal>Main</literal> module rather than using
88 <filename>a.out</filename>. The <filename>.exe</filename>
89 extension is appended on Windows, and it can of course be
90 overridden with <option>-o</option>.
95 GHC's garbage collector now deals more intelligently with
96 mutable data, so you mostly no longer need to worry about GC
97 performance when a lot of memory is taken up by
98 <literal>STArray</literal>s, <literal>IOArray</literal>s,
99 <literal>STRef</literal>s or <literal>IORef</literal>s.
101 <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
106 GHC now allows more generalisation when typing mutually
107 recursive bindings, resulting in more programs being accepted.
108 See <xref linkend="typing-binds" /> for more details.
113 The rules for instance declarations have been further relaxed.
114 You are now permitted to have instances whose heads contain
115 only type variables, e.g.
117 instance C a</programlisting>
118 and instances whose constraints are not only type variables,
121 instance C2 Int a => C3 [a] b</programlisting>
122 For more details, see <xref linkend="instance-rules" />.
127 The following flags (and, where appropriate, their inverses)
128 used to be static (can only be given on
129 the command line) but are now dynamic (can also be given in
130 a <literal>GHC_OPTIONS</literal> pragma or with
131 <literal>:set</literal> in GHCi):
133 <option>-hcsuf</option>,
134 <option>-hidir</option>,
135 <option>-hisuf</option>,
137 <option>-odir</option>,
138 <option>-ohi</option>,
139 <option>-osuf</option>,
140 <option>-keep-hc-file</option>,
141 <option>-keep-s-file</option>,
142 <option>-keep-raw-s-file</option>,
143 <option>-keep-tmp-files</option>,
144 <option>-tmpdir</option>,
146 <option>-package</option>,
147 <option>-hide-package</option>,
148 <option>-ignore-package</option>,
149 <option>-package-conf</option>,
150 <option>-no-user-package-conf</option>,
151 <option>-fcontext-stack</option>,
152 <option>-fexcess-precision</option>,
153 <option>-fignore-asserts</option>,
154 <option>-fignore-interface-pragmas</option>,
156 <option>-framework</option>,
157 <option>-framework-path</option>,
160 <option>-main-is</option>,
161 <option>-no-hs-main</option>,
162 <option>-split-objs</option>,
163 <option>-pgmL</option>,
164 <option>-pgmP</option>,
165 <option>-pgmc</option>,
166 <option>-pgma</option>,
167 <option>-pgml</option>,
168 <option>-pgmdll</option>,
169 <option>-pgmdep</option>,
170 <option>-pgmF</option>,
171 <option>-optl</option>,
172 <option>-optdll</option>,
173 <option>-optdep</option>,
174 <option>-fno-asm-mangling</option>.
175 See <xref linkend="static-dynamic-flags" /> for more on
176 the meaning of static and dynamic flags, and
177 <xref linkend="flag-reference" /> for more on the flags
183 There is a new flag <option>-x</option> for overriding the
184 default behaviour for source files; see
185 <xref linkend="overriding-suffixes" /> details.
191 <option>-no-recomp</option><indexterm><primary><option>-no-recomp</option></primary></indexterm>
193 <option>-fforce-recomp</option><indexterm><primary><option>-fforce-recomp</option></primary></indexterm>.
194 (the old name is still accepted for backwards compatibility,
195 but will be removed in the future).
200 The <option>-fglobalise-toplev-names</option>
201 flag has been removed.
206 The <option>-fallow-overlapping-instances</option> flag is
207 implied by the <option>-fallow-incoherent-instances</option>
213 The directory that the <filename>foo_stub.c</filename> and
214 <filename>foo_stub.h</filename> files are put in can now be
215 controlled with the <option>-stubdir</option> flag.
216 See <xref linkend="options-output" /> for more details.
221 When the <option>-fno-implicit-prelude</option> is given,
222 the equality test performed when pattern matching against an
223 overloaded numeric literal now uses the
224 <literal>(==)</literal> in scope, rather than the one from
225 <literal>Prelude</literal>. Likewise, the subtraction and
226 inequality test performed when pattern matching against
227 <literal>n+k</literal> patterns uses the
228 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
233 Another change to <option>-fno-implicit-prelude</option>:
234 with the exception of the arrow syntax, the types of
235 functions used by sugar (such as do notation, numeric
236 literal patterns) need not match the types of the
237 <literal>Prelude</literal> functions normally used.
242 The <literal>InstalledPackageInfo</literal> syntax has
244 instead of <literal>extra-libs</literal> we have
245 <literal>extra-libraries</literal>,
246 instead of <literal>extra-hugs-opts</literal> we have
247 <literal>hugs-options</literal>,
248 instead of <literal>extra-cc-opts</literal> we have
249 <literal>cc-options</literal>,
250 instead of <literal>extra-ld-opts</literal> we have
251 <literal>ld-options</literal>,
252 and instead of <literal>extra-frameworks</literal> we have
253 <literal>frameworks</literal>.
254 See <xref linkend="installed-pkg-info" /> for details.
259 If you <literal>newtype</literal> the IO monad, e.g.
261 newtype MyIO a = MyIO (IO a)</programlisting>
262 then GHC will now allow you to have FFI calls return
263 <literal>MyIO <replaceable>t</replaceable></literal>
265 <literal>IO <replaceable>t</replaceable></literal>.
266 See <xref linkend="ffi-newtype-io"/>
269 <listitem> <para> GHC's mechansim for deriving user-defined classes
270 for newtypes has been further generalised, to multi-parameter type
271 classes and higher-kinded types. See <xref
272 linkend="newtype-deriving"/>.
276 By default, pattern bindings in GHC are now monomorphic.
277 This means that some valid Haskell 98 programs will get
278 rejected, but we believe they will be few in number.
279 To revert to the old behaviour use the
280 <option>-fno-mono-pat-binds</option> flag.
281 More details are in <xref linkend="options-language" />.
286 GHCi already does more defaulting than Haskell 98 so that, for
287 example, <literal>reverse []</literal> shows a result rather
288 than giving an ambiguous type variable error. There is now a
289 flag <option>-fextended-default-rules</option> to use these
290 defaulting rules with GHC too.
291 More details are in <xref linkend="extended-default-rules" />.
296 You can now give both class and instance declarations in
297 <filename>.hs-boot</filename> files. More details in
298 <xref linkend="mutual-recursion" />.
303 Linear implicit parameters have been scheduled for removal for some
304 time. In 6.6 we've removed them from the user manual, and they may
305 well disappear from the compiler itself in 6.6.1.
310 If the program is idle for a certain amount of time then GHC
311 will now take the opportunity to do a major garbage collection.
312 The amount of idle time that is required before that happens
313 is controlled by the new <literal>-I</literal> RTS flag.
314 There is more detail in <xref linkend="rts-options-gc" />.
319 It is now possible to control the frequency that the RTS clock
320 ticks at with the new <literal>-V</literal> RTS flag. This is
321 normally handled automatically by other flags, but this flag
322 is needed if you want to increase the resolution of the time
324 For more details see <xref linkend="rts-options-misc" />.
329 The old syntax for FFI declarations (deprecated since 5.04)
330 is no longer accepted.
335 The <option>-split-objs</option> flag, which when used to compile
336 libraries means executables using the library will be smaller,
337 can now be used with <option>--make</option> and hence
338 can be used by cabal.
339 See <xref linkend="options-linker" /> for more information.
344 Template Haskell used to have limited support for type signatures in
345 patterns, but since that design is in flux for Haskell (let alone
346 Template Haskell), we've removed type signatures in patterns from
352 GHC now supports postfix operators, as a simple generalisation of
353 left sections (<xref linkend="postfix-operators"/>).
358 Parallel arrays, as enabled by <literal>-fparr</literal>, no
359 longer work. They'll be coming back shortly, in full glory.
366 <title>GHCi changes</title>
371 GHCi now allows tab completion of in-scope names and modules
372 on platforms that use readline (i.e. not Windows).
377 GHCi now has a <literal>:main</literal> command that allows
378 you to call the <literal>main</literal> function with
379 command-line arguments.
380 See <xref linkend="ghci-commands" /> for more information.
385 GHCi now has <literal>:ctags</literal> and
386 <literal>:etags</literal> commands to generate tags files for
387 vi-style and emacs-style editors respectively.
388 See <xref linkend="ghci-commands" /> for more information.
393 GHCi now has an <literal>:edit</literal> command which pops
394 up an editor on the most recently loaded file, or a
395 specified file. See <xref linkend="ghci-commands" /> for
401 GHCi now invokes <literal>print</literal> by default on the
402 result of IO actions and bindings at the prompt. This is
403 occasionally not what you want, so it can be disabled (at
404 least for bindings) with
405 <literal>:set -fno-print-bind-result</literal>. See <xref
406 linkend="ghci-stmts" />.</para>
412 <title>Libraries</title>
414 Libraries are now divided into core libraries (those that are
415 necessary to build GHC) and extra libraries. Decoupling the extra
416 libraries means that they can release independently of GHC
417 releases, and makes development builds of GHC quicker as they no
418 longer need to build unnecessary libraries.
422 The hslibs libraries have finally been removed.
427 <title>Core Libraries</title>
433 Version number 2.0 (was 1.0).
438 We now have <literal>Read</literal> and
439 <literal>Show</literal> instances for up to 15-tuples (used
440 to be up to 5-tuples).
445 New module <literal>Control.Applicative</literal> that
446 describes a structure intermediate between a functor and
447 a monad: it provides pure expressions and sequencing, but
453 <literal>Control.Exception</literal> now exports
454 <literal>bracketOnError</literal>, which behaves like
455 <literal>bracket</literal> but only runs the final
456 action if the main action raised an error.
461 There is a new module
462 <literal>Control.Monad.Instances</literal> which
463 provides <literal>Monad</literal> and
464 <literal>Functor</literal> instances for
465 <literal>((->) r)</literal> (were in
466 <literal>mtl</literal>'s
467 <literal>Control.Monad.Reader</literal>),
468 a <literal>Functor</literal> instance for
469 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
470 <literal>Control.Monad.Error</literal>) and a
471 <literal>Functor</literal> instance for
472 <literal>((,) a)</literal> (new).
477 The <literal>MonadFix</literal> instance for
478 <literal>((->) r)</literal> is now in
479 <literal>Control.Monad.Fix</literal> (was in
480 <literal>mtl</literal>'s
481 <literal>Control.Monad.Reader</literal>).
486 <literal>Control.Monad.ST</literal> now exports
487 <literal>unsafeSTToIO</literal>.
492 The <literal>HasBounds</literal> class has been removed from
493 <literal>Data.Array.Base</literal>, and its
494 <literal>bounds</literal> method is now in the
495 <literal>IArray</literal> class. The
496 <literal>MArray</literal> class
497 has also gained a method <literal>getBounds</literal>.
502 <literal>Data.Array.Base</literal> now provides an
503 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
509 <literal>Data.Array.Storable</literal> now exports a
510 function <literal>unsafeForeignPtrToStorableArray</literal>.
515 The new <literal>Data.ByteString</literal> hierarchy
516 provides time and space-efficient byte vectors.
517 The old <literal>Data.PackedString</literal> module is now
518 deprecated as a result, although there is not yet a
519 replacement if you need full unicode support.
524 <literal>GHC.Exts</literal> now provides a function
525 <literal>inline</literal> which, provided the RHS is visible
526 to the compiler, forcibly inlines its argument.
527 Otherwise, it acts like <literal>id</literal>.
528 For more details, see <xref linkend="special-ids" />.
533 <literal>GHC.Exts</literal> now provides a function
534 <literal>lazy</literal> which forces GHC to think that its
535 argument is lazy in its first argument.
536 For more details, see <xref linkend="special-ids" />.
541 <literal>Data.FiniteMap</literal> has been removed
542 (deprecated since 6.4). Use <literal>Data.Map</literal>
548 <literal>Data.Char</literal> now exports
549 <literal>isLetter</literal>,
550 <literal>isMark</literal>,
551 <literal>isNumber</literal>,
552 <literal>isPunctuation</literal>,
553 <literal>isSymbol</literal>,
554 <literal>isSeparator</literal>,
555 <literal>isAsciiUpper</literal>,
556 <literal>isAsciiLower</literal> and
557 <literal>toTitle</literal>.
558 It also exports a function
559 <literal>generalCategory</literal> that tells you the
560 category of a character in terms of a datatype
561 <literal>GeneralCategory</literal>.
566 <literal>Data.Dynamic</literal> now exports a function
567 <literal>dynTypeRep</literal>.
572 There is a new module <literal>Data.Eq</literal> which
573 just exports the <literal>Eq</literal> class.
574 Likewise, a new module <literal>Data.Ord</literal>
575 exports the <literal>Ord</literal> class, as well as the
576 handy <literal>comparing</literal> function.
581 There is a new module <literal>Data.Fixed</literal>
582 providing fixed-precision arithmetic.
587 There is a new module <literal>Data.Foldable</literal>
588 providing a class for foldable datatypes. It gives instances
589 for <literal>Maybe</literal>, <literal>[]</literal> and
590 <literal>Array i</literal>.
595 There is a new module <literal>Data.Traversable</literal>
596 providing a class for data structures that can be traversed
597 from left to right. It gives instances
598 for <literal>Maybe</literal>, <literal>[]</literal> and
599 <literal>Array i</literal>.
604 <literal>Data.FunctorM</literal> has been deprecated;
605 use <literal>Data.Foldable</literal> and
606 <literal>Data.Traversable</literal> instead.
611 The <literal>toConstr</literal> definitions for tuples in
612 <literal>Data.Generics.Instances</literal> now actually
613 evaluate their arguments to tuples before returning
619 <literal>Data.IntMap</literal> now exports
620 <literal>notMember</literal>,
621 <literal>alter</literal>,
622 <literal>mapMaybe</literal>,
623 <literal>mapMaybeWithKey</literal>,
624 <literal>mapEither</literal> and
625 <literal>mapEitherWithKey</literal>.
626 It also has <literal>Monoid</literal>,
627 <literal>Foldable</literal> and <literal>Read</literal>
633 <literal>Data.IntSet</literal> now exports
634 <literal>notMember</literal>. It also has
635 <literal>Monoid</literal> and <literal>Read</literal>
641 <literal>Data.Map</literal> now exports
642 <literal>notMember</literal>,
643 <literal>alter</literal>,
644 <literal>mapMaybe</literal>,
645 <literal>mapMaybeWithKey</literal>,
646 <literal>mapEither</literal>,
647 <literal>mapEitherWithKey</literal>,
648 <literal>minView</literal> and
649 <literal>maxView</literal>.
650 It also has <literal>Monoid</literal>,
651 <literal>Traversable</literal>, <literal>Foldable</literal>
652 and <literal>Read</literal> instances.
657 <literal>Data.Set</literal> now exports
658 <literal>notMember</literal>,
659 <literal>minView</literal> and
660 <literal>maxView</literal>.
661 It also has <literal>Monoid</literal>,
662 <literal>Foldable</literal>
663 and <literal>Read</literal> instances.
667 The old, deprecated (since 6.4) interface consisting of
668 <literal>emptySet</literal>,
669 <literal>mkSet</literal>,
670 <literal>setToList</literal>,
671 <literal>unitSet</literal>,
672 <literal>elementOf</literal>,
673 <literal>isEmptySet</literal>,
674 <literal>cardinality</literal>,
675 <literal>unionManySets</literal>,
676 <literal>minusSet</literal>,
677 <literal>mapSet</literal>,
678 <literal>intersect</literal>,
679 <literal>addToSet</literal> and
680 <literal>delFromSet</literal> has been removed.
685 <literal>Data.Monoid</literal> no longer contains the
686 <literal>Monoid</literal>
687 instances for <literal>Map</literal>,
688 <literal>IntMap</literal>, <literal>Set</literal> and
689 <literal>IntSet</literal>. They have been moved to their own
690 modules, as above. The <literal>(a -> a)</literal> instance
691 has been replaced with a
692 <literal>Monoid b => Monoid (a -> b)</literal> instance.
693 The module also now exports
694 <literal>Dual</literal>,
695 <literal>Endo</literal>,
696 <literal>All</literal>,
697 <literal>Any</literal>,
698 <literal>Sum</literal> and
699 <literal>Product</literal> types, and
700 <literal>Monoid</literal> instances for them.
705 There is a new module <literal>Data.Sequence</literal>
706 for finite sequences. The <literal>Data.Queue</literal>
707 module is now deprecated in favour of this faster, more
708 featureful replacement.
713 <literal>Data.Tree</literal> now has
714 <literal>Data</literal>, <literal>Typeable</literal>,
715 <literal>Traversable</literal> and
716 <literal>Foldable</literal>
718 <literal>Tree</literal> datatype.
723 <literal>Data.Typeable</literal> now uses
724 <option>-fallow-overlapping-instances</option>, so the
725 generic instances can be overriden for your own datatypes.
730 <literal>Debug.Trace</literal> now exports
731 <literal>traceShow</literal>, which is the same as
732 <literal>trace</literal> except its first argument can be
733 any showable thing rather than being required to be a
739 <literal>Foreign.C.Types</literal> now also defines
740 <literal>CIntPtr</literal>,
741 <literal>CUIntPtr</literal>,
742 <literal>CIntMax</literal> and
743 <literal>CUIntMax</literal>.
748 <literal>Foreign.ForeignPtr</literal> now exports
749 <literal>FinalizerEnvPtr</literal>,
750 <literal>newForeignPtrEnv</literal> and
751 <literal>addForeignPtrFinalizerEnv</literal>.
752 Together, these allow the use of finalizers which are passed
753 an additional environment parameter.
758 <literal>Foreign.Marshal.Utils</literal> no longer exports
759 the <literal>withObject</literal> function, deprecated since
760 5.04; use <literal>with</literal> instead.
765 Foreign.Ptr now also defines
766 <literal>IntPtr</literal>,
767 <literal>ptrToIntPtr</literal>,
768 <literal>intPtrToPtr</literal>,
769 <literal>WordPtr</literal>,
770 <literal>ptrToWordPtr</literal> and
771 <literal>wordPtrToPtr</literal>.
776 There are now <literal>Bounded</literal> instances for up to
777 15-tuples (used to be up to 4-tuples).
782 The <literal>Text.Html</literal> and
783 <literal>Text.Html.BlockTable</literal> modules have now
784 been removed, with the new <literal>html</literal> and
785 <literal>xhtml</literal> packages providing replacements.
790 <literal>Text.Read</literal> now exports a function
791 <literal>parens</literal> which parses a value in an
792 arbitrary number of parentheses.
797 The <literal>ForeignPtr</literal> datatype has been altered
798 to make it more efficient. There are also new functions
799 <literal>mallocPlainForeignPtr</literal> and
800 <literal>mallocPlainForeignPtrBytes</literal> which
801 do not allow you to attach a finalizer to the
802 <literal>ForeignPtr</literal>.
807 The <literal>Text.Regex</literal> and
808 <literal>Text.Regex.Posix</literal> modules have been removed.
809 Instead, use the new <literal>regex-compat</literal> package
810 for a drop-in <literal>Text.Regex</literal> replacement, or
811 the new library in the new <literal>regex-posix</literal>
823 Version number 1.1.6 (was 1.1.4).
828 Support for JHC, symmetric to the support for the other
829 implementations, has been added throughout.
834 Support for object splitting and building in-place
835 has been added throughout.
840 Added a <filename>debianTemplate</filename> directory with
841 templates for building Debian packages from Cabal packages.
846 There are now modules
847 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
848 for each of <literal>GHC</literal>, <literal>NHC</literal>,
849 <literal>Hugs</literal> and <literal>JHC</literal>.
850 The <literal>Distribution.Simple.Build</literal> and
851 <literal>Distribution.Simple.Install</literal> modules have
852 shrunk correspondingly.
857 <literal>Distribution.GetOpt</literal> is no longer a
863 <literal>Distribution.Simple</literal> exports a function
864 <literal>defaultMainArgs</literal>, which is identical to
865 <literal>defaultMain</literal> except that the arguments are
866 given as a list of strings rather than being retrieved with
867 <literal>getArgs</literal>.
872 <literal>Distribution.Simple.Configure</literal>
874 <literal>LocalBuildInfo</literal>,
876 <literal>configDependency</literal> and
877 <literal>configCompilerAux</literal>.
882 <literal>Distribution.Simple.LocalBuildInfo</literal> now
883 exports <literal>mkHaddockDir</literal>,
884 <literal>distPref</literal>,
885 <literal>srcPref</literal>,
886 <literal>autogenModulesDir</literal> and
887 <literal>mkIncludeDir</literal>.
892 <literal>Distribution.PackageDescription</literal> now
893 exports <literal>haddockName</literal>.
898 <literal>Distribution.Simple.Utils</literal> now exports
899 <literal>copyDirectoryRecursiveVerbose</literal>,
900 <literal>dirOf</literal>,
901 <literal>distPref</literal>,
902 <literal>haddockPref</literal> and
903 <literal>srcPref</literal>.
904 It no longer exports <literal>mkGHCiLibName</literal>.
911 <title>haskell98</title>
915 No change (version 1.0).
922 <title>parsec</title>
926 Version number 2.0 (was 1.0).
938 <title>readline</title>
942 No change (version 1.0).
949 <title>regex-base</title>
958 New library that provides common functions for different
966 <title>regex-compat</title>
975 New package providing a replacement
976 <literal>Text.Regex</literal> module.
983 <title>regex-posix</title>
992 A new package providing POSIX regexes.
1003 Version number 2.0 (was 1.0).
1008 A new module <literal>Control.Monad.STM</literal>
1010 <literal>MonadPlus</literal> instance for
1011 <literal>STM</literal> and the function
1012 <literal>check</literal> (both used to be in
1013 <literal>Control.Concurrent.STM</literal>).
1015 <literal>STM</literal>,
1016 <literal>atomically</literal>,
1017 <literal>retry</literal>,
1018 <literal>orElse</literal> and
1019 <literal>catchSTM</literal>.
1025 <literal>Control.Concurrent.STM.TArray</literal> defines
1026 <literal>TArray</literal>, a transactional array, and makes
1027 it an instance of <literal>MArray</literal>.
1032 <literal>Control.Concurrent.STM.TChan</literal> now provides
1033 a function <literal>newTChanIO</literal>, which allows
1034 <literal>TChan</literal>s to be created in the IO monad.
1035 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1036 provides <literal>newTMVarIO</literal> and
1037 <literal>newEmptyTMVarIO</literal>, and
1038 <literal>Control.Concurrent.STM.TVar</literal> exports
1039 <literal>newTVarIO</literal>.
1044 <literal>Control.Concurrent.STM.TVar</literal> exports
1045 <literal>registerDelay</literal>.
1050 The <literal>Control.Concurrent.STM</literal> module has been
1051 updated to re-export all the new modules.
1058 <title>template-haskell</title>
1062 Version number 2.0 (was 1.0).
1067 A <literal>Show</literal> instance is now derived for
1068 <literal>Info</literal>, <literal>Fixity</literal> and
1069 <literal>FixityDirection</literal> in
1070 <literal>Language.Haskell.TH.Syntax</literal>.
1075 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1076 a type <literal>PkgName</literal> and functions
1077 <literal>mkPkgName</literal> and
1078 <literal>pkgString</literal>
1079 for dealing with package names.
1084 The <literal>patGE</literal> function in
1085 <literal>Language.Haskell.TH.Lib</literal> now takes the
1086 final expression separately to the list of statements
1087 rather than splitting it off itself.
1098 No change (version 1.0).
1105 <title>Win32</title>
1109 Version number 2.0 (was 1.0).
1114 Now maintained by Esa Ilari Vuokko.
1119 There is a new module
1120 <literal>System.Win32.Console</literal>
1121 providing an interface to the Windows Console API.
1126 There is a new module
1127 <literal>System.Win32.DebugApi</literal>
1128 providing an interface to the Windows DebugApi.
1133 There is a new module
1134 <literal>System.Win32.FileMapping</literal>
1135 for working with memory-mapped files.
1140 There is a new module
1141 <literal>System.Win32.SimpleMAPI</literal>
1142 for using the Windows mail API.
1147 There is a new module
1148 <literal>System.Win32.Time</literal>
1149 for using the Windows time API.
1154 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1155 <literal>Graphics.Win32.Misc</literal> to
1156 <literal>System.Win32.Types</literal>.
1161 <literal>System.Win32.File</literal> has a new
1162 function <literal>getFileInformationByHandle</literal>
1163 and associated data types.
1168 <literal>System.Win32.Info</literal> has a new
1169 function <literal>getSystemInfo</literal> and associated
1175 <literal>System.Win32.Process</literal> now has many more
1181 <literal>System.Win32.Types</literal> has new types
1182 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1183 and <literal>SIZE_T</literal>. It also has new helper
1184 functions <literal>ddwordToDwords</literal> and
1185 <literal>dwordsToDdword</literal> to split and combine
1186 ddwords into high and low components.
1191 <literal>System.Win32</literal> re-exports
1192 <literal>System.Win32.FileMapping</literal>,
1193 <literal>System.Win32.Time</literal>
1194 and <literal>System.Win32.Console</literal>.
1202 <title>Extra Libraries</title>
1208 Version number 2.0 (was 1.0).
1213 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1214 Its <literal>Phase</literal> and <literal>Duration</literal>
1215 exports are now exported by
1216 <literal>Sound.ALUT.Loaders</literal> and its
1217 <literal>helloWorld</literal>,
1218 <literal>sine</literal>,
1219 <literal>square</literal>,
1220 <literal>sawtooth</literal>,
1221 <literal>impulse</literal> and
1222 <literal>whiteNoise</literal>
1223 exports are now constructors of the
1224 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1232 <title>arrows</title>
1236 Version number 0.2 (was 0.1).
1241 <literal>Control.Sequence</literal> has been removed in
1242 favour of the new <literal>Control.Applicative</literal>
1243 module in <literal>base</literal>.
1259 <literal>cgi</literal> is a new package, developing on
1260 what used to be <literal>Network.CGI</literal> in the
1261 <literal>network</literal> package.
1272 Version number 5.3 (was 5.2).
1277 <literal>Data.Graph.Inductive.Graph</literal> no longer
1278 exports <literal>UContext</literal>.
1283 <literal>Data.Graph.Inductive.Graph</literal> now exports
1284 <literal>delLEdge</literal>.
1295 Version number remains 2.0.
1300 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1301 <literal>DisplayMode</literal> has a new constructor
1302 <literal>WithAuxBuffers</literal> and
1303 <literal>DisplayCapability</literal> has a new constructor
1304 <literal>DisplayAux</literal>. These represent freeglut-only
1310 There are new examples in
1311 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1312 <filename>RedBook/AAIndex.hs</filename>,
1313 <filename>RedBook/AARGB.hs</filename>,
1314 <filename>RedBook/AccAnti.hs</filename>,
1315 <filename>RedBook/AccPersp.hs</filename>,
1316 <filename>RedBook/Alpha3D.hs</filename>,
1317 <filename>RedBook/DOF.hs</filename>,
1318 <filename>RedBook/FogIndex.hs</filename>,
1319 <filename>RedBook/Multisamp.hs</filename>,
1320 <filename>RedBook/PointP.hs</filename>,
1321 <filename>RedBook/PolyOff.hs</filename>,
1322 <filename>RedBook/Stencil.hs</filename>,
1323 <filename>RedBook/Stroke.hs</filename> and
1324 <filename>RedBook/Torus.hs</filename>,
1326 <filename>RedBook/Font.hs</filename> and
1327 <filename>RedBook/Histogram.hs</filename> have been
1335 <title>haskell-src</title>
1339 No change (version 1.0).
1350 No change (version 3.1).
1366 <literal>html</literal> is a new package, developing on
1367 what used to be <literal>Text.Html</literal> and
1368 <literal>Text.Html.BlockTable</literal> in the
1369 <literal>base</literal> package.
1374 <literal>Text.Html.BlockTable</literal> exports a new
1375 function <literal>empty</literal>.
1382 <title>HUnit</title>
1386 No change (version 1.1).
1397 No change (version 1.0).
1404 <title>network</title>
1408 Version number 2.0 (was 1.0).
1413 <literal>Network.CGI</literal> has been removed; use the
1414 <literal>cgi</literal> package instead.
1419 <literal>Network.BSD</literal> no longer exports
1420 <literal>symlink</literal> or <literal>readlink</literal>;
1422 <literal>System.Posix.Files.createSymbolicLink</literal> and
1423 <literal>System.Posix.Files.readSymbolicLink</literal>
1429 <literal>Network.BSD</literal> now exports
1430 <literal>defaultProtocol</literal>.
1435 <literal>Network.Socket.SocketStatus</literal> now has a
1436 constructor <literal>ConvertedToHandle</literal> for sockets
1437 that have been converted to handles.
1442 <literal>Network.Socket.Family</literal> now has the
1443 following additional constructors:
1444 <literal>AF_NETROM</literal>,
1445 <literal>AF_BRIDGE</literal>,
1446 <literal>AF_ATMPVC</literal>,
1447 <literal>AF_ROSE</literal>,
1448 <literal>AF_NETBEUI</literal>,
1449 <literal>AF_SECURITY</literal>,
1450 <literal>AF_PACKET</literal>,
1451 <literal>AF_ASH</literal>,
1452 <literal>AF_ECONET</literal>,
1453 <literal>AF_ATMSVC</literal>,
1454 <literal>AF_IRDA</literal>,
1455 <literal>AF_PPPOX</literal>,
1456 <literal>AF_WANPIPE</literal> and
1457 <literal>AF_BLUETOOTH</literal>.
1462 In <literal>Network.URI</literal>,
1463 <literal>parseabsoluteURI</literal> has been deprecated with
1464 a new function <literal>parseAbsoluteURI</literal> taking
1472 <title>ObjectIO</title>
1476 No change (version 1.0).
1483 <title>OpenAL</title>
1487 Version number 1.3 (was 1.2).
1499 <title>OpenGL</title>
1503 Version number 2.1 (was 2.0).
1515 <title>QuickCheck</title>
1519 No change (version 1.0).
1535 <literal>time</literal> is a new package, for dealing with
1536 dates, times and time intervals.
1547 Version number 1.2 (was 1.1).
1552 In <literal>Graphics.X11.Xlib.Types</literal>,
1553 <literal>XGCValues</literal> has been renamed
1554 <literal>GCValues</literal> and
1555 <literal>XSetWindowAttributes</literal> has been renamed
1556 <literal>SetWindowAttributes</literal>.
1561 In <literal>Graphics.X11.Xlib.Misc</literal>,
1562 <literal>allocaXSetWindowAttributes</literal> has been
1563 renamed <literal>allocaSetWindowAttributes</literal>.
1568 The <literal>FontStruct</literal> type has moved from
1569 <literal>Graphics.X11.Xlib.Types</literal> to
1570 <literal>Graphics.X11.Xlib.Font</literal>.
1576 <literal>Point</literal>,
1577 <literal>Rectangle</literal>,
1578 <literal>Arc</literal>,
1579 <literal>Segment</literal> and
1580 <literal>Color</literal> types in
1581 <literal>Graphics.X11.Xlib.Types</literal>
1582 are now proper datatypes rather than synonyms for tuples.
1583 They all have a <literal>Storable</literal> instance.
1588 The <literal>Byte</literal> and <literal>Short</literal>
1589 types from <literal>Graphics.X11.Xlib.Types</literal> have
1591 The following type synonyms, which had already been marked
1592 "Backwards compatibility", have also been removed:
1593 <literal>ListPoint</literal>,
1594 <literal>ListRectangle</literal>,
1595 <literal>ListArc</literal>,
1596 <literal>ListSegment</literal> and
1597 <literal>ListColor</literal>.
1602 <literal>Eq</literal>,
1603 <literal>Ord</literal>,
1604 <literal>Show</literal>,
1605 <literal>Typeable</literal> and
1606 <literal>Data</literal> are now derived for:
1607 <literal>XEvent</literal>,
1608 <literal>FdSet</literal> and
1609 <literal>TimeZone</literal> in
1610 <literal>Graphics.X11.Xlib.Event</literal>,
1611 <literal>FontStruct</literal> in
1612 <literal>Graphics.X11.Xlib.Font</literal>,
1613 <literal>XErrorEvent</literal>,
1614 <literal>XComposeStatus</literal> and
1615 <literal>XTextProperty</literal> in
1616 <literal>Graphics.X11.Xlib.Misc</literal>,
1617 <literal>Region</literal> in
1618 <literal>Graphics.X11.Xlib.Region</literal>,
1619 <literal>Display</literal>,
1620 <literal>Screen</literal>,
1621 <literal>Visual</literal>,
1622 <literal>GC</literal>,
1623 <literal>GCValues</literal>,
1624 <literal>SetWindowAttributes</literal>,
1625 <literal>Point</literal>,
1626 <literal>Rectangle</literal>,
1627 <literal>Arc</literal>,
1628 <literal>Segment</literal> and
1629 <literal>Color</literal> in
1630 <literal>Graphics.X11.Xlib.Types</literal>.
1637 <title>xhtml</title>
1646 <literal>xhtml</literal> is a new package, developing on
1647 what used to be <literal>Text.Html</literal> and
1648 <literal>Text.Html.BlockTable</literal> in the
1649 <literal>base</literal> package.
1657 <title>GHC As A Library</title>
1662 The internal modules of GHC are now available as a library, package
1663 name <literal>ghc</literal>.
1664 The interface has not been designed with use by other programs
1665 in mind, so expect the API to vary radically in future
1669 An introduction to using the library can be found
1670 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1675 <title>Internal changes</title>
1679 GHC development now has its own integrated
1680 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1686 GHC has now moved to darcs. See
1688 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1689 wiki</ulink> for more details. The sources have moved around a
1690 bit within the tree as a result, most notably the GHC sources
1691 are no longer kept within a <filename>ghc/</filename>
1697 The native code generator is now capable of compiling loops,
1698 which gets us a big step closer to being able to compile
1699 entirely without gcc on well-supported arches.