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 invokes <literal>print</literal> by default on the
394 result of IO actions and bindings at the prompt. This is
395 occasionally not what you want, so it can be disabled (at
396 least for bindings) with
397 <literal>:set -fno-print-bind-result</literal>. See <xref
398 linkend="ghci-stmts" />.</para>
404 <title>Libraries</title>
406 Libraries are now divided into core libraries (those that are
407 necessary to build GHC) and extra libraries. Decoupling the extra
408 libraries means that they can release independently of GHC
409 releases, and makes development builds of GHC quicker as they no
410 longer need to build unnecessary libraries.
414 The hslibs libraries have finally been removed.
419 <title>Core Libraries</title>
425 Version number 2.0 (was 1.0).
430 We now have <literal>Read</literal> and
431 <literal>Show</literal> instances for up to 15-tuples (used
432 to be up to 5-tuples).
437 New module <literal>Control.Applicative</literal> that
438 describes a structure intermediate between a functor and
439 a monad: it provides pure expressions and sequencing, but
445 <literal>Control.Exception</literal> now exports
446 <literal>bracketOnError</literal>, which behaves like
447 <literal>bracket</literal> but only runs the final
448 action if the main action raised an error.
453 There is a new module
454 <literal>Control.Monad.Instances</literal> which
455 provides <literal>Monad</literal> and
456 <literal>Functor</literal> instances for
457 <literal>((->) r)</literal> (were in
458 <literal>mtl</literal>'s
459 <literal>Control.Monad.Reader</literal>),
460 a <literal>Functor</literal> instance for
461 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
462 <literal>Control.Monad.Error</literal>) and a
463 <literal>Functor</literal> instance for
464 <literal>((,) a)</literal> (new).
469 The <literal>MonadFix</literal> instance for
470 <literal>((->) r)</literal> is now in
471 <literal>Control.Monad.Fix</literal> (was in
472 <literal>mtl</literal>'s
473 <literal>Control.Monad.Reader</literal>).
478 <literal>Control.Monad.ST</literal> now exports
479 <literal>unsafeSTToIO</literal>.
484 The <literal>HasBounds</literal> class has been removed from
485 <literal>Data.Array.Base</literal>, and its
486 <literal>bounds</literal> method is now in the
487 <literal>IArray</literal> class. The
488 <literal>MArray</literal> class
489 has also gained a method <literal>getBounds</literal>.
494 <literal>Data.Array.Base</literal> now provides an
495 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
501 <literal>Data.Array.Storable</literal> now exports a
502 function <literal>unsafeForeignPtrToStorableArray</literal>.
507 The new <literal>Data.ByteString</literal> hierarchy
508 provides time and space-efficient byte vectors.
509 The old <literal>Data.PackedString</literal> module is now
510 deprecated as a result, although there is not yet a
511 replacement if you need full unicode support.
516 <literal>GHC.Exts</literal> now provides a function
517 <literal>inline</literal> which, provided the RHS is visible
518 to the compiler, forcibly inlines its argument.
519 Otherwise, it acts like <literal>id</literal>.
520 For more details, see <xref linkend="special-ids" />.
525 <literal>GHC.Exts</literal> now provides a function
526 <literal>lazy</literal> which forces GHC to think that its
527 argument is lazy in its first argument.
528 For more details, see <xref linkend="special-ids" />.
533 <literal>Data.FiniteMap</literal> has been removed
534 (deprecated since 6.4). Use <literal>Data.Map</literal>
540 <literal>Data.Char</literal> now exports
541 <literal>isLetter</literal>,
542 <literal>isMark</literal>,
543 <literal>isNumber</literal>,
544 <literal>isPunctuation</literal>,
545 <literal>isSymbol</literal>,
546 <literal>isSeparator</literal>,
547 <literal>isAsciiUpper</literal>,
548 <literal>isAsciiLower</literal> and
549 <literal>toTitle</literal>.
550 It also exports a function
551 <literal>generalCategory</literal> that tells you the
552 category of a character in terms of a datatype
553 <literal>GeneralCategory</literal>.
558 <literal>Data.Dynamic</literal> now exports a function
559 <literal>dynTypeRep</literal>.
564 There is a new module <literal>Data.Eq</literal> which
565 just exports the <literal>Eq</literal> class.
566 Likewise, a new module <literal>Data.Ord</literal>
567 exports the <literal>Ord</literal> class, as well as the
568 handy <literal>comparing</literal> function.
573 There is a new module <literal>Data.Fixed</literal>
574 providing fixed-precision arithmetic.
579 There is a new module <literal>Data.Foldable</literal>
580 providing a class for foldable datatypes. It gives instances
581 for <literal>Maybe</literal>, <literal>[]</literal> and
582 <literal>Array i</literal>.
587 There is a new module <literal>Data.Traversable</literal>
588 providing a class for data structures that can be traversed
589 from left to right. It gives instances
590 for <literal>Maybe</literal>, <literal>[]</literal> and
591 <literal>Array i</literal>.
596 <literal>Data.FunctorM</literal> has been deprecated;
597 use <literal>Data.Foldable</literal> and
598 <literal>Data.Traversable</literal> instead.
603 The <literal>toConstr</literal> definitions for tuples in
604 <literal>Data.Generics.Instances</literal> now actually
605 evaluate their arguments to tuples before returning
611 <literal>Data.IntMap</literal> now exports
612 <literal>notMember</literal>,
613 <literal>alter</literal>,
614 <literal>mapMaybe</literal>,
615 <literal>mapMaybeWithKey</literal>,
616 <literal>mapEither</literal> and
617 <literal>mapEitherWithKey</literal>.
618 It also has <literal>Monoid</literal>,
619 <literal>Foldable</literal> and <literal>Read</literal>
625 <literal>Data.IntSet</literal> now exports
626 <literal>notMember</literal>. It also has
627 <literal>Monoid</literal> and <literal>Read</literal>
633 <literal>Data.Map</literal> now exports
634 <literal>notMember</literal>,
635 <literal>alter</literal>,
636 <literal>mapMaybe</literal>,
637 <literal>mapMaybeWithKey</literal>,
638 <literal>mapEither</literal>,
639 <literal>mapEitherWithKey</literal>,
640 <literal>minView</literal> and
641 <literal>maxView</literal>.
642 It also has <literal>Monoid</literal>,
643 <literal>Traversable</literal>, <literal>Foldable</literal>
644 and <literal>Read</literal> instances.
649 <literal>Data.Set</literal> now exports
650 <literal>notMember</literal>,
651 <literal>minView</literal> and
652 <literal>maxView</literal>.
653 It also has <literal>Monoid</literal>,
654 <literal>Foldable</literal>
655 and <literal>Read</literal> instances.
659 The old, deprecated (since 6.4) interface consisting of
660 <literal>emptySet</literal>,
661 <literal>mkSet</literal>,
662 <literal>setToList</literal>,
663 <literal>unitSet</literal>,
664 <literal>elementOf</literal>,
665 <literal>isEmptySet</literal>,
666 <literal>cardinality</literal>,
667 <literal>unionManySets</literal>,
668 <literal>minusSet</literal>,
669 <literal>mapSet</literal>,
670 <literal>intersect</literal>,
671 <literal>addToSet</literal> and
672 <literal>delFromSet</literal> has been removed.
677 <literal>Data.Monoid</literal> no longer contains the
678 <literal>Monoid</literal>
679 instances for <literal>Map</literal>,
680 <literal>IntMap</literal>, <literal>Set</literal> and
681 <literal>IntSet</literal>. They have been moved to their own
682 modules, as above. The <literal>(a -> a)</literal> instance
683 has been replaced with a
684 <literal>Monoid b => Monoid (a -> b)</literal> instance.
685 The module also now exports
686 <literal>Dual</literal>,
687 <literal>Endo</literal>,
688 <literal>All</literal>,
689 <literal>Any</literal>,
690 <literal>Sum</literal> and
691 <literal>Product</literal> types, and
692 <literal>Monoid</literal> instances for them.
697 There is a new module <literal>Data.Sequence</literal>
698 for finite sequences. The <literal>Data.Queue</literal>
699 module is now deprecated in favour of this faster, more
700 featureful replacement.
705 <literal>Data.Tree</literal> now has
706 <literal>Data</literal>, <literal>Typeable</literal>,
707 <literal>Traversable</literal> and
708 <literal>Foldable</literal>
710 <literal>Tree</literal> datatype.
715 <literal>Data.Typeable</literal> now uses
716 <option>-fallow-overlapping-instances</option>, so the
717 generic instances can be overriden for your own datatypes.
722 <literal>Debug.Trace</literal> now exports
723 <literal>traceShow</literal>, which is the same as
724 <literal>trace</literal> except its first argument can be
725 any showable thing rather than being required to be a
731 <literal>Foreign.C.Types</literal> now also defines
732 <literal>CIntPtr</literal>,
733 <literal>CUIntPtr</literal>,
734 <literal>CIntMax</literal> and
735 <literal>CUIntMax</literal>.
740 <literal>Foreign.ForeignPtr</literal> now exports
741 <literal>FinalizerEnvPtr</literal>,
742 <literal>newForeignPtrEnv</literal> and
743 <literal>addForeignPtrFinalizerEnv</literal>.
744 Together, these allow the use of finalizers which are passed
745 an additional environment parameter.
750 <literal>Foreign.Marshal.Utils</literal> no longer exports
751 the <literal>withObject</literal> function, deprecated since
752 5.04; use <literal>with</literal> instead.
757 Foreign.Ptr now also defines
758 <literal>IntPtr</literal>,
759 <literal>ptrToIntPtr</literal>,
760 <literal>intPtrToPtr</literal>,
761 <literal>WordPtr</literal>,
762 <literal>ptrToWordPtr</literal> and
763 <literal>wordPtrToPtr</literal>.
768 There are now <literal>Bounded</literal> instances for up to
769 15-tuples (used to be up to 4-tuples).
774 The <literal>Text.Html</literal> and
775 <literal>Text.Html.BlockTable</literal> modules have now
776 been removed, with the new <literal>html</literal> and
777 <literal>xhtml</literal> packages providing replacements.
782 <literal>Text.Read</literal> now exports a function
783 <literal>parens</literal> which parses a value in an
784 arbitrary number of parentheses.
789 The <literal>ForeignPtr</literal> datatype has been altered
790 to make it more efficient. There are also new functions
791 <literal>mallocPlainForeignPtr</literal> and
792 <literal>mallocPlainForeignPtrBytes</literal> which
793 do not allow you to attach a finalizer to the
794 <literal>ForeignPtr</literal>.
799 The <literal>Text.Regex</literal> and
800 <literal>Text.Regex.Posix</literal> modules have been removed.
801 Instead, use the new <literal>regex-compat</literal> package
802 for a drop-in <literal>Text.Regex</literal> replacement, or
803 the new library in the new <literal>regex-posix</literal>
815 Version number 1.1.6 (was 1.1.4).
820 Support for JHC, symmetric to the support for the other
821 implementations, has been added throughout.
826 Support for object splitting and building in-place
827 has been added throughout.
832 Added a <filename>debianTemplate</filename> directory with
833 templates for building Debian packages from Cabal packages.
838 There are now modules
839 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
840 for each of <literal>GHC</literal>, <literal>NHC</literal>,
841 <literal>Hugs</literal> and <literal>JHC</literal>.
842 The <literal>Distribution.Simple.Build</literal> and
843 <literal>Distribution.Simple.Install</literal> modules have
844 shrunk correspondingly.
849 <literal>Distribution.GetOpt</literal> is no longer a
855 <literal>Distribution.Simple</literal> exports a function
856 <literal>defaultMainArgs</literal>, which is identical to
857 <literal>defaultMain</literal> except that the arguments are
858 given as a list of strings rather than being retrieved with
859 <literal>getArgs</literal>.
864 <literal>Distribution.Simple.Configure</literal>
866 <literal>LocalBuildInfo</literal>,
868 <literal>configDependency</literal> and
869 <literal>configCompilerAux</literal>.
874 <literal>Distribution.Simple.LocalBuildInfo</literal> now
875 exports <literal>mkHaddockDir</literal>,
876 <literal>distPref</literal>,
877 <literal>srcPref</literal>,
878 <literal>autogenModulesDir</literal> and
879 <literal>mkIncludeDir</literal>.
884 <literal>Distribution.PackageDescription</literal> now
885 exports <literal>haddockName</literal>.
890 <literal>Distribution.Simple.Utils</literal> now exports
891 <literal>copyDirectoryRecursiveVerbose</literal>,
892 <literal>dirOf</literal>,
893 <literal>distPref</literal>,
894 <literal>haddockPref</literal> and
895 <literal>srcPref</literal>.
896 It no longer exports <literal>mkGHCiLibName</literal>.
903 <title>haskell98</title>
907 No change (version 1.0).
914 <title>parsec</title>
918 Version number 2.0 (was 1.0).
930 <title>readline</title>
934 No change (version 1.0).
941 <title>regex-base</title>
950 New library that provides common functions for different
958 <title>regex-compat</title>
967 New package providing a replacement
968 <literal>Text.Regex</literal> module.
975 <title>regex-posix</title>
984 A new package providing POSIX regexes.
995 Version number 2.0 (was 1.0).
1000 A new module <literal>Control.Monad.STM</literal>
1002 <literal>MonadPlus</literal> instance for
1003 <literal>STM</literal> and the function
1004 <literal>check</literal> (both used to be in
1005 <literal>Control.Concurrent.STM</literal>).
1007 <literal>STM</literal>,
1008 <literal>atomically</literal>,
1009 <literal>retry</literal>,
1010 <literal>orElse</literal> and
1011 <literal>catchSTM</literal>.
1017 <literal>Control.Concurrent.STM.TArray</literal> defines
1018 <literal>TArray</literal>, a transactional array, and makes
1019 it an instance of <literal>MArray</literal>.
1024 <literal>Control.Concurrent.STM.TChan</literal> now provides
1025 a function <literal>newTChanIO</literal>, which allows
1026 <literal>TChan</literal>s to be created in the IO monad.
1027 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1028 provides <literal>newTMVarIO</literal> and
1029 <literal>newEmptyTMVarIO</literal>, and
1030 <literal>Control.Concurrent.STM.TVar</literal> exports
1031 <literal>newTVarIO</literal>.
1036 <literal>Control.Concurrent.STM.TVar</literal> exports
1037 <literal>registerDelay</literal>.
1042 The <literal>Control.Concurrent.STM</literal> module has been
1043 updated to re-export all the new modules.
1050 <title>template-haskell</title>
1054 Version number 2.0 (was 1.0).
1059 A <literal>Show</literal> instance is now derived for
1060 <literal>Info</literal>, <literal>Fixity</literal> and
1061 <literal>FixityDirection</literal> in
1062 <literal>Language.Haskell.TH.Syntax</literal>.
1067 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1068 a type <literal>PkgName</literal> and functions
1069 <literal>mkPkgName</literal> and
1070 <literal>pkgString</literal>
1071 for dealing with package names.
1076 The <literal>patGE</literal> function in
1077 <literal>Language.Haskell.TH.Lib</literal> now takes the
1078 final expression separately to the list of statements
1079 rather than splitting it off itself.
1090 No change (version 1.0).
1097 <title>Win32</title>
1101 Version number 2.0 (was 1.0).
1106 Now maintained by Esa Ilari Vuokko.
1111 There is a new module
1112 <literal>System.Win32.Console</literal>
1113 providing an interface to the Windows Console API.
1118 There is a new module
1119 <literal>System.Win32.DebugApi</literal>
1120 providing an interface to the Windows DebugApi.
1125 There is a new module
1126 <literal>System.Win32.FileMapping</literal>
1127 for working with memory-mapped files.
1132 There is a new module
1133 <literal>System.Win32.SimpleMAPI</literal>
1134 for using the Windows mail API.
1139 There is a new module
1140 <literal>System.Win32.Time</literal>
1141 for using the Windows time API.
1146 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1147 <literal>Graphics.Win32.Misc</literal> to
1148 <literal>System.Win32.Types</literal>.
1153 <literal>System.Win32.File</literal> has a new
1154 function <literal>getFileInformationByHandle</literal>
1155 and associated data types.
1160 <literal>System.Win32.Info</literal> has a new
1161 function <literal>getSystemInfo</literal> and associated
1167 <literal>System.Win32.Process</literal> now has many more
1173 <literal>System.Win32.Types</literal> has new types
1174 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1175 and <literal>SIZE_T</literal>. It also has new helper
1176 functions <literal>ddwordToDwords</literal> and
1177 <literal>dwordsToDdword</literal> to split and combine
1178 ddwords into high and low components.
1183 <literal>System.Win32</literal> re-exports
1184 <literal>System.Win32.FileMapping</literal>,
1185 <literal>System.Win32.Time</literal>
1186 and <literal>System.Win32.Console</literal>.
1194 <title>Extra Libraries</title>
1200 Version number 2.0 (was 1.0).
1205 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1206 Its <literal>Phase</literal> and <literal>Duration</literal>
1207 exports are now exported by
1208 <literal>Sound.ALUT.Loaders</literal> and its
1209 <literal>helloWorld</literal>,
1210 <literal>sine</literal>,
1211 <literal>square</literal>,
1212 <literal>sawtooth</literal>,
1213 <literal>impulse</literal> and
1214 <literal>whiteNoise</literal>
1215 exports are now constructors of the
1216 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1224 <title>arrows</title>
1228 Version number 0.2 (was 0.1).
1233 <literal>Control.Sequence</literal> has been removed in
1234 favour of the new <literal>Control.Applicative</literal>
1235 module in <literal>base</literal>.
1251 <literal>cgi</literal> is a new package, developing on
1252 what used to be <literal>Network.CGI</literal> in the
1253 <literal>network</literal> package.
1264 Version number 5.3 (was 5.2).
1269 <literal>Data.Graph.Inductive.Graph</literal> no longer
1270 exports <literal>UContext</literal>.
1275 <literal>Data.Graph.Inductive.Graph</literal> now exports
1276 <literal>delLEdge</literal>.
1287 Version number remains 2.0.
1292 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1293 <literal>DisplayMode</literal> has a new constructor
1294 <literal>WithAuxBuffers</literal> and
1295 <literal>DisplayCapability</literal> has a new constructor
1296 <literal>DisplayAux</literal>. These represent freeglut-only
1302 There are new examples in
1303 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1304 <filename>RedBook/AAIndex.hs</filename>,
1305 <filename>RedBook/AARGB.hs</filename>,
1306 <filename>RedBook/AccAnti.hs</filename>,
1307 <filename>RedBook/AccPersp.hs</filename>,
1308 <filename>RedBook/Alpha3D.hs</filename>,
1309 <filename>RedBook/DOF.hs</filename>,
1310 <filename>RedBook/FogIndex.hs</filename>,
1311 <filename>RedBook/Multisamp.hs</filename>,
1312 <filename>RedBook/PointP.hs</filename>,
1313 <filename>RedBook/PolyOff.hs</filename>,
1314 <filename>RedBook/Stencil.hs</filename>,
1315 <filename>RedBook/Stroke.hs</filename> and
1316 <filename>RedBook/Torus.hs</filename>,
1318 <filename>RedBook/Font.hs</filename> and
1319 <filename>RedBook/Histogram.hs</filename> have been
1327 <title>haskell-src</title>
1331 No change (version 1.0).
1342 No change (version 3.1).
1358 <literal>html</literal> is a new package, developing on
1359 what used to be <literal>Text.Html</literal> and
1360 <literal>Text.Html.BlockTable</literal> in the
1361 <literal>base</literal> package.
1366 <literal>Text.Html.BlockTable</literal> exports a new
1367 function <literal>empty</literal>.
1374 <title>HUnit</title>
1378 No change (version 1.1).
1389 No change (version 1.0).
1396 <title>network</title>
1400 Version number 2.0 (was 1.0).
1405 <literal>Network.CGI</literal> has been removed; use the
1406 <literal>cgi</literal> package instead.
1411 <literal>Network.BSD</literal> no longer exports
1412 <literal>symlink</literal> or <literal>readlink</literal>;
1414 <literal>System.Posix.Files.createSymbolicLink</literal> and
1415 <literal>System.Posix.Files.readSymbolicLink</literal>
1421 <literal>Network.BSD</literal> now exports
1422 <literal>defaultProtocol</literal>.
1427 <literal>Network.Socket.SocketStatus</literal> now has a
1428 constructor <literal>ConvertedToHandle</literal> for sockets
1429 that have been converted to handles.
1434 <literal>Network.Socket.Family</literal> now has the
1435 following additional constructors:
1436 <literal>AF_NETROM</literal>,
1437 <literal>AF_BRIDGE</literal>,
1438 <literal>AF_ATMPVC</literal>,
1439 <literal>AF_ROSE</literal>,
1440 <literal>AF_NETBEUI</literal>,
1441 <literal>AF_SECURITY</literal>,
1442 <literal>AF_PACKET</literal>,
1443 <literal>AF_ASH</literal>,
1444 <literal>AF_ECONET</literal>,
1445 <literal>AF_ATMSVC</literal>,
1446 <literal>AF_IRDA</literal>,
1447 <literal>AF_PPPOX</literal>,
1448 <literal>AF_WANPIPE</literal> and
1449 <literal>AF_BLUETOOTH</literal>.
1454 In <literal>Network.URI</literal>,
1455 <literal>parseabsoluteURI</literal> has been deprecated with
1456 a new function <literal>parseAbsoluteURI</literal> taking
1464 <title>ObjectIO</title>
1468 No change (version 1.0).
1475 <title>OpenAL</title>
1479 Version number 1.3 (was 1.2).
1491 <title>OpenGL</title>
1495 Version number 2.1 (was 2.0).
1507 <title>QuickCheck</title>
1511 No change (version 1.0).
1527 <literal>time</literal> is a new package, for dealing with
1528 dates, times and time intervals.
1539 Version number 1.2 (was 1.1).
1544 In <literal>Graphics.X11.Xlib.Types</literal>,
1545 <literal>XGCValues</literal> has been renamed
1546 <literal>GCValues</literal> and
1547 <literal>XSetWindowAttributes</literal> has been renamed
1548 <literal>SetWindowAttributes</literal>.
1553 In <literal>Graphics.X11.Xlib.Misc</literal>,
1554 <literal>allocaXSetWindowAttributes</literal> has been
1555 renamed <literal>allocaSetWindowAttributes</literal>.
1560 The <literal>FontStruct</literal> type has moved from
1561 <literal>Graphics.X11.Xlib.Types</literal> to
1562 <literal>Graphics.X11.Xlib.Font</literal>.
1568 <literal>Point</literal>,
1569 <literal>Rectangle</literal>,
1570 <literal>Arc</literal>,
1571 <literal>Segment</literal> and
1572 <literal>Color</literal> types in
1573 <literal>Graphics.X11.Xlib.Types</literal>
1574 are now proper datatypes rather than synonyms for tuples.
1575 They all have a <literal>Storable</literal> instance.
1580 The <literal>Byte</literal> and <literal>Short</literal>
1581 types from <literal>Graphics.X11.Xlib.Types</literal> have
1583 The following type synonyms, which had already been marked
1584 "Backwards compatibility", have also been removed:
1585 <literal>ListPoint</literal>,
1586 <literal>ListRectangle</literal>,
1587 <literal>ListArc</literal>,
1588 <literal>ListSegment</literal> and
1589 <literal>ListColor</literal>.
1594 <literal>Eq</literal>,
1595 <literal>Ord</literal>,
1596 <literal>Show</literal>,
1597 <literal>Typeable</literal> and
1598 <literal>Data</literal> are now derived for:
1599 <literal>XEvent</literal>,
1600 <literal>FdSet</literal> and
1601 <literal>TimeZone</literal> in
1602 <literal>Graphics.X11.Xlib.Event</literal>,
1603 <literal>FontStruct</literal> in
1604 <literal>Graphics.X11.Xlib.Font</literal>,
1605 <literal>XErrorEvent</literal>,
1606 <literal>XComposeStatus</literal> and
1607 <literal>XTextProperty</literal> in
1608 <literal>Graphics.X11.Xlib.Misc</literal>,
1609 <literal>Region</literal> in
1610 <literal>Graphics.X11.Xlib.Region</literal>,
1611 <literal>Display</literal>,
1612 <literal>Screen</literal>,
1613 <literal>Visual</literal>,
1614 <literal>GC</literal>,
1615 <literal>GCValues</literal>,
1616 <literal>SetWindowAttributes</literal>,
1617 <literal>Point</literal>,
1618 <literal>Rectangle</literal>,
1619 <literal>Arc</literal>,
1620 <literal>Segment</literal> and
1621 <literal>Color</literal> in
1622 <literal>Graphics.X11.Xlib.Types</literal>.
1629 <title>xhtml</title>
1638 <literal>xhtml</literal> is a new package, developing on
1639 what used to be <literal>Text.Html</literal> and
1640 <literal>Text.Html.BlockTable</literal> in the
1641 <literal>base</literal> package.
1649 <title>GHC As A Library</title>
1654 The internal modules of GHC are now available as a library, package
1655 name <literal>ghc</literal>.
1656 The interface has not been designed with use by other programs
1657 in mind, so expect the API to vary radically in future
1661 An introduction to using the library can be found
1662 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1667 <title>Internal changes</title>
1671 GHC development now has its own integrated
1672 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1678 GHC has now moved to darcs. See
1680 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1681 wiki</ulink> for more details. The sources have moved around a
1682 bit within the tree as a result, most notably the GHC sources
1683 are no longer kept within a <filename>ghc/</filename>
1689 The native code generator is now capable of compiling loops,
1690 which gets us a big step closer to being able to compile
1691 entirely without gcc on well-supported arches.