summaryrefslogtreecommitdiff
path: root/docs/users_guide/7.12.1-notes.xml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/users_guide/7.12.1-notes.xml')
-rw-r--r--docs/users_guide/7.12.1-notes.xml628
1 files changed, 0 insertions, 628 deletions
diff --git a/docs/users_guide/7.12.1-notes.xml b/docs/users_guide/7.12.1-notes.xml
deleted file mode 100644
index c71887fa28..0000000000
--- a/docs/users_guide/7.12.1-notes.xml
+++ /dev/null
@@ -1,628 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<sect1 id="release-7-12-1">
- <title>Release notes for version 7.12.1</title>
-
- <para>
- The significant changes to the various parts of the compiler are listed
- in the following sections. There have also been numerous bug fixes and
- performance improvements over the 7.10 branch.
- </para>
-
- <sect2>
- <title>Highlights</title>
-
- <para>
- The highlights, since the 7.10 branch, are:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>
- TODO FIXME
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
-
- <sect2>
- <title>Full details</title>
- <sect3>
- <title>Language</title>
- <itemizedlist>
- <listitem>
- <para>
- TODO FIXME.
- </para>
- </listitem>
-
- <listitem>
- <para>
- The parser now supports Haddock comments on GADT data constructors. For example,
- <programlisting>
- data Expr a where
- -- | Just a normal sum
- Sum :: Int -> Int -> Expr Int
- </programlisting>
- </para>
- </listitem>
- <listitem>
- <para>
- Implicit parameters of the new ghc-prim type
- <literal>GHC.Types.CallStack</literal> are treated
- specially, and automatically solved for the current source
- location. For example
- <programlisting>
- f = print (?stk :: CallStack)
- </programlisting>
- will print the singleton stack containing the occurrence of
- <literal>?stk</literal>. If there is another
- <literal>CallStack</literal> implicit in-scope, the new location
- will be appended to the existing stack, e.g.
- <programlisting>
- f :: (?stk :: CallStack) => IO ()
- f = print (?stk :: CallStack)
- </programlisting>
- will print the occurrence of <literal>?stk</literal> and the
- call-site of <literal>f</literal>. The name of the implicit
- parameter does not matter.
- </para>
- <para>
- See the release notes for ghc-prim for a description of the
- <literal>CallStack</literal> type.
- </para>
- </listitem>
-
- <listitem>
- <para>
- To conform to the common case, the default role assigned to parameters
- of datatypes declared in <literal>hs-boot</literal> files is
- <literal>representational</literal>. However, if the constructor(s)
- for the datatype are given, it makes sense to do normal role inference.
- This is now implemented, effectively making the default role for
- non-abstract datatypes in <literal>hs-boot</literal> files to be
- <literal>phantom</literal>, like it is in regular Haskell code.
- </para>
- </listitem>
- <listitem>
- <para>
- Wildcards can be used in the type arguments of type/data
- family instance declarations to indicate that the name of a
- type variable doesn't matter. They will be replaced with new
- unique type variables. See <xref
- linkend="data-instance-declarations"/> for more details.
- </para>
- </listitem>
-
- <listitem>
- <para>
- GHC now allows to declare type families as injective.
- Injectivity information can then be used by the typechecker.
- See <xref linkend="injective-ty-fams"/> for details.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Due to a <ulink href="https://ghc.haskell.org/trac/ghc/ticket/10826">
- security issue
- </ulink>, Safe Haskell now forbids annotations in programs marked as
- <literal>-XSafe</literal>
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Compiler</title>
- <itemizedlist>
- <listitem>
- <para>
- Added the option <option>-dth-dec-file</option>.
-
- This dumps out a .th.hs file of all Template Haskell declarations in a corresponding .hs file. The idea is that application developers can check this into their repository so that they can grep for identifiers used elsewhere that were defined in Template Haskell.
- This is similar to using <option>-ddump-to-file</option> with <option>-ddump-splices</option> but it always generates a file instead of being coupled to <option>-ddump-to-file</option> and only outputs code that does not exist in the .hs file and a comment for the splice location in the original file.
- </para>
- </listitem>
- <listitem>
- <para>
- Added the option <option>-fprint-expanded-types</option>.
-
- When enabled, GHC also prints type-synonym-expanded types in
- type errors.
- </para>
- </listitem>
- <listitem>
- <para>
- Added the option <option>-fcpr-anal</option>.
-
- When enabled, the demand analyser performs CPR analysis.
- It is implied by <option>-O</option>. Consequently,
- <option>-fcpr-off</option> is now removed, run with
- <option>-fno-cpr-anal</option> to get the old
- <option>-fcpr-off</option> behaviour.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>GHCi</title>
- <itemizedlist>
- <listitem>
- <para>
- <literal>Main</literal> with an explicit module header but
- without <literal>main</literal> is now an error (#7765).
- </para>
- <para>
- The <literal>:back</literal> and <literal>:forward</literal>
- commands now take an optional count allowing the user to move forward or
- backward in history several steps at a time.
- </para>
- <para>
- Added commands <literal>:load!</literal> and <literal>:reload!</literal>,
- effectively setting "-fdefer-type-errors" before loading a module and
- unsetting it after loading if it has not been set before (#8353).
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Template Haskell</title>
- <itemizedlist>
- <listitem>
- <para>
- The <literal>TemplateHaskell</literal> now no longer automatically
- errors when used with a stage 1 compiler (i.e. GHC without
- interpreter support); in particular, plain
- Haskell quotes (not quasi-quotes) can now be compiled without erroring.
- Splices and quasi-quotes continue to only be supported by a
- stage 2 compiler.
- </para>
- </listitem>
- <listitem>
- <para>
- Partial type signatures can now be used in splices, see <xref linkend="pts-where"/>.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>Template Haskell</literal> now supports the use of
- <literal>UInfixT</literal> in types to resolve infix
- operator fixities, in the same vein as
- <literal>UInfixP</literal> and <literal>UInfixE</literal>
- in patterns and expressions. <literal>ParensT</literal>
- and <literal>InfixT</literal> have also been introduced,
- serving the same functions as their pattern and expression
- counterparts.
- </para>
- </listitem>
- <listitem>
- <para>
- Primitive chars (e.g., <literal>[| 'a'# |]</literal>) and
- primitive strings (e.g., <literal>[| "abc"# |]</literal>)
- can now be quoted with Template Haskell. The
- <literal>Lit</literal> data type also has a new
- constructor, <literal>CharPrimL</literal>, for primitive
- char literals.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>addTopDecls</literal> now accepts annotation
- pragmas.
- </para>
- </listitem>
- <listitem>
- <para>
- Internally, the implementation of quasi-quotes has been
- unified with that of normal Template Haskell splices. Under
- the previous implementation, top-level declaration
- quasi-quotes did not cause a break in the declaration
- groups, unlike splices of the form
- <literal>$(...)</literal>. This behavior has been
- preserved under the new implementation, and is now
- recognized and documented in <xref linkend="th-syntax"/>.
- </para>
- </listitem>
- <listitem>
- <para>
- The <literal>Lift</literal> class is now derivable via
- the <option>-XDeriveLift</option> extension. See
- <xref linkend="deriving-lift"/> for more information.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Runtime system</title>
- <itemizedlist>
- <listitem>
- <para>
- TODO FIXME.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Build system</title>
- <itemizedlist>
- <listitem>
- <para>
- TODO FIXME.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Package system</title>
- <itemizedlist>
- <listitem>
- <para>
- TODO FIXME.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- </sect2>
-
- <sect2>
- <title>Libraries</title>
-
- <sect3>
- <title>array</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 0.5.0.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>base</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 4.7.0.0)
- </para>
- </listitem>
- <listitem>
- <para>
- A new module <literal>GHC.SrcLoc</literal> was added,
- exporting a new type <literal>SrcLoc</literal>. A
- <literal>SrcLoc</literal> contains package, module,
- and file names, as well as start and end positions.
- </para>
- </listitem>
- <listitem>
- <para>
- A new type <literal>CallStack</literal> was added for use
- with the new implicit callstack parameters. A
- <literal>CallStack</literal> is a
- <literal>[(String, SrcLoc)]</literal>, sorted by most-recent
- call.
- </para>
- </listitem>
- <listitem>
- <para>
- A new function, <literal>interruptible</literal>, was added
- to <literal>GHC.IO</literal> allowing an
- <literal>IO</literal> action to be run such that it can be
- interrupted by an asynchronous exception, even if exceptions
- are masked (except if masked with
- <literal>interruptibleMask</literal>).
- </para>
- <para>
- This was introduced to fix the behavior of
- <literal>allowInterrupt</literal>, which would previously
- incorrectly allow exceptions in uninterruptible regions
- (see Trac #9516).
- </para>
- </listitem>
- <listitem>
- <para>
- Per-thread allocation counters
- (<literal>setAllocationCounter</literal> and
- <literal>getAllocationCounter</literal>) and limits
- (<literal>enableAllocationLimit</literal>,
- <literal>disableAllocationLimit</literal> are now
- available from <literal>System.Mem</literal>.
- Previously this functionality was only available
- from <literal>GHC.Conc</literal>.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>bin-package-db</title>
- <itemizedlist>
- <listitem>
- <para>
- This is an internal package, and should not be used.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>binary</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 0.7.1.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>bytestring</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 0.10.4.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Cabal</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.18.1.3)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>containers</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 0.5.4.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>deepseq</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.3.0.2)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>directory</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.2.0.2)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>filepath</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.3.0.2)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>ghc</title>
- <itemizedlist>
- <listitem>
- <para>
- TODO FIXME.
- </para>
- </listitem>
- <listitem>
- <para>
- The <literal>HsBang</literal> type has been removed in
- favour of <literal>HsSrcBang</literal> and
- <literal>HsImplBang</literal>. Data constructors now
- always carry around their strictness annotations as
- the user wrote them, whether from an imported module
- or not.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>ghc-prim</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 0.3.1.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>haskell98</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 2.0.0.3)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>haskell2010</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.1.1.1)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>hoopl</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 3.10.0.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>hpc</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 0.6.0.1)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>integer-gmp</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 0.5.1.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>old-locale</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.0.0.6)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>old-time</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.1.0.2)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>process</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.2.0.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>template-haskell</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 2.9.0.0)
- </para>
- </listitem>
- <listitem>
- <para>
- The <literal>Lift</literal> type class for lifting values
- into Template Haskell splices now has a default signature
- <literal>lift :: Data a => a -> Q Exp</literal>, which means
- that you do not have to provide an explicit implementation
- of <literal>lift</literal> for types which have a <literal>Data</literal>
- instance. To manually use this default implementation, you
- can use the <literal>liftData</literal> function which is
- now exported from <literal>Language.Haskell.TH.Syntax</literal>.
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>Info</literal>'s constructors no longer have
- <literal>Fixity</literal> fields. A <literal>qReifyFixity
- </literal> function was added to the <literal>Quasi
- </literal> type class (as well as the <literal>reifyFixity
- </literal> function, specialized for <literal>Q</literal>)
- to allow lookup of fixity information for any given
- <literal>Name</literal>.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>time</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 1.4.1)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>unix</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 2.7.0.0)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
-
- <sect3>
- <title>Win32</title>
- <itemizedlist>
- <listitem>
- <para>
- Version number XXXXX (was 2.3.0.1)
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- </sect2>
-
- <sect2>
- <title>Known bugs</title>
- <itemizedlist>
- <listitem>
- <para>
- TODO FIXME
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
-</sect1>