<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>



<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">

<h3>
Ben Gamari pushed to branch wip/unloading
at <a href="https://gitlab.haskell.org/ghc/ghc">Glasgow Haskell Compiler / GHC</a>
</h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/947206f478d4eef641dfc58cb4c13471a23260c3">947206f4</a></strong>
<div>
<span>by Niklas Hambüchen</span>
<i>at 2020-08-03T07:52:33+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Fix running stage0/bin/ghc with wrong package DB. Fixes #17468.

In the invocation of `cabal configure`, `--ghc-pkg-option=--global-package-db`
was already given correctly to tell `stage0/bin/ghc-pkg` that it should use
the package DB in `stage1/`.

However, `ghc` needs to be given this information as well, not only `ghc-pkg`!
Until now that was not the case; the package DB in `stage0` was given to
`ghc` instead.
This was wrong, because there is no binary compatibility guarantee that says
that the `stage0` DB's `package.cache` (which is written by the
stage0 == system-provided ghc-pkg) can be deserialised by the `ghc-pkg`
from the source code tree.

As a result, when trying to add fields to `InstalledPackageInfo` that get
serialised into / deserialised from the `package.cache`, errors like

    _build/stage0/lib/package.conf.d/package.cache: GHC.PackageDb.readPackageDb: inappropriate type (Not a valid Unicode code point!)

would appear. This was because the `stage0/bin/ghc would try to
deserialise the newly added fields from
`_build/stage0/lib/package.conf.d/package.cache`, but they were not in there
because the system `ghc-pkg` doesn't know about them and thus didn't write them
there.
It would try to do that because any GHC by default tries to read the global
package db in `../lib/package.conf.d/package.cache`.
For `stage0/bin/ghc` that *can never work* as explained above, so we
must disable this default via `-no-global-package-db` and give it the
correct package DB explicitly.

This is the same problem as #16534, and the same fix as in MR !780
(but in another context; that one was for developers trying out the
`stage0/bin/ghc` == `_build/ghc-stage1` interactively, while this fix
is for a `cabal configure` invocation).

I also noticed that the fix for #16534 forgot to pass `-no-global-package-db`,
and have fixed that in this commit as well.
It only worked until now because nobody tried to add a new ghc-pkg `.conf`
field since the introduction of Hadrian.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ef2ae81a394df573510b12b7e11bba0c931249d8">ef2ae81a</a></strong>
<div>
<span>by Alex Biehl</span>
<i>at 2020-08-03T07:52:33+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hardcode RTS includes to cope with unregistered builds
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d613ed7624cbf39192d2a8cf29ab0c0fd2980a15">d613ed76</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-05T03:59:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bignum: add backward compat integer-gmp functions

Also enhance bigNatCheck# and isValidNatural test
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3f2f771869c65125ba013a5dd2b213061efe0fc2">3f2f7718</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-05T03:59:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bignum: add more BigNat compat functions in integer-gmp
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5e12cd1733b581f48a5873b12971b6974778eabb">5e12cd17</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-08-05T04:00:04-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Rename Core.Opt.Driver -> Core.Opt.Pipeline

Closes #18504.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2bff2f87e43985e02bdde8c6fa39279df86cb617">2bff2f87</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-05T04:00:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Revert "iserv: Don't pass --export-dynamic on FreeBSD"

This reverts commit 2290eb02cf95e9cfffcb15fc9c593d5ef79c75d9.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/53ce0db5a06598c88c6b8cb32043b878e7083dd4">53ce0db5</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-05T04:00:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactor handling of object merging

Previously to merge a set of object files we would invoke the linker as
usual, adding -r to the command-line. However, this can result in
non-sensical command-lines which causes lld to balk (#17962).

To avoid this we introduce a new tool setting into GHC, -pgmlm, which is
the linker which we use to merge object files.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/eb7013c3037538aa9c947a21dbbfd7c297929ac8">eb7013c3</a></strong>
<div>
<span>by Hécate</span>
<i>at 2020-08-05T04:01:15-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove all the unnecessary LANGUAGE pragmas
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fbcb886d503dd7aaebc4c40e59615068b3fd0bd7">fbcb886d</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-08-05T04:01:51-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make CodeQ and TExpQ levity polymorphic

The patch is quite straightforward. The only tricky part is that
`Language.Haskell.TH.Lib.Internal` now must be `Trustworthy` instead
of `Safe` due to the `GHC.Exts` import (in order to import `TYPE`).

Since `CodeQ` has yet to appear in any released version of
`template-haskell`, I didn't bother mentioning the change to `CodeQ`
in the `template-haskell` release notes.

Fixes #18521.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/686e06c59c3aa6b66895e8a501c7afb019b09e36">686e06c5</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-08-06T13:34:05-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Grammar for types and data/newtype constructors

Before this patch, we parsed types into a reversed sequence
of operators and operands. For example, (F x y + G a b * X)
would be parsed as [X, *, b, a, G, +, y, x, F],
using a simple grammar:

        tyapps
          : tyapp
          | tyapps tyapp

        tyapp
          : atype
          | PREFIX_AT atype
          | tyop
          | unpackedness

Then we used a hand-written state machine to assemble this
 either into a type,        using 'mergeOps',
     or into a constructor, using 'mergeDataCon'.

This is due to a syntactic ambiguity:

        data T1 a =          MkT1 a
        data T2 a = Ord a => MkT2 a

In T1, what follows after the = sign is a data/newtype constructor
declaration. However, in T2, what follows is a type (of kind
Constraint). We don't know which of the two we are parsing until we
encounter =>, and we cannot check for => without unlimited lookahead.

This poses a few issues when it comes to e.g. infix operators:

        data I1 = Int :+ Bool :+ Char          -- bad
        data I2 = Int :+ Bool :+ Char => MkI2  -- fine

By this issue alone we are forced into parsing into an intermediate
representation and doing a separate validation pass.

However, should that intermediate representation be as low-level as a
flat sequence of operators and operands?

Before GHC Proposal #229, the answer was Yes, due to some particularly
nasty corner cases:

        data T = ! A :+ ! B          -- used to be fine, hard to parse
        data T = ! A :+ ! B => MkT   -- bad

However, now the answer is No, as this corner case is gone:

        data T = ! A :+ ! B          -- bad
        data T = ! A :+ ! B => MkT   -- bad

This means we can write a proper grammar for types, overloading it in
the DisambECP style, see Note [Ambiguous syntactic categories].

With this patch, we introduce a new class, DisambTD. Just like
DisambECP is used to disambiguate between expressions, commands, and patterns,
DisambTD  is used to disambiguate between types and data/newtype constructors.

This way, we get a proper, declarative grammar for constructors and
types:

        infixtype
          : ftype
          | ftype tyop infixtype
          | unpackedness infixtype

        ftype
          : atype
          | tyop
          | ftype tyarg
          | ftype PREFIX_AT tyarg

        tyarg
          : atype
          | unpackedness atype

And having a grammar for types means we are a step closer to using a
single grammar for types and expressions.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6770e199645b0753d2edfddc68c199861a1be980">6770e199</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-08-06T13:34:05-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Clean up the story around runPV/runECP_P/runECP_PV

This patch started as a small documentation change, an attempt to make
Note [Parser-Validator] and Note [Ambiguous syntactic categories]
more clear and up-to-date.

But it turned out that runECP_P/runECP_PV are weakly motivated,
and it's easier to remove them than to find a good rationale/explanation
for their existence.

As the result, there's a bit of refactoring in addition to
a documentation update.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/826d07db0e0f31fe2b2d2e0661be7f0cb3cde3c7">826d07db</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-08-06T13:34:06-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix debug_ppr_ty ForAllTy (#18522)

Before this change, GHC would
pretty-print   forall k. forall a -> ()
          as   forall @k a. ()
which isn't even valid Haskell.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0ddb43848b9fc24f5404915f57dc504546e68292">0ddb4384</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-08-06T13:34:06-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix visible forall in ppr_ty (#18522)

Before this patch, this type:
  T :: forall k -> (k ~ k) => forall j -> k -> j -> Type
was printed incorrectly as:
  T :: forall k j -> (k ~ k) => k -> j -> Type
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d2a432258fa00e22ca386ef30d0a77ff5b277db8">d2a43225</a></strong>
<div>
<span>by Richard Eisenberg</span>
<i>at 2020-08-06T13:34:06-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fail eagerly on a lev-poly datacon arg

Close #18534.

See commentary in the patch.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/63348155404c64334fa864454132630f9d2a4d7f">63348155</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-08-06T13:34:08-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use a type alias for Ways
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9570c21295a2b4a1d1e40939869124f0b9b9bf91">9570c212</a></strong>
<div>
<span>by Takenobu Tani</span>
<i>at 2020-08-06T19:46:46-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Rename 8.12 to 9.0

GHC 8.12.1 has been renamed to GHC 9.0.1.

See also:
  https://mail.haskell.org/pipermail/ghc-devs/2020-July/019083.html

[skip ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3907ee01e68b383fa30386d163decf203acedb19">3907ee01</a></strong>
<div>
<span>by Cale Gibbard</span>
<i>at 2020-08-07T08:34:46-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">A fix to an error message in monad comprehensions, and a move of dsHandleMonadicFailure
as suggested by comments on !2330.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fa9bb70a3fefef681cb0e80cc78977386c1dcf0a">fa9bb70a</a></strong>
<div>
<span>by Cale Gibbard</span>
<i>at 2020-08-07T08:34:46-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add some tests for fail messages in do-expressions and monad-comprehensions.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5f03606319f745b10e9918c76a47426b293f0bf9">5f036063</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-07T08:35:21-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">cmm: Clean up Notes a bit
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6402c1240d5bd768b8fe8b4368413932bedbe107">6402c124</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-07T08:35:21-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">CmmLint: Check foreign call argument register invariant

As mentioned in Note [Register parameter passing] the arguments of
foreign calls cannot refer to caller-saved registers.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/15b36de030ecdd60897bc7a6a02bdeabd0825be4">15b36de0</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-07T08:35:21-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nativeGen: One approach to fix #18527

Previously the code generator could produce corrupt C call sequences due
to register overlap between MachOp lowerings and the platform's calling
convention. We fix this using a hack described in Note [Evaluate C-call
arguments before placing in destination registers].
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3847ae0ccf67bddf73304a39f5320c3ba285aa48">3847ae0c</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-07T08:35:21-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Add test for #18527
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dd51d53be42114c105b5ab15fcbdb387526b1c17">dd51d53b</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-07T08:35:21-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Fix prog001

Previously it failed as the `ghc` package was not visible.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e4f1b73ad9f292a6bbeb21fee44b0ba1a7f3c33b">e4f1b73a</a></strong>
<div>
<span>by Alan Zimmerman</span>
<i>at 2020-08-07T23:58:10-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">ApiAnnotations; tweaks for ghc-exactprint update

Remove unused ApiAnns, add one for linear arrow.

Include API Annotations for trailing comma in export list.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8a665db6174eaedbbae925c0ccb4c22b3f29bcaf">8a665db6</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-08-07T23:58:45-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">configure: Fix double-negation in ld merge-objects check

We want to only run the check if ld is gold.

Fixes the fix to #17962.</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4623454249c9bb897fd707a2aaa48cb37a02d760">46234542</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-08-09T16:05:22-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix and enable object unloading in GHCi

Fixes #16525

See Note [Object unloading] in CheckUnload.c for details.

NoFib results:

--------------------------------------------------------------------------------
        Program           Size    Allocs    Instrs     Reads    Writes
--------------------------------------------------------------------------------
             CS          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
            CSD          -0.2%      0.0%     +0.0%     +0.0%     +0.0%
             FS          -0.2%      0.0%     +0.0%     +0.0%     -0.0%
              S          -0.2%      0.0%     +1.0%     +1.1%     +0.0%
             VS          -0.2%      0.0%     +0.0%     +0.0%     -0.0%
            VSD          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
            VSM          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           anna          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
           ansi          -0.1%      0.0%     +0.0%     +0.0%      0.0%
           atom          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         awards          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         banner          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
     bernouilli          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
   binary-trees          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
          boyer          -0.1%      0.0%     +0.1%     +0.1%      0.0%
         boyer2          -0.1%      0.0%     +0.0%     +0.1%      0.0%
           bspt          -0.1%      0.0%     +0.0%     +0.0%      0.0%
      cacheprof          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
       calendar          -0.1%      0.0%     +0.0%     +0.0%      0.0%
       cichelli          -0.1%      0.0%     +0.1%     +0.2%     +0.0%
        circsim          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
       clausify          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
  comp_lab_zift          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
       compress          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
      compress2          -0.1%      0.0%     +0.0%     +0.0%      0.0%
    constraints          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
   cryptarithm1          -0.1%      0.0%     +0.0%     +0.0%      0.0%
   cryptarithm2          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
            cse          -0.1%      0.0%     +0.0%     +0.0%      0.0%
   digits-of-e1          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
   digits-of-e2          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
         dom-lt          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
          eliza          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
          event          -0.1%      0.0%     +0.0%     +0.1%      0.0%
    exact-reals          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
         exp3_8          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         expert          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
 fannkuch-redux          -0.1%      0.0%     +0.0%     +0.0%      0.0%
          fasta          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
            fem          -0.1%      0.0%     +0.0%     +0.0%      0.0%
            fft          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           fft2          -0.1%      0.0%     +0.0%     +0.0%      0.0%
       fibheaps          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           fish          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
          fluid          -0.1%      0.0%     +0.1%     +0.1%     -0.0%
         fulsom          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         gamteb          -0.1%      0.0%     +0.0%     +0.0%      0.0%
            gcd          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
    gen_regexps          -0.2%      0.0%     +0.0%     +0.0%     -0.0%
         genfft          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
             gg          -0.1%      0.0%     +0.1%     +0.1%      0.0%
           grep          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         hidden          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
            hpg          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
            ida          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
          infer          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
        integer          -0.1%      0.0%     +0.0%     +0.0%      0.0%
      integrate          -0.1%      0.0%     +0.0%     +0.0%      0.0%
   k-nucleotide          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
          kahan          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
        knights          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         lambda          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
     last-piece          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           lcss          -0.1%      0.0%     +0.0%     +0.0%      0.0%
           life          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           lift          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
         linear          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
      listcompr          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
       listcopy          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
       maillist          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
         mandel          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
        mandel2          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           mate          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
        minimax          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
        mkhprog          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
     multiplier          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
         n-body          -0.1%      0.0%     +0.0%     +0.0%      0.0%
       nucleic2          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           para          -0.1%      0.0%     +0.0%     +0.0%      0.0%
      paraffins          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         parser          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
        parstof          -0.1%      0.0%     +0.2%     +0.2%     -0.0%
            pic          -0.1%      0.0%     +0.1%     +0.1%     +0.0%
       pidigits          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
          power          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
         pretty          -0.1%      0.0%     +0.5%     +0.6%     -0.0%
         primes          -0.1%      0.0%     +0.0%     +0.0%      0.0%
      primetest          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
         prolog          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
         puzzle          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
         queens          -0.1%      0.0%     +0.0%     +0.0%      0.0%
        reptile          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
reverse-complem          -0.2%      0.0%     +0.0%     +0.0%      0.0%
        rewrite          -0.1%      0.0%     +0.0%     +0.0%      0.0%
           rfib          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
            rsa          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
            scc          -0.2%      0.0%     +0.5%     +0.7%     +0.0%
          sched          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
            scs          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
         simple          -0.1%      0.0%     +0.3%     +0.4%      0.0%
          solid          -0.1%      0.0%     +0.0%     +0.0%      0.0%
        sorting          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
  spectral-norm          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
         sphere          -0.1%      0.0%     +0.0%     +0.0%      0.0%
         symalg          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
            tak          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
      transform          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
       treejoin          -0.1%      0.0%     +0.1%     +0.1%      0.0%
      typecheck          -0.1%      0.0%     +0.0%     +0.0%      0.0%
        veritas          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
           wang          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
      wave4main          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
   wheel-sieve1          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
   wheel-sieve2          -0.1%      0.0%     +0.0%     +0.0%     -0.0%
           x2n1          -0.1%      0.0%     +0.0%     +0.0%     +0.0%
--------------------------------------------------------------------------------
            Min          -0.2%      0.0%     +0.0%     +0.0%     -0.0%
            Max          -0.1%      0.0%     +1.0%     +1.1%     +0.0%
 Geometric Mean          -0.1%     -0.0%     +0.0%     +0.0%     -0.0%
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b2658359ca2493e4f5eccaffabd367d7bd550189">b2658359</a></strong>
<div>
<span>by Ray Shih</span>
<i>at 2020-08-09T16:05:22-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add loadNativeObj and unloadNativeObj

Summary:

(This change is originally written by niteria)

This adds two functions:
* `loadNativeObj`
* `unloadNativeObj`
and implements them for Linux.

They are useful if you want to load a shared object with Haskell code
using the system linker and have GHC call dlclose() after the
code is no longer referenced from the heap.

Using the system linker allows you to load the shared object
above outside the lowmem region. It also loads the DWARF sections
in a way that `perf` understands.

`dl_iterate_phdr` is what makes this implementation Linux specific.

NOTE: this should be replaceable by whatever D4263 becomes

Test Plan: manual testing

Reviewers: simonmar, Phyx, bgamari, erikd

Reviewed By: niteria

Subscribers: rwbarton, thomie, carter

Differential Revision: https://phabricator.haskell.org/D4263
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#9ab3868b23ed5d5a6e12ef902049902556fa4009">
aclocal.m4
</a>
</li>
<li class="file-stats">
<a href="#d0d96a6d03668aeab20ebe05e2c4ccb798c7e64c">
compiler/GHC.hs
</a>
</li>
<li class="file-stats">
<a href="#cf82b82d6e47b3c81686a3340668a31ce028e2a1">
compiler/GHC/Cmm/Lint.hs
</a>
</li>
<li class="file-stats">
<a href="#c898e00d01234ab22d3b485be68db3645f52f220">
compiler/GHC/Cmm/MachOp.hs
</a>
</li>
<li class="file-stats">
<a href="#90378e83c3a00a78bc0b3c01da111e0a787de451">
compiler/GHC/Cmm/Node.hs
</a>
</li>
<li class="file-stats">
<a href="#b1390f6749e1a2dddcae35f88d55623ea6269f56">
compiler/GHC/Cmm/Sink.hs
</a>
</li>
<li class="file-stats">
<a href="#2bae5947e9412f6deebf4db7dcb89d780913130f">
compiler/GHC/CmmToAsm/X86/CodeGen.hs
</a>
</li>
<li class="file-stats">
<a href="#bd153f89bc48f3fd5079b51fb799808aacbd750c">
compiler/GHC/Core/Opt/Driver.hs

compiler/GHC/Core/Opt/Pipeline.hs
</a>
</li>
<li class="file-stats">
<a href="#f168a93cde5e2aec2441d6331dfe500172df4af3">
compiler/GHC/Core/Opt/Simplify.hs
</a>
</li>
<li class="file-stats">
<a href="#379343fa560df0c7451aa5a1dd4f074dd37924d0">
compiler/GHC/Core/TyCo/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#9df7e695170800345fb44916a8e8f4b8f3c55be0">
compiler/GHC/Driver/CodeOutput.hs
</a>
</li>
<li class="file-stats">
<a href="#9a679a2680ef6061397f1987091ea9f96ffe095d">
compiler/GHC/Driver/Main.hs
</a>
</li>
<li class="file-stats">
<a href="#b8e6af642e56019828828dc679683c04afb81867">
compiler/GHC/Driver/Pipeline.hs
</a>
</li>
<li class="file-stats">
<a href="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#6bdd5abc649727f2a802bc96ce5c276de19d3726">
compiler/GHC/HsToCore/Expr.hs
</a>
</li>
<li class="file-stats">
<a href="#0f81db91b67c3e47ac75aa942ac3aa080f676036">
compiler/GHC/HsToCore/Expr.hs-boot
</a>
</li>
<li class="file-stats">
<a href="#912bb8ed70a132c8eb2e037f8c9ecb045d2c229c">
compiler/GHC/HsToCore/ListComp.hs
</a>
</li>
<li class="file-stats">
<a href="#94864be2e2eb1959a038d5d903a6c784e5cfb32a">
compiler/GHC/HsToCore/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#f2b2b84d138b362920ab9f144f58bf16254aab64">
compiler/GHC/Iface/Type.hs
</a>
</li>
<li class="file-stats">
<a href="#bf951467d4a9aa443cb109cb4c84a2891945649b">
compiler/GHC/Parser.y
</a>
</li>
<li class="file-stats">
<a href="#b1092d2df4ded3655524830252278016d6aa5afd">
compiler/GHC/Parser/Annotation.hs
</a>
</li>
<li class="file-stats">
<a href="#446cb12ca6cefaf1c6eb79b7db643632744263c7">
compiler/GHC/Parser/PostProcess.hs
</a>
</li>
<li class="file-stats">
<a href="#c27cdc950c486cfe9eb3b7c0373e9dfbe084c6c4">
compiler/GHC/Platform/Profile.hs
</a>
</li>
<li class="file-stats">
<a href="#86ace7226fc7af9ab86c9de74cea778459a0f84f">
compiler/GHC/Platform/Ways.hs
</a>
</li>
<li class="file-stats">
<a href="#3556223cd3ef45d787321b5290bf33535a361873">
compiler/GHC/Runtime/Linker.hs
</a>
</li>
<li class="file-stats">
<a href="#906f88b2ba5bce224c8a08c72cea531fdb95ca55">
compiler/GHC/Settings.hs
</a>
</li>
<li class="file-stats">
<a href="#6740fa77d6598a0ef908509264d676d65ab31fd1">
compiler/GHC/Settings/IO.hs
</a>
</li>
<li class="file-stats">
<a href="#e18aab7fcc134a71d91f9d26e33b5110a3917e44">
compiler/GHC/StgToCmm/Foreign.hs
</a>
</li>
<li class="file-stats">
<a href="#13bc6c694b9a1fa78aeab1e992926d759374ecb2">
compiler/GHC/StgToCmm/Utils.hs
</a>
</li>
<li class="file-stats">
<a href="#44b98437cdd35d6836caab46e32906e669708388">
compiler/GHC/SysTools/Tasks.hs
</a>
</li>
</ul>
<h5>The diff was not included because it is too large.</h5>

</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #777;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/2cfcbcfa90dd5cda84c7bdd3b4ef36786ea508c8...b2658359ca2493e4f5eccaffabd367d7bd550189">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.haskell.org.
If you'd like to receive fewer emails, you can
adjust your notification settings.



</p>
</div>
</body>
</html>