1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <sect1 id="release-6-6">
3 <title>Release notes for version 6.6</title>
6 <title>User-visible compiler changes</title>
11 when you compile with <option>-threaded</option>, you now get
12 an RTS flag <option>-N</option> that allows you to specify the
13 number of OS threads that GHC should use. Defaults to 1.
14 See <xref linkend="sec-using-smp" /> and <xref
15 linkend="lang-parallel" />.
20 GHC now handles impredicative polymorphism and there are
21 changes to the way scoped type variables work; see
22 <ulink url="http://www.haskell.org/pipermail/glasgow-haskell-users/2006-January/009565.html"> Simon's e-mail</ulink>
23 for more details of the change, or <xref linkend="impredicative-polymorphism" /> for the documentation.
28 GHC now supports bang patterns to require a function is strict
29 in a given argument, e.g.
31 f (!x, y) = [x,y]</programlisting>
34 f (x, y) | x `seq` False = undefined
35 | otherwise = [x,y]</programlisting>
36 See <xref linkend="sec-bang-patterns" /> for more details.
41 The restriction that you cannot use two packages together if
42 they contain a module with the same name has been removed.
43 In implementation terms, the package name is now included in
44 every exported symbol name in the object file, so that
45 modules with the same name in different packages do not
46 clash. See <xref linkend="package-overlaps" />.
51 GHC now treats source files as UTF-8 (ASCII is a strict
52 subset of UTF-8, so ASCII source files will continue to
53 work as before). However, invalid UTF-8 sequences are
54 ignored in comments, so ASCII code with comments in, for
55 example, Latin-1 will also work.
60 GADTs can now use record syntax. Also, if the datatype could
61 have been declared with Haskell 98 syntax then deriving
62 clauses are permitted. For more info see <xref linkend="gadt" />.
67 There is a new pragma <literal>LANGUAGE</literal> which allows
68 extensions to be specified portably, i.e. without having to
69 resort to the <literal>OPTIONS_GHC</literal> pragma and giving
70 GHC-specific options. The arguments to the pragma are the same
71 extensions that Cabal knows about. More info in
72 <xref linkend="language-pragma" />.
77 When you use <command>ghc --make</command>, GHC will now take
78 the executable filename from the name of the file containing
79 the <literal>Main</literal> module rather than using
80 <filename>a.out</filename>. The <filename>.exe</filename>
81 extension is appended on Windows, and it can of course be
82 overridden with <option>-o</option>.
87 GHC's garbage collector now deals more intelligently with
88 mutable data, so you mostly no longer need to worry about GC
89 performance when a lot of memory is taken up by
90 <literal>STArray</literal>s, <literal>IOArray</literal>s,
91 <literal>STRef</literal>s or <literal>IORef</literal>s.
93 <ulink url="http://hackage.haskell.org/trac/ghc/ticket/650">trac bug #650</ulink>.
98 GHC now allows more generalisation when typing mutually
99 recursive bindings, resulting in more programs being accepted.
100 See <xref linkend="typing-binds" /> for more details.
105 The rules for instance declarations have been further relaxed.
106 You are now permitted to have instances whose heads contain
107 only type variables, e.g.
109 instance C a</programlisting>
110 and instances whose constraints are not only type variables,
113 instance C2 Int a => C3 [a] b</programlisting>
114 For more details, see <xref linkend="instance-rules" />.
119 The following flags (and, where appropriate, their inverses)
120 used to be static (can only be given on
121 the command line) but are now dynamic (can also be given in
122 a <literal>GHC_OPTIONS</literal> pragma or with
123 <literal>:set</literal> in GHCi):
125 <option>-hcsuf</option>,
126 <option>-hidir</option>,
127 <option>-hisuf</option>,
129 <option>-odir</option>,
130 <option>-ohi</option>,
131 <option>-osuf</option>,
132 <option>-keep-hc-file</option>,
133 <option>-keep-s-file</option>,
134 <option>-keep-raw-s-file</option>,
135 <option>-keep-tmp-files</option>,
136 <option>-tmpdir</option>,
138 <option>-package</option>,
139 <option>-hide-package</option>,
140 <option>-ignore-package</option>,
141 <option>-package-conf</option>,
142 <option>-no-user-package-conf</option>,
143 <option>-fcontext-stack</option>,
144 <option>-fexcess-precision</option>,
145 <option>-fignore-asserts</option>,
146 <option>-fignore-interface-pragmas</option>,
148 <option>-framework</option>,
149 <option>-framework-path</option>,
152 <option>-main-is</option>,
153 <option>-no-hs-main</option>,
154 <option>-split-objs</option>,
155 <option>-pgmL</option>,
156 <option>-pgmP</option>,
157 <option>-pgmc</option>,
158 <option>-pgma</option>,
159 <option>-pgml</option>,
160 <option>-pgmdll</option>,
161 <option>-pgmdep</option>,
162 <option>-pgmF</option>,
163 <option>-optl</option>,
164 <option>-optdll</option>,
165 <option>-optdep</option>,
166 <option>-fno-asm-mangling</option>.
167 See <xref linkend="static-dynamic-flags" /> for more on
168 the meaning of static and dynamic flags, and
169 <xref linkend="flag-reference" /> for more on the flags
175 There is a new flag <option>-x</option> for overriding the
176 default behaviour for source files; see
177 <xref linkend="overriding-suffixes" /> details.
182 The <option>-fglobalise-toplev-names</option>
183 flag has been removed.
188 The <option>-fallow-overlapping-instances</option> flag is
189 implied by the <option>-fallow-incoherent-instances</option>
195 The directory that the <filename>foo_stub.c</filename> and
196 <filename>foo_stub.h</filename> files are put in can now be
197 controlled with the <option>-stubdir</option> flag.
198 See <xref linkend="options-output" /> for more details.
203 When the <option>-fno-implicit-prelude</option> is given,
204 the equality test performed when pattern matching against an
205 overloaded numeric literal now uses the
206 <literal>(==)</literal> in scope, rather than the one from
207 <literal>Prelude</literal>. Likewise, the subtraction and
208 inequality test performed when pattern matching against
209 <literal>n+k</literal> patterns uses the
210 <literal>(-)</literal> and <literal>(>=)</literal> in scope.
215 Another change to <option>-fno-implicit-prelude</option>:
216 with the exception of the arrow syntax, the types of
217 functions used by sugar (such as do notation, numeric
218 literal patterns) need not match the types of the
219 <literal>Prelude</literal> functions normally used.
224 The <literal>InstalledPackageInfo</literal> syntax has
226 instead of <literal>extra-libs</literal> we have
227 <literal>extra-libraries</literal>,
228 instead of <literal>extra-hugs-opts</literal> we have
229 <literal>hugs-options</literal>,
230 instead of <literal>extra-cc-opts</literal> we have
231 <literal>cc-options</literal>,
232 instead of <literal>extra-ld-opts</literal> we have
233 <literal>ld-options</literal>,
234 and instead of <literal>extra-frameworks</literal> we have
235 <literal>frameworks</literal>.
236 See <xref linkend="installed-pkg-info" /> for details.
241 If you <literal>newtype</literal> the IO monad, e.g.
243 newtype MyIO a = MyIO (IO a)</programlisting>
244 then GHC will now allow you to have FFI calls return
245 <literal>MyIO <replaceable>t</replaceable></literal>
247 <literal>IO <replaceable>t</replaceable></literal>.
248 See <xref linkend="ffi-newtype-io"/>
251 <listitem> <para> GHC's mechansim for deriving user-defined classes
252 for newtypes has been further generalised, to multi-parameter type
253 classes and higher-kinded types. See <xref
254 linkend="newtype-deriving"/>.
258 By default, pattern bindings in GHC are now monomorphic.
259 This means that some valid Haskell 98 programs will get
260 rejected, but we believe they will be few in number.
261 To revert to the old behaviour use the
262 <option>-fno-mono-pat-binds</option> flag.
263 More details are in <xref linkend="options-language" />.
268 GHCi already does more defaulting than Haskell 98 so that, for
269 example, <literal>reverse []</literal> shows a result rather
270 than giving an ambiguous type variable error. There is now a
271 flag <option>-fextended-default-rules</option> to use these
272 defaulting rules with GHC too.
273 More details are in <xref linkend="extended-default-rules" />.
278 You can now give both class and instance declarations in
279 <filename>.hs-boot</filename> files. More details in
280 <xref linkend="mutual-recursion" />.
285 Linear implicit parameters have been scheduled for removal for some
286 time. In 6.6 we've removed them from the user manual, and they may
287 well disappear from the compiler itself in 6.6.1.
292 If the program is idle for a certain amount of time then GHC
293 will now take the opportunity to do a major garbage collection.
294 The amount of idle time that is required before that happens
295 is controlled by the new <literal>-I</literal> RTS flag.
296 There is more detail in <xref linkend="rts-options-gc" />.
301 It is now possible to control the frequency that the RTS clock
302 ticks at with the new <literal>-V</literal> RTS flag. This is
303 normally handled automatically by other flags, but this flag
304 is needed if you want to increase the resolution of the time
306 For more details see <xref linkend="rts-options-misc" />.
311 The old syntax for FFI declarations (deprecated since 5.04)
312 is no longer accepted.
317 The <option>-split-objs</option> flag, which when used to compile
318 libraries means executables using the library will be smaller,
319 can now be used with <option>--make</option> and hence
320 can be used by cabal.
321 See <xref linkend="options-linker" /> for more information.
326 Template Haskell used to have limited support for type signatures in
327 patterns, but since that design is in flux for Haskell (let alone
328 Template Haskell), we've removed type signatures in patterns from
334 GHC now supports postfix operators, as a simple generalisation of
335 left sections (<xref linkend="postfix-operators"/>).
340 Parallel arrays, as enabled by <literal>-fparr</literal>, no
341 longer work. They'll be coming back shortly, in full glory.
348 <title>GHCi changes</title>
353 GHCi now allows tab completion of in-scope names and modules
354 on platforms that use readline (i.e. not Windows).
359 GHCi now has a <literal>:main</literal> command that allows
360 you to call the <literal>main</literal> function with
361 command-line arguments.
362 See <xref linkend="ghci-commands" /> for more information.
367 GHCi now has <literal>:ctags</literal> and
368 <literal>:etags</literal> commands to generate tags files for
369 vi-style and emacs-style editors respectively.
370 See <xref linkend="ghci-commands" /> for more information.
375 GHCi now invokes <literal>print</literal> by default on the
376 result of IO actions and bindings at the prompt. This is
377 occasionally not what you want, so it can be disabled (at
378 least for bindings) with
379 <literal>:set -fno-print-bind-result</literal>. See <xref
380 linkend="ghci-stmts" />.</para>
386 <title>Libraries</title>
388 Libraries are now divided into core libraries (those that are
389 necessary to build GHC) and extra libraries. Decoupling the extra
390 libraries means that they can release independently of GHC
391 releases, and makes development builds of GHC quicker as they no
392 longer need to build unnecessary libraries.
396 The hslibs libraries have finally been removed.
401 <title>Core Libraries</title>
407 Version number 2.0 (was 1.0).
412 We now have <literal>Read</literal> and
413 <literal>Show</literal> instances for up to 15-tuples (used
414 to be up to 5-tuples).
419 New module <literal>Control.Applicative</literal> that
420 describes a structure intermediate between a functor and
421 a monad: it provides pure expressions and sequencing, but
427 <literal>Control.Exception</literal> now exports
428 <literal>bracketOnError</literal>, which behaves like
429 <literal>bracket</literal> but only runs the final
430 action if the main action raised an error.
435 There is a new module
436 <literal>Control.Monad.Instances</literal> which
437 provides <literal>Monad</literal> and
438 <literal>Functor</literal> instances for
439 <literal>((->) r)</literal> (were in
440 <literal>mtl</literal>'s
441 <literal>Control.Monad.Reader</literal>),
442 a <literal>Functor</literal> instance for
443 <literal>(Either a)</literal> (was in <literal>mtl</literal>'s
444 <literal>Control.Monad.Error</literal>) and a
445 <literal>Functor</literal> instance for
446 <literal>((,) a)</literal> (new).
451 The <literal>MonadFix</literal> instance for
452 <literal>((->) r)</literal> is now in
453 <literal>Control.Monad.Fix</literal> (was in
454 <literal>mtl</literal>'s
455 <literal>Control.Monad.Reader</literal>).
460 <literal>Control.Monad.ST</literal> now exports
461 <literal>unsafeSTToIO</literal>.
466 The <literal>HasBounds</literal> class has been removed from
467 <literal>Data.Array.Base</literal>, and its
468 <literal>bounds</literal> method is now in the
469 <literal>IArray</literal> class. The
470 <literal>MArray</literal> class
471 has also gained a method <literal>getBounds</literal>.
476 <literal>Data.Array.Base</literal> now provides an
477 <literal>MArray (STArray s) e (Lazy.ST s)</literal>
483 <literal>Data.Array.Storable</literal> now exports a
484 function <literal>unsafeForeignPtrToStorableArray</literal>.
489 The new <literal>Data.ByteString</literal> hierarchy
490 provides time and space-efficient byte vectors.
491 The old <literal>Data.PackedString</literal> module is now
492 deprecated as a result, although there is not yet a
493 replacement if you need full unicode support.
498 <literal>GHC.Exts</literal> now provides a function
499 <literal>inline</literal> which, provided the RHS is visible
500 to the compiler, forcibly inlines its argument.
501 Otherwise, it acts like <literal>id</literal>.
502 For more details, see <xref linkend="special-ids" />.
507 <literal>GHC.Exts</literal> now provides a function
508 <literal>lazy</literal> which forces GHC to think that its
509 argument is lazy in its first argument.
510 For more details, see <xref linkend="special-ids" />.
515 <literal>Data.FiniteMap</literal> has been removed
516 (deprecated since 6.4). Use <literal>Data.Map</literal>
522 <literal>Data.Char</literal> now exports
523 <literal>isLetter</literal>,
524 <literal>isMark</literal>,
525 <literal>isNumber</literal>,
526 <literal>isPunctuation</literal>,
527 <literal>isSymbol</literal>,
528 <literal>isSeparator</literal>,
529 <literal>isAsciiUpper</literal>,
530 <literal>isAsciiLower</literal> and
531 <literal>toTitle</literal>.
532 It also exports a function
533 <literal>generalCategory</literal> that tells you the
534 category of a character in terms of a datatype
535 <literal>GeneralCategory</literal>.
540 <literal>Data.Dynamic</literal> now exports a function
541 <literal>dynTypeRep</literal>.
546 There is a new module <literal>Data.Eq</literal> which
547 just exports the <literal>Eq</literal> class.
548 Likewise, a new module <literal>Data.Ord</literal>
549 exports the <literal>Ord</literal> class, as well as the
550 handy <literal>comparing</literal> function.
555 There is a new module <literal>Data.Fixed</literal>
556 providing fixed-precision arithmetic.
561 There is a new module <literal>Data.Foldable</literal>
562 providing a class for foldable datatypes. It gives instances
563 for <literal>Maybe</literal>, <literal>[]</literal> and
564 <literal>Array i</literal>.
569 There is a new module <literal>Data.Traversable</literal>
570 providing a class for data structures that can be traversed
571 from left to right. It gives instances
572 for <literal>Maybe</literal>, <literal>[]</literal> and
573 <literal>Array i</literal>.
578 <literal>Data.FunctorM</literal> has been deprecated;
579 use <literal>Data.Foldable</literal> and
580 <literal>Data.Traversable</literal> instead.
585 The <literal>toConstr</literal> definitions for tuples in
586 <literal>Data.Generics.Instances</literal> now actually
587 evaluate their arguments to tuples before returning
593 <literal>Data.IntMap</literal> now exports
594 <literal>notMember</literal>,
595 <literal>alter</literal>,
596 <literal>mapMaybe</literal>,
597 <literal>mapMaybeWithKey</literal>,
598 <literal>mapEither</literal> and
599 <literal>mapEitherWithKey</literal>.
600 It also has <literal>Monoid</literal>,
601 <literal>Foldable</literal> and <literal>Read</literal>
607 <literal>Data.IntSet</literal> now exports
608 <literal>notMember</literal>. It also has
609 <literal>Monoid</literal> and <literal>Read</literal>
615 <literal>Data.Map</literal> now exports
616 <literal>notMember</literal>,
617 <literal>alter</literal>,
618 <literal>mapMaybe</literal>,
619 <literal>mapMaybeWithKey</literal>,
620 <literal>mapEither</literal>,
621 <literal>mapEitherWithKey</literal>,
622 <literal>minView</literal> and
623 <literal>maxView</literal>.
624 It also has <literal>Monoid</literal>,
625 <literal>Traversable</literal>, <literal>Foldable</literal>
626 and <literal>Read</literal> instances.
631 <literal>Data.Set</literal> now exports
632 <literal>notMember</literal>,
633 <literal>minView</literal> and
634 <literal>maxView</literal>.
635 It also has <literal>Monoid</literal>,
636 <literal>Foldable</literal>
637 and <literal>Read</literal> instances.
641 The old, deprecated (since 6.4) interface consisting of
642 <literal>emptySet</literal>,
643 <literal>mkSet</literal>,
644 <literal>setToList</literal>,
645 <literal>unitSet</literal>,
646 <literal>elementOf</literal>,
647 <literal>isEmptySet</literal>,
648 <literal>cardinality</literal>,
649 <literal>unionManySets</literal>,
650 <literal>minusSet</literal>,
651 <literal>mapSet</literal>,
652 <literal>intersect</literal>,
653 <literal>addToSet</literal> and
654 <literal>delFromSet</literal> has been removed.
659 <literal>Data.Monoid</literal> no longer contains the
660 <literal>Monoid</literal>
661 instances for <literal>Map</literal>,
662 <literal>IntMap</literal>, <literal>Set</literal> and
663 <literal>IntSet</literal>. They have been moved to their own
664 modules, as above. The <literal>(a -> a)</literal> instance
665 has been replaced with a
666 <literal>Monoid b => Monoid (a -> b)</literal> instance.
667 The module also now exports
668 <literal>Dual</literal>,
669 <literal>Endo</literal>,
670 <literal>All</literal>,
671 <literal>Any</literal>,
672 <literal>Sum</literal> and
673 <literal>Product</literal> types, and
674 <literal>Monoid</literal> instances for them.
679 There is a new module <literal>Data.Sequence</literal>
680 for finite sequences. The <literal>Data.Queue</literal>
681 module is now deprecated in favour of this faster, more
682 featureful replacement.
687 <literal>Data.Tree</literal> now has
688 <literal>Data</literal>, <literal>Typeable</literal>,
689 <literal>Traversable</literal> and
690 <literal>Foldable</literal>
692 <literal>Tree</literal> datatype.
697 <literal>Data.Typeable</literal> now uses
698 <option>-fallow-overlapping-instances</option>, so the
699 generic instances can be overriden for your own datatypes.
704 <literal>Debug.Trace</literal> now exports
705 <literal>traceShow</literal>, which is the same as
706 <literal>trace</literal> except its first argument can be
707 any showable thing rather than being required to be a
713 <literal>Foreign.C.Types</literal> now also defines
714 <literal>CIntPtr</literal>,
715 <literal>CUIntPtr</literal>,
716 <literal>CIntMax</literal> and
717 <literal>CUIntMax</literal>.
722 <literal>Foreign.ForeignPtr</literal> now exports
723 <literal>FinalizerEnvPtr</literal>,
724 <literal>newForeignPtrEnv</literal> and
725 <literal>addForeignPtrFinalizerEnv</literal>.
726 Together, these allow the use of finalizers which are passed
727 an additional environment parameter.
732 <literal>Foreign.Marshal.Utils</literal> no longer exports
733 the <literal>withObject</literal> function, deprecated since
734 5.04; use <literal>with</literal> instead.
739 Foreign.Ptr now also defines
740 <literal>IntPtr</literal>,
741 <literal>ptrToIntPtr</literal>,
742 <literal>intPtrToPtr</literal>,
743 <literal>WordPtr</literal>,
744 <literal>ptrToWordPtr</literal> and
745 <literal>wordPtrToPtr</literal>.
750 There are now <literal>Bounded</literal> instances for up to
751 15-tuples (used to be up to 4-tuples).
756 The <literal>Text.Html</literal> and
757 <literal>Text.Html.BlockTable</literal> modules have now
758 been removed, with the new <literal>html</literal> and
759 <literal>xhtml</literal> packages providing replacements.
764 <literal>Text.Read</literal> now exports a function
765 <literal>parens</literal> which parses a value in an
766 arbitrary number of parentheses.
771 The <literal>ForeignPtr</literal> datatype has been altered
772 to make it more efficient. There are also new functions
773 <literal>mallocPlainForeignPtr</literal> and
774 <literal>mallocPlainForeignPtrBytes</literal> which
775 do not allow you to attach a finalizer to the
776 <literal>ForeignPtr</literal>.
781 The <literal>Text.Regex</literal> and
782 <literal>Text.Regex.Posix</literal> modules have been removed.
783 Instead, use the new <literal>regex-compat</literal> package
784 for a drop-in <literal>Text.Regex</literal> replacement, or
785 the new library in the new <literal>regex-posix</literal>
797 Version number 1.1.6 (was 1.1.4).
802 Support for JHC, symmetric to the support for the other
803 implementations, has been added throughout.
808 Support for object splitting and building in-place
809 has been added throughout.
814 Added a <filename>debianTemplate</filename> directory with
815 templates for building Debian packages from Cabal packages.
820 There are now modules
821 <literal>Distribution.Simple.<replaceable>compiler</replaceable></literal>
822 for each of <literal>GHC</literal>, <literal>NHC</literal>,
823 <literal>Hugs</literal> and <literal>JHC</literal>.
824 The <literal>Distribution.Simple.Build</literal> and
825 <literal>Distribution.Simple.Install</literal> modules have
826 shrunk correspondingly.
831 <literal>Distribution.GetOpt</literal> is no longer a
837 <literal>Distribution.Simple</literal> exports a function
838 <literal>defaultMainArgs</literal>, which is identical to
839 <literal>defaultMain</literal> except that the arguments are
840 given as a list of strings rather than being retrieved with
841 <literal>getArgs</literal>.
846 <literal>Distribution.Simple.Configure</literal>
848 <literal>LocalBuildInfo</literal>,
850 <literal>configDependency</literal> and
851 <literal>configCompilerAux</literal>.
856 <literal>Distribution.Simple.LocalBuildInfo</literal> now
857 exports <literal>mkHaddockDir</literal>,
858 <literal>distPref</literal>,
859 <literal>srcPref</literal>,
860 <literal>autogenModulesDir</literal> and
861 <literal>mkIncludeDir</literal>.
866 <literal>Distribution.PackageDescription</literal> now
867 exports <literal>haddockName</literal>.
872 <literal>Distribution.Simple.Utils</literal> now exports
873 <literal>copyDirectoryRecursiveVerbose</literal>,
874 <literal>dirOf</literal>,
875 <literal>distPref</literal>,
876 <literal>haddockPref</literal> and
877 <literal>srcPref</literal>.
878 It no longer exports <literal>mkGHCiLibName</literal>.
885 <title>haskell98</title>
889 No change (version 1.0).
896 <title>parsec</title>
900 Version number 2.0 (was 1.0).
912 <title>readline</title>
916 No change (version 1.0).
923 <title>regex-base</title>
932 New library that provides common functions for different
940 <title>regex-compat</title>
949 New package providing a replacement
950 <literal>Text.Regex</literal> module.
957 <title>regex-posix</title>
966 A new package providing POSIX regexes.
977 Version number 2.0 (was 1.0).
982 A new module <literal>Control.Monad.STM</literal>
984 <literal>MonadPlus</literal> instance for
985 <literal>STM</literal> and the function
986 <literal>check</literal> (both used to be in
987 <literal>Control.Concurrent.STM</literal>).
989 <literal>STM</literal>,
990 <literal>atomically</literal>,
991 <literal>retry</literal>,
992 <literal>orElse</literal> and
993 <literal>catchSTM</literal>.
999 <literal>Control.Concurrent.STM.TArray</literal> defines
1000 <literal>TArray</literal>, a transactional array, and makes
1001 it an instance of <literal>MArray</literal>.
1006 <literal>Control.Concurrent.STM.TChan</literal> now provides
1007 a function <literal>newTChanIO</literal>, which allows
1008 <literal>TChan</literal>s to be created in the IO monad.
1009 Similarly, <literal>Control.Concurrent.STM.TMVar</literal>
1010 provides <literal>newTMVarIO</literal> and
1011 <literal>newEmptyTMVarIO</literal>, and
1012 <literal>Control.Concurrent.STM.TVar</literal> exports
1013 <literal>newTVarIO</literal>.
1018 <literal>Control.Concurrent.STM.TVar</literal> exports
1019 <literal>registerDelay</literal>.
1024 The <literal>Control.Concurrent.STM</literal> module has been
1025 updated to re-export all the new modules.
1032 <title>template-haskell</title>
1036 Version number 2.0 (was 1.0).
1041 A <literal>Show</literal> instance is now derived for
1042 <literal>Info</literal>, <literal>Fixity</literal> and
1043 <literal>FixityDirection</literal> in
1044 <literal>Language.Haskell.TH.Syntax</literal>.
1049 In <literal>Language.Haskell.TH.Syntax</literal>, there is
1050 a type <literal>PkgName</literal> and functions
1051 <literal>mkPkgName</literal> and
1052 <literal>pkgString</literal>
1053 for dealing with package names.
1058 The <literal>patGE</literal> function in
1059 <literal>Language.Haskell.TH.Lib</literal> now takes the
1060 final expression separately to the list of statements
1061 rather than splitting it off itself.
1072 No change (version 1.0).
1079 <title>Win32</title>
1083 Version number 2.0 (was 1.0).
1088 Now maintained by Esa Ilari Vuokko.
1093 There is a new module
1094 <literal>System.Win32.Console</literal>
1095 providing an interface to the Windows Console API.
1100 There is a new module
1101 <literal>System.Win32.DebugApi</literal>
1102 providing an interface to the Windows DebugApi.
1107 There is a new module
1108 <literal>System.Win32.FileMapping</literal>
1109 for working with memory-mapped files.
1114 There is a new module
1115 <literal>System.Win32.SimpleMAPI</literal>
1116 for using the Windows mail API.
1121 There is a new module
1122 <literal>System.Win32.Time</literal>
1123 for using the Windows time API.
1128 <literal>iNVALID_HANDLE_VALUE</literal> has moved from
1129 <literal>Graphics.Win32.Misc</literal> to
1130 <literal>System.Win32.Types</literal>.
1135 <literal>System.Win32.File</literal> has a new
1136 function <literal>getFileInformationByHandle</literal>
1137 and associated data types.
1142 <literal>System.Win32.Info</literal> has a new
1143 function <literal>getSystemInfo</literal> and associated
1149 <literal>System.Win32.Process</literal> now has many more
1155 <literal>System.Win32.Types</literal> has new types
1156 <literal>LARGE_INTEGER</literal>, <literal>DDWORD</literal>
1157 and <literal>SIZE_T</literal>. It also has new helper
1158 functions <literal>ddwordToDwords</literal> and
1159 <literal>dwordsToDdword</literal> to split and combine
1160 ddwords into high and low components.
1165 <literal>System.Win32</literal> re-exports
1166 <literal>System.Win32.FileMapping</literal>,
1167 <literal>System.Win32.Time</literal>
1168 and <literal>System.Win32.Console</literal>.
1176 <title>Extra Libraries</title>
1182 Version number 2.0 (was 1.0).
1187 <literal>Sound.ALUT.BuiltInSounds</literal> has been removed.
1188 Its <literal>Phase</literal> and <literal>Duration</literal>
1189 exports are now exported by
1190 <literal>Sound.ALUT.Loaders</literal> and its
1191 <literal>helloWorld</literal>,
1192 <literal>sine</literal>,
1193 <literal>square</literal>,
1194 <literal>sawtooth</literal>,
1195 <literal>impulse</literal> and
1196 <literal>whiteNoise</literal>
1197 exports are now constructors of the
1198 <literal>Sound.ALUT.Loaders.SoundDataSource</literal>
1206 <title>arrows</title>
1210 Version number 0.2 (was 0.1).
1215 <literal>Control.Sequence</literal> has been removed in
1216 favour of the new <literal>Control.Applicative</literal>
1217 module in <literal>base</literal>.
1233 <literal>cgi</literal> is a new package, developing on
1234 what used to be <literal>Network.CGI</literal> in the
1235 <literal>network</literal> package.
1246 Version number 5.3 (was 5.2).
1251 <literal>Data.Graph.Inductive.Graph</literal> no longer
1252 exports <literal>UContext</literal>.
1257 <literal>Data.Graph.Inductive.Graph</literal> now exports
1258 <literal>delLEdge</literal>.
1269 Version number remains 2.0.
1274 In <literal>Graphics.UI.GLUT.Initialization</literal>,
1275 <literal>DisplayMode</literal> has a new constructor
1276 <literal>WithAuxBuffers</literal> and
1277 <literal>DisplayCapability</literal> has a new constructor
1278 <literal>DisplayAux</literal>. These represent freeglut-only
1284 There are new examples in
1285 <filename>BOGLGP/Chapter03/OnYourOwn1.hs</filename>,
1286 <filename>RedBook/AAIndex.hs</filename>,
1287 <filename>RedBook/AARGB.hs</filename>,
1288 <filename>RedBook/AccAnti.hs</filename>,
1289 <filename>RedBook/AccPersp.hs</filename>,
1290 <filename>RedBook/Alpha3D.hs</filename>,
1291 <filename>RedBook/DOF.hs</filename>,
1292 <filename>RedBook/FogIndex.hs</filename>,
1293 <filename>RedBook/Multisamp.hs</filename>,
1294 <filename>RedBook/PointP.hs</filename>,
1295 <filename>RedBook/PolyOff.hs</filename>,
1296 <filename>RedBook/Stencil.hs</filename>,
1297 <filename>RedBook/Stroke.hs</filename> and
1298 <filename>RedBook/Torus.hs</filename>,
1300 <filename>RedBook/Font.hs</filename> and
1301 <filename>RedBook/Histogram.hs</filename> have been
1309 <title>haskell-src</title>
1313 No change (version 1.0).
1324 No change (version 3.1).
1340 <literal>html</literal> is a new package, developing on
1341 what used to be <literal>Text.Html</literal> and
1342 <literal>Text.Html.BlockTable</literal> in the
1343 <literal>base</literal> package.
1348 <literal>Text.Html.BlockTable</literal> exports a new
1349 function <literal>empty</literal>.
1356 <title>HUnit</title>
1360 No change (version 1.1).
1371 No change (version 1.0).
1378 <title>network</title>
1382 Version number 2.0 (was 1.0).
1387 <literal>Network.CGI</literal> has been removed; use the
1388 <literal>cgi</literal> package instead.
1393 <literal>Network.BSD</literal> no longer exports
1394 <literal>symlink</literal> or <literal>readlink</literal>;
1396 <literal>System.Posix.Files.createSymbolicLink</literal> and
1397 <literal>System.Posix.Files.readSymbolicLink</literal>
1403 <literal>Network.BSD</literal> now exports
1404 <literal>defaultProtocol</literal>.
1409 <literal>Network.Socket.SocketStatus</literal> now has a
1410 constructor <literal>ConvertedToHandle</literal> for sockets
1411 that have been converted to handles.
1416 <literal>Network.Socket.Family</literal> now has the
1417 following additional constructors:
1418 <literal>AF_NETROM</literal>,
1419 <literal>AF_BRIDGE</literal>,
1420 <literal>AF_ATMPVC</literal>,
1421 <literal>AF_ROSE</literal>,
1422 <literal>AF_NETBEUI</literal>,
1423 <literal>AF_SECURITY</literal>,
1424 <literal>AF_PACKET</literal>,
1425 <literal>AF_ASH</literal>,
1426 <literal>AF_ECONET</literal>,
1427 <literal>AF_ATMSVC</literal>,
1428 <literal>AF_IRDA</literal>,
1429 <literal>AF_PPPOX</literal>,
1430 <literal>AF_WANPIPE</literal> and
1431 <literal>AF_BLUETOOTH</literal>.
1436 In <literal>Network.URI</literal>,
1437 <literal>parseabsoluteURI</literal> has been deprecated with
1438 a new function <literal>parseAbsoluteURI</literal> taking
1446 <title>ObjectIO</title>
1450 No change (version 1.0).
1457 <title>OpenAL</title>
1461 Version number 1.3 (was 1.2).
1473 <title>OpenGL</title>
1477 Version number 2.1 (was 2.0).
1489 <title>QuickCheck</title>
1493 No change (version 1.0).
1509 <literal>time</literal> is a new package, for dealing with
1510 dates, times and time intervals.
1521 Version number 1.2 (was 1.1).
1526 In <literal>Graphics.X11.Xlib.Types</literal>,
1527 <literal>XGCValues</literal> has been renamed
1528 <literal>GCValues</literal> and
1529 <literal>XSetWindowAttributes</literal> has been renamed
1530 <literal>SetWindowAttributes</literal>.
1535 In <literal>Graphics.X11.Xlib.Misc</literal>,
1536 <literal>allocaXSetWindowAttributes</literal> has been
1537 renamed <literal>allocaSetWindowAttributes</literal>.
1542 The <literal>FontStruct</literal> type has moved from
1543 <literal>Graphics.X11.Xlib.Types</literal> to
1544 <literal>Graphics.X11.Xlib.Font</literal>.
1550 <literal>Point</literal>,
1551 <literal>Rectangle</literal>,
1552 <literal>Arc</literal>,
1553 <literal>Segment</literal> and
1554 <literal>Color</literal> types in
1555 <literal>Graphics.X11.Xlib.Types</literal>
1556 are now proper datatypes rather than synonyms for tuples.
1557 They all have a <literal>Storable</literal> instance.
1562 The <literal>Byte</literal> and <literal>Short</literal>
1563 types from <literal>Graphics.X11.Xlib.Types</literal> have
1565 The following type synonyms, which had already been marked
1566 "Backwards compatibility", have also been removed:
1567 <literal>ListPoint</literal>,
1568 <literal>ListRectangle</literal>,
1569 <literal>ListArc</literal>,
1570 <literal>ListSegment</literal> and
1571 <literal>ListColor</literal>.
1576 <literal>Eq</literal>,
1577 <literal>Ord</literal>,
1578 <literal>Show</literal>,
1579 <literal>Typeable</literal> and
1580 <literal>Data</literal> are now derived for:
1581 <literal>XEvent</literal>,
1582 <literal>FdSet</literal> and
1583 <literal>TimeZone</literal> in
1584 <literal>Graphics.X11.Xlib.Event</literal>,
1585 <literal>FontStruct</literal> in
1586 <literal>Graphics.X11.Xlib.Font</literal>,
1587 <literal>XErrorEvent</literal>,
1588 <literal>XComposeStatus</literal> and
1589 <literal>XTextProperty</literal> in
1590 <literal>Graphics.X11.Xlib.Misc</literal>,
1591 <literal>Region</literal> in
1592 <literal>Graphics.X11.Xlib.Region</literal>,
1593 <literal>Display</literal>,
1594 <literal>Screen</literal>,
1595 <literal>Visual</literal>,
1596 <literal>GC</literal>,
1597 <literal>GCValues</literal>,
1598 <literal>SetWindowAttributes</literal>,
1599 <literal>Point</literal>,
1600 <literal>Rectangle</literal>,
1601 <literal>Arc</literal>,
1602 <literal>Segment</literal> and
1603 <literal>Color</literal> in
1604 <literal>Graphics.X11.Xlib.Types</literal>.
1611 <title>xhtml</title>
1620 <literal>xhtml</literal> is a new package, developing on
1621 what used to be <literal>Text.Html</literal> and
1622 <literal>Text.Html.BlockTable</literal> in the
1623 <literal>base</literal> package.
1631 <title>GHC As A Library</title>
1636 The internal modules of GHC are now available as a library, package
1637 name <literal>ghc</literal>.
1638 The interface has not been designed with use by other programs
1639 in mind, so expect the API to vary radically in future
1643 An introduction to using the library can be found
1644 <ulink url="http://haskell.org/haskellwiki/GHC/As_a_library">on the wiki</ulink>.
1649 <title>Internal changes</title>
1653 GHC development now has its own integrated
1654 <ulink url="http://hackage.haskell.org/trac/ghc">wiki and bug
1660 GHC has now moved to darcs. See
1662 url="http://hackage.haskell.org/trac/ghc/wiki/GhcDarcs">the
1663 wiki</ulink> for more details. The sources have moved around a
1664 bit within the tree as a result, most notably the GHC sources
1665 are no longer kept within a <filename>ghc/</filename>
1671 The native code generator is now capable of compiling loops,
1672 which gets us a big step closer to being able to compile
1673 entirely without gcc on well-supported arches.