<!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>
Andreas Klebinger pushed to branch wip/andreask/elem_rule_fix
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/f82a2f90ceda5c2bc74088fa7f6a7c8cb9c9756f">f82a2f90</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-12T01:56:46-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Document GMP build [skip ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/da7f74797e8c322006eba385c9cbdce346dd1d43">da7f7479</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-12T01:57:27-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Module hierarchy: ByteCode and Runtime (cf #13009)

Update haddock submodule
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/04f51297e3d7bcf7be0dc7db4673cc3e6f9156ea">04f51297</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-02-12T01:58:11-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix naming of tests for #12923
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/31fc332191a6298e2643261482e9b43a4b38241b">31fc3321</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-02-12T01:58:11-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add regression test for #12926

Closes #12926
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f0c0ee7d9a942a19361e72553cd08f42cc12b04a">f0c0ee7d</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-02-12T01:58:51-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix order of arguments in specializer (#17801)

See https://gitlab.haskell.org/ghc/ghc/issues/17801#note_253330

No regression test, as it's hard to trigger.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/059c3c9d7c84fc37c69e9f414ff736d47081e72c">059c3c9d</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-02-12T11:00:58+01:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Separate CPR analysis from the Demand analyser

The reasons for that can be found in the wiki:
https://gitlab.haskell.org/ghc/ghc/wikis/nested-cpr/split-off-cpr

We now run CPR after demand analysis (except for after the final demand
analysis run just before code gen). CPR got its own dump flags
(`-ddump-cpr-anal`, `-ddump-cpr-signatures`), but not its own flag to
activate/deactivate. It will run with `-fstrictness`/`-fworker-wrapper`.

As explained on the wiki page, this step is necessary for a sane Nested
CPR analysis. And it has quite positive impact on compiler performance:

Metric Decrease:
    T9233
    T9675
    T9961
    T15263
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f5ffd8d9ec776db708e690c4fdbf671afa8df48f">f5ffd8d9</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-12T17:22:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">base: Expose GHC.Unicode.unicodeVersion

This exposes a Data.Version.Version representing the version of the
Unicode database used by `base`. This should clear up some confusion I
have seen in tickets regarding with which Unicode versions a given GHC
can be expected to work.

While in town I also regenerated (but did not update) the Unicode
database with database 12.0.0. Strangely, the file cited in the README
no longer existed. Consequently, I used
https://www.unicode.org/Public/12.0.0/ucd/UnicodeData.txt and was
slightly surprised to find that there were a few changes.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6c2585e0816cb49487fa6a2be5b8e3f191cf3438">6c2585e0</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-12T17:22:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">base: Update Unicode database to 12.1.0

Using `curl https://www.unicode.org/Public/12.1.0/ucd/UnicodeData.txt |
libraries/base/cbits/ubconfc 12.1.0`.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/df08468113ab46832b7ac0a7311b608d1b418c4d">df084681</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-02-12T23:58:52+01:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Always display inferred variables using braces

We now always show "forall {a}. T" for inferred variables,
previously this was controlled by -fprint-explicit-foralls.

This implements part 1 of https://github.com/ghc-proposals/ghc-proposals/pull/179.

Part of GHC ticket #16320.

Furthermore, when printing a levity restriction error, we now display
the HsWrap of the expression. This lets users see the full elaboration with
-fprint-typechecker-elaboration (see also #17670)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/16d643cfe661716c7a6cb3ce04893a732c5a42af">16d643cf</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-13T09:16:04-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove -ddump-srts flag

This flag is deemed not useful.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fa28ae95e4c1ff5b70bf3f8dc6e54fb994bbfa51">fa28ae95</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-13T09:16:04-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix flag documentation (#17826)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1bfd825943f6077836361ddc788fb40f2421e283">1bfd8259</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-13T09:16:43-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Ensure that Hadrian is built correctly before using it

When Hadrian failed to build, the script would pick a previously built
Hadrian (if available) instead of failing.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cd6e786a28cc6688b45c8868a3e8a338b081ba01">cd6e786a</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-02-14T05:29:56-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add test for #17648
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9f2c3677b3a08d8ea6c0d1f5fd51e43b7fcfe75b">9f2c3677</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-14T05:30:39-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">GMP expects the Target platform as --host parameter
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/aa6086fdf53aef690369771def6cf1c31faa38e8">aa6086fd</a></strong>
<div>
<span>by Oleg Grenrus</span>
<i>at 2020-02-14T05:31:16-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add explicit LANGUAGE Safe to template-haskell


(cherry picked from commit a5e0f376821ca882880b03b07b451aa574e289ec)</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/af6a0c36431639655762440ec8d652796b86fe58">af6a0c36</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T05:31:53-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Add execution and target architecture to stage-compilation figure
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cf739945b8b28ff463dc44925348f20b3c1f22cb">cf739945</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-14T05:32:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Module hierarchy: HsToCore (cf #13009)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/719db3180e3fb0fa95fcfc90feb51ffbb2a2096d">719db318</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-02-14T05:33:16-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">De-duplicate overlapping Notes

Documentation only.  Fixes #17827
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7550417ac866e562bb015149d8f9a6b8c97b5f84">7550417a</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-14T05:33:56-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: drop Sphinx flag checking for PDF documentation (#17825)

It seems that Sphinx produces the ghc-flags.txt in
doc/users_guide/_build rather than pdfRoot. We could copy ghc-flags.txt
into pdfRoot (like happens naturally in the HTML case) but the benefit
is pretty small. Let's just only check the HTML case.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/813842f42023457ccb4d93b5906e0f492e4721b2">813842f4</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">make: Be more selective in building windows-extra-src tarball
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0725f4bbc7f59282ee5fe41619099957030d85ff">0725f4bb</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Rework handling of win32 toolchain tarballs
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/565ce7aee5db966070f9d0267f99a13532d5caf0">565ce7ae</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Consolidate CI logic

This moves nearly all of the CI logic to .gitlab/ci.sh. This improves
things in a number of ways:

 * it's harder for inconsistencies to arise between architectures
 * it's easier to share logic between architectures
 * on Windows, it's easier to ensure that all CI steps are executed from
   within a properly initialized mingw session.

While in town I also add a FreeBSD build job and update the Windows job
to use the gitlab-runner PowerShell executor, since cmd.exe will be
deprecated soon (fixing #17699).
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9cbace74dadf6fe64267f0b68635402f5c848b72">9cbace74</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Deduplicate nightly job configuration
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6e8371442dc6130a03e648a0e1bc0f1bdfdbfe91">6e837144</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">integer-gmp: Fix unused command-line argument

-L is only needed during linking.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e5ee07ab565c1bf7a33d3bd4bcd3fb6c7b100d1c">e5ee07ab</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Don't ask sed to operate in-place on symlinks

Some sed implementations (e.g. FreeBSD) refuse to operate in-place on
symlinks.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/71e5e68fd3794cc63f513d30d467e43761a8ce62">71e5e68f</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Disable tests that assume name of libstdc++ on FreeBSD
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7b2da0f429f45ad2d945b4b041e1d58477ce7567">7b2da0f4</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Mark T6132 as broken on FreeBSD
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8ef7a15a0c59b4ceff7f6343cabca8497c0eef50">8ef7a15a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite/T16930: Don't rely on gnu grep specific --include

In BSD grep this flag only affects directory recursion.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6060003e4f95101adaef0b2c7f26154c59f2e83a">6060003e</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Pass -Wno-unused-command-line-arguments during link on FreeBSD

FreeBSD cc throws a warning if we pass -pthread without actually using
any pthread symbols.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/97497baeb70c443030e9e0c59abf4930679b4f82">97497bae</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">base: Always clamp reads/writes to 2GB in length

Previously we did this only on Darwin due to #17414. However, even on
other platforms >2GB writes are on shaky ground. POSIX explicitly says
that the result is implementation-specified and Linux will write at most
0x7ffff000, even on 64-bit platforms. Moreover, getting the sign
of the syscall result correct is tricky, as demonstrated by the fact
that T17414 currently fails on FreeBSD.

For simplicity we now just uniformly clamp to 0x7ffff000 on all
platforms.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/49be2a3fc5e9f6ca71717cde6889c49dbba816da">49be2a3f</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">configure: Fix sphinx version test

The check for the "v" prefix is redundant.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f7f7a556f9b89303da4e1c3475e618653d830cc4">f7f7a556</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Fix unknown link targets
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a204102c634743faac8af345ad8bfec6317e7024">a204102c</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">docs/compare-flags: Don't use python f-strings
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/92e15a379a675f14667d7b80db608c84e58aa0a8">92e15a37</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Fix various shellcheck warnings
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/459f7c6e29eed46f8a5be8fac02c45450080a67c">459f7c6e</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Drop empty arguments from target list

Fixes #17748.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c06df28dd490d0309e0b1885a6121b45f74edf3c">c06df28d</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:37-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Fix "invalid file" failure

I have no idea how this worked previously. Different Python version?
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3fe8444f7e3904be14956f3fe68583da8b730ab4">3fe8444f</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:59-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Mark T7702 as fragile on Windows

Due to #16799. There was previously an attempt to mark it as broken but
the `opsys` name was incorrect.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fe02f78172f06fd3e83ba00246d9ed741474e653">fe02f781</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:59-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Assert the opsys names are known

Previously opsys would take any string. This meant it was very easy for
a typo to silently render the predicate ineffective. Fix this by
checking the given operating system name against a list of known values.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/149e2a3a85d92b4afea1643e7e6ed7861d620be2">149e2a3a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:59-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">compare-flags: Don't rely on encoding flag of subprocess.check_output

Apparently it isn't supported by some slightly older Python versions.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/798d59f6a2b517db50ec2536a8331d610a2b379c">798d59f6</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:59-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Add more debug output to failed path in onIOComplete

This will help track down #17035.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e35f3f98b085a6bd925bef1b97f81a3117358e8c">e35f3f98</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:16:59-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Allow i386 Windows builds to fail again

Due to the resistance of #17736 to resolution.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/261a3cf83b757f6422acafa6e436ea7bb05ff532">261a3cf8</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Build integer-simple job in the validate flavour
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b613a961be70e75747816be4d7642b6378a84c3f">b613a961</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Always use mingw64 python on Windows
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1bc8c8cd02726c5151afdb02a019aec724be8bec">1bc8c8cd</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Allow Windows build to fail due to #17777

The fact that `exec` isn't POSIX compliant means that things can break
in arbitrarily bad ways. Sometimes things happen to work correctly but
sadly this isn't always the case.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ac63020d3c9960d12efef54003dd088f8ec0413b">ac63020d</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Drop unnecessary GHC_VERSION check
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6926f369b8740c1c8095eb0786010d9da9c5fcfd">6926f369</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bump process submodule

Folds in the second part of Phyx's Windows process exit fixes [1],
hopefully finally resolving issue #17480.

[1] https://github.com/haskell/process/pull/160
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/584eee71f803ebf59f12758755151110a6e8636f">584eee71</a></strong>
<div>
<span>by Tamar Christina</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">SysTools: Use "process job" when spawning processes on Windows

GHC should make calls using process jobs when calling out to GCC and LD.
The reason is these use the exec () family of posix functions.  Window's
process model doesn't allow replacement of processes so this is emulated
by creating a new process and immediately exiting the old one.  Because
of this when using normal Windows wait functions you would return even
without the child process having finished.  In this case if you are
depending on data from the child you will enter a race condition.

The usual fix for this is to use process jobs and wait for the
termination of all children that have ever been spawn by the process you
called. But also waiting for the freeing of all resources.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ecabfa28518947d752403bc1b59ee716652687da">ecabfa28</a></strong>
<div>
<span>by Tamar Christina</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Revert "compiler: Disable atomic renaming on Windows"

The original reason this was disabled should be fixed by the previous
commit.

This reverts commit 1c1b63d63efe8b0f789aa7d5b87cfac3edd213eb.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/06d60c66d6355e895c7e46275f295b721d63fa92">06d60c66</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bump Cabal submodule
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8cabb384775adacf8326f7dd2cf99291da8dddbb">8cabb384</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">compare-flags: Fix output
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8cf646d36b02b8ea1c289cb52781c9171853b514">8cf646d3</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Document -ddump-srts
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/932307a5486e63335f9ee6dc183ff39f6dfc5857">932307a5</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-14T10:17:00-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Fix broken reference
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e77818de9cc9b2bc4b19dba4bc479f14078760b7">e77818de</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-15T09:26:55-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Accept performance changes

These manifested in the integer-simple job.

Metric Decrease:
    T12227
    T5549
    T14936
    T4830
    Conversions
    T5237
    T8766
    T4801
    T10359

Metric Increase:
    T12234
    T6048
    T3294
    T14683
    T3064
    T9872b
    T9872c
    T783
    T5837
    T10678
    T14697
    T5631
    T9203
    T13719
    T12707
    T13056
    T9630
    T10547
    T9872d
    T1969
    WWRec
    T10370
    T5321FD
    haddock.Cabal
    T5642
    T9872a
    T15263
    T12425
    MultiLayerModules
    T5205
    T9233
    T13379
    haddock.base
    T9020
    T13035
    T12150
    T9961
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/785008c1235bd77ddb4d13f57f92b249752d8ea5">785008c1</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-15T09:30:13-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Sort test names in expected change output
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9e851472e59950c9d7ada3224a5bf317c0a9dc1a">9e851472</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-02-16T10:38:41+03:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Revert "users-guide: Document -ddump-srts"

This reverts commit 8cf646d36b02b8ea1c289cb52781c9171853b514.

The flag was removed by 16d643cf.

[ci skip]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9792c81663d8bef3abfe22cf45405d8d282afe08">9792c816</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-16T09:47:08-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Probe whether symlinks are usable on Windows

Closes #17706.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ee1e5342f612c8b06ac910cd698558ade7a1a887">ee1e5342</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-02-16T09:47:44-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix the "unused terminals: 2" warning in Parser.y
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b4a8ce525fce56eca18358820c0ec35fec8982de">b4a8ce52</a></strong>
<div>
<span>by Roland Senn</span>
<i>at 2020-02-18T20:14:42-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">If a :reload finds syntax errors in the module graph, remove the loaded modules. (Fixes #17549)

The processing in `compiler/main/GhcMake.hs` computes the ModuleGraph. If it finds errors
in the module header or in the import specifications, then the new module graph is
incomplete and should not be used.
The code before #17549 just reported the errors and left the old ModuleGraph in place.
The new code of this MR replaces the old ModuleGraph with an empty one.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d7029cc09edc052c2f97effe33233c53340fcce0">d7029cc0</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-18T20:15:30-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: refactor GMP in-tree build support (#17756)

* Hadrian doesn't use integer-gmp/config.mk file anymore to determine if
  building GMP in-tree is required.

  "config.mk" is created by Cabal when the integer-gmp package is
  configured and this file is still untracked by Hadrian. This led to a
  tricky configure "race" because "config.mk" is built by the
  "setup-config" rule, but this rule is also used to find dependencies,
  in particular the "ghc-gmp.h" header, but the creation of this file
  was depending (without being tracked) on "config.mk".

  Now Hadrian only builds in-tree GMP if `--with-intree-gmp` is passed
  to the top-level configure script.

* in-tree GMP isn't built once for all in a fixed stage (Stage1)
  anymore. It is built per stage which is required if we build a
  cross-compiler

* switching between in-tree and external GMP is now supported without
  having to clean the build directory first.

* "wrappers.c" now includes "ghc-gmp.h" instead of "ghc.h". It
  helps ensuring that the build system generates "ghc-gmp.h".

* build in-tree GMP in "<root>/stageN/gmp/gmpbuild" and produce useful
  artefacts (libgmp.a, gmp.h, objs/*.o) in "<root>/stageN/gmp"
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/40d917fb3b99bdb63e7e39d517225d441aaf722d">40d917fb</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-02-18T20:16:07-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove the MonadFail P instance

There were two issues with this instance:

* its existence meant that a pattern match failure in the P monad would
  produce a user-visible parse error, but the error message would not be
  helpful to the user

* due to the MFP migration strategy, we had to use CPP in Lexer.x,
  and that created issues for #17750

Updates haddock submodule.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5a1ce45d6cf03802caf15548210bb9924468c437">5a1ce45d</a></strong>
<div>
<span>by Joshua Price</span>
<i>at 2020-02-18T20:16:47-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix unboxed tuple size limit (#17837)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/192caf58ca1fc42806166872260d30bdb34dbace">192caf58</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-02-18T20:17:24-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix testsuite driver output (#17847)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1500f0898e85316c7c97a2f759d83278a072ab0e">1500f089</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-18T20:18:12-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Modules: Llvm (#13009)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d53e81c02c64e72ccb55bf73f0881c5c80fa50ef">d53e81c0</a></strong>
<div>
<span>by Niklas Hambüchen</span>
<i>at 2020-02-20T10:36:22-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">8.10 Release notes for atomic .o writes [skip ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/19680ee533bb95c0c5c42aca5c81197e4b233979">19680ee5</a></strong>
<div>
<span>by Niklas Hambüchen</span>
<i>at 2020-02-20T10:37:53-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">8.10 Release notes for --disable-delayed-os-memory-return [skip ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/74ad75e87317196c600dfabc61aee1b87d95c214">74ad75e8</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-02-20T21:17:57-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Re-implement unsafe coercions in terms of unsafe equality proofs

(Commit message written by Omer, most of the code is written by Simon
and Richard)

See Note [Implementing unsafeCoerce] for how unsafe equality proofs and
the new unsafeCoerce# are implemented.

New notes added:

- [Checking for levity polymorphism] in CoreLint.hs
- [Implementing unsafeCoerce] in base/Unsafe/Coerce.hs
- [Patching magic definitions] in Desugar.hs
- [Wiring in unsafeCoerce#] in Desugar.hs

Only breaking change in this patch is unsafeCoerce# is not exported from
GHC.Exts, instead of GHC.Prim.

Fixes #17443
Fixes #16893

NoFib
-----

--------------------------------------------------------------------------------
        Program           Size    Allocs    Instrs     Reads    Writes
--------------------------------------------------------------------------------
             CS          -0.1%      0.0%     -0.0%     -0.0%     -0.0%
            CSD          -0.1%      0.0%     -0.0%     -0.0%     -0.0%
             FS          -0.1%      0.0%     -0.0%     -0.0%     -0.0%
              S          -0.1%      0.0%     -0.0%     -0.0%     -0.0%
             VS          -0.1%      0.0%     -0.0%     -0.0%     -0.0%
            VSD          -0.1%      0.0%     -0.0%     -0.0%     -0.1%
            VSM          -0.1%      0.0%     -0.0%     -0.0%     -0.0%
           anna          -0.0%      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.0%     -0.0%     -0.0%
         boyer2          -0.1%      0.0%     -0.0%     -0.0%     -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.0%     -0.0%     -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.0%     -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.5%     -0.3%     -0.4%
            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.0%     -0.0%     -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.1%      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.0%     -0.0%     -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.0%     -0.0%     -0.0%
            pic          -0.1%      0.0%     -0.0%     -0.0%     -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.1%     -0.1%     -0.1%
         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.1%      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.1%      0.0%     -0.1%     -0.1%     -0.1%
          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.0%     -0.0%     -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.0%     -0.0%     -0.0%
      typecheck          -0.1%      0.0%     -0.0%     -0.0%     -0.0%
        veritas          -0.0%      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.1%      0.0%     -0.5%     -0.3%     -0.4%
            Max          -0.0%      0.0%     +0.0%     +0.0%     +0.0%
 Geometric Mean          -0.1%     -0.0%     -0.0%     -0.0%     -0.0%

Test changes
------------

- break006 is marked as broken, see #17833
- The compiler allocates less when building T14683 (an unsafeCoerce#-
  heavy happy-generated code) on 64-platforms. Allocates more on 32-bit
  platforms.
- Rest of the increases are tiny amounts (still enough to pass the
  threshold) in micro-benchmarks. I briefly looked at each one in a
  profiling build: most of the increased allocations seem to be because
  of random changes in the generated code.

Metric Decrease:
    T14683

Metric Increase:
    T12150
    T12234
    T12425
    T13035
    T14683
    T5837
    T6048

Co-Authored-By: Richard Eisenberg <rae@cs.brynmawr.edu>
Co-Authored-By: Ömer Sinan Ağacan <omeragacan@gmail.com>
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6880d6aa1e6e96579bbff89712efd813489cc828">6880d6aa</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-20T21:18:48-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Disentangle DynFlags and SDoc

Remove several uses of `sdocWithDynFlags`. The remaining ones are mostly
CodeGen related (e.g. depend on target platform constants) and will be
fixed separately.

Metric Decrease:
   T12425
   T9961
   WWRec
   T1969
   T14683
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/70a901105044c85c756fd93899387f0215f7b1de">70a90110</a></strong>
<div>
<span>by Julien Debon</span>
<i>at 2020-02-20T21:19:27-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">doc(List): Add examples to GHC.List

* Add examples
* Cleanup documentation
* Clarify merge process and Marge bot
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c8439fc789ff00cfdd453d2425d2146df69e0729">c8439fc7</a></strong>
<div>
<span>by Peter Trommler</span>
<i>at 2020-02-20T21:20:05-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix testsuite on powerpc64le

Remove expect broken on recomp tests, #11260 was closed
by !2264 and #11323 most likely by !2264 as well.

GHCi scripts tests work on GHCi but not the external interpreter,
adjust test configuration accordingly. Fixes unexpected passes.

Mark test requiring DWARF expect fail on powerpc64[le] for #11261.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/65b7256a88ae2bd878da5d026e4183cba6f6eedf">65b7256a</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-02-20T21:20:45-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use concatMap(M) instead of `concat . map` and the monadic variant
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8b76d4574d703ee66f346775d408220fdddb8155">8b76d457</a></strong>
<div>
<span>by Roland Senn</span>
<i>at 2020-02-20T21:21:28-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix #17832: Weird handling of exports named main in 8.10-rc1

Switching from `lookupGlobalOccRn_maybe` to `lookupInfoOccRn`
to check whether a `main` function is in scope. Unfortunately
`lookupGlobalOccRn_maybe` complains if there are multiple `main`
functions in scope.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/466e1ad5d54cb2e8a3b6f16904b873cad882a736">466e1ad5</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-02-20T21:22:11-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use TTG for HsSplicedT constructor

The constructor HsSplicedT occurs only in the GhcTc pass.
This enforces this fact statically via TTG.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4e622fcabb30ab7f3836bfc5739747b5608bef43">4e622fca</a></strong>
<div>
<span>by Alexis King</span>
<i>at 2020-02-20T21:22:49-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Normalize types when dropping absent arguments from workers

fixes #17852
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a533e54722ec2ec22ef598e07dcfe6c9e84d2602">a533e547</a></strong>
<div>
<span>by Adam Sandberg Eriksson</span>
<i>at 2020-02-20T21:23:31-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Mention users guide and release notes in merge request template</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/05251b175b3745ed96c9f672115c78c527b63b9e">05251b17</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-20T21:24:08-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Fix typo in BIN_DIST_PREP_TAR_COMP variable name</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f44c7e6723498c5dde0cd78e4af26142a14d98f4">f44c7e67</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-20T21:24:46-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Avoid duplicating ~/.cabal contents with every build

Previously our attempt to cache the cabal store would
`cp cabal-cache ~/.cabal`. However, if the latter already
 existed this meant that we would end up with
~/.cabal/cabal-cache. Not only would this not help caching
but it would exponentially grow the size of ~/.cabal. Not
good!</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c5ec996583373025488c090fb2c89f7bda38c1cb">c5ec9965</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-20T21:56:13-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">GHC.Hs.Extension: Use Type instead of *
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/89cb4cc4cc76f834b0bcc53fb551db706ef143b7">89cb4cc4</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-20T21:56:13-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use Type instead of * in GHC
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/04eb0d6c4de23a4cfe3953e7496f5bc4b5b1d53c">04eb0d6c</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-20T21:56:13-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Enable -Wstar-is-type in -Wall

As noted in [proposal 0143][proposal] this is supposed to happen in
8.12.

Also fix an incorrect claim in the users guide that -Wstar-is-type is
enabled by default.

[proposal]: https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0143-remove-star-kind.rst
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6de966f1369740d00193e64ec82d11e934256616">6de966f1</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-02-20T21:56:15-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix #17724 by having occAnal preserve used bindings.

It sometimes happened that occAnal would remove bindings
as dead code by relying on bindings to be in dependency
order. The fix was contributed by SPJ.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/abd7f962a9a9207c07cb864921941750818f61a4">abd7f962</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-20T21:56:15-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Mention dependency on `exceptions` in release notes

Fixes #17845.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/581753790da8d094ce05b3fc5f5360f5fbf6a7da">58175379</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-20T21:56:20-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: minor GMP refactoring

Somehow I forgot to totally remove `gmpContext` in
d7029cc09edc052c2f97effe33233c53340fcce0. This patch fixes it and adds
some additional comments.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/33fa8d9433d82b03f3209698bf27420a32302321">33fa8d94</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-02-20T21:56:21-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Generalize liftData to work over any Quote (#17857)

The Overloaded Quotations proposal generalized the type of `lift`
to work over any `Quote`, but not the type of `liftData`, leading
to #17857. Thankfully, generalizing `liftData` is extremely
straightforward.

Fixes #17857.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3cea67955a5ae7d3de7aa9dcfdabaf6ee3681ffc">3cea6795</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-20T21:56:23-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make: fix sdist target (#17848)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e2cce997320652031e0c6cc62db5e35deff43a79">e2cce997</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-20T21:56:23-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: fix source-dist target (#17849)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0a4c89b208c59ddf79c55ee446fcad5a012bb1bc">0a4c89b2</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-02-21T20:44:45-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Special case `mkTyConApp liftedTypeKind []`

We really need to make sure that these are shared because otherwise GHC
will allocate thousands of identical `TyConApp` nodes.

See #17292

-------------------------
Metric Decrease:
    haddock.Cabal
    T14683
-------------------------
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0482f58ab0490b2394ad60946dde3214a0ca1810">0482f58a</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-02-21T20:45:21-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">TH: wrapGenSyns, don't split the element type too much

The invariant which allowed the pervious method of splitting the type of
the body to find the type of the elements didn't work in the new
overloaded quotation world as the type can be something like
`WriterT () m a` rather than `Q a` like before.

Fixes #17839
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/be7068a6130f394dcefbcb5d09c2944deca2270d">be7068a6</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-02-21T20:45:59-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Parser API annotations: RealSrcLoc

During parsing, GHC collects lexical information about AST nodes and
stores it in a map. It is needed to faithfully restore original source
code, e.g. compare these expressions:

        a =  b
        a  = b

The position of the equality sign is not recorded in the AST, so it must
be stored elsewhere.

This system is described in Note [Api annotations].

Before this patch, the mapping was represented by:

        Map (SrcSpan, AnnKeywordId) SrcSpan

After this patch, the mapping is represented by:

        Map (RealSrcSpan, AnnKeywordId) RealSrcSpan

The motivation behind this change is to avoid using the Ord SrcSpan
instance (required by Map here), as it interferes with #17632 (see the
discussion there).

SrcSpan is isomorphic to  Either String RealSrcSpan,  but we shouldn't
use those strings as Map keys. Those strings are intended as hints to
the user, e.g. "<interactive>" or "<compiler-generated code>", so they
are not a valid way to identify nodes in the source code.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/240f5bf6f53515535be5bf3ef7632aa69ae21e3e">240f5bf6</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-21T20:46:40-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Modules: Driver (#13009)

submodule updates: nofib, haddock
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9d09411122b9b534b96e988b6d3f6d7eb04b8f66">9d094111</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-21T20:47:19-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: `docs` rule needs `configure` (#17840)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1674353a1ab40fde183f22bef9eb019d8150dc5a">1674353a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-23T17:31:19-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">fs: Port fixes from ghc-jailbreak repository

* Override rename, unlink, and remove
* Factor out wchar conversion
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/853210f20699b54dee4f85a15b70b3f02a1b68b7">853210f2</a></strong>
<div>
<span>by Adam Sandberg Ericsson</span>
<i>at 2020-02-23T17:32:03-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">show gcc linker options in configure summary
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2831544aaab15ab17d66e7af42f890d92d47407a">2831544a</a></strong>
<div>
<span>by Adam Sandberg Ericsson</span>
<i>at 2020-02-23T17:32:44-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: docs depend on stage1 ghc
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1d9df9e00b021724d570a12d8c6d7870bdc054ca">1d9df9e0</a></strong>
<div>
<span>by Adam Sandberg Ericsson</span>
<i>at 2020-02-23T17:33:23-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">ci: after 5ce63d52fed the linux bindist for doc-tarball has changed name
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/26e8fff33b1b46ba559538b4519730c60c0d45e5">26e8fff3</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-02-24T02:05:30-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove Ord SrcLoc, Ord SrcSpan

Before this patch, GHC relied on Ord SrcSpan to identify source elements, by
using SrcSpan as Map keys:

        blackList :: Map SrcSpan ()      -- compiler/GHC/HsToCore/Coverage.hs
        instanceMap :: Map SrcSpan Name  -- compiler/GHC/HsToCore/Docs.hs

Firstly, this design is not valid in presence of UnhelpfulSpan, as it
distinguishes between  UnhelpfulSpan "X"  and  UnhelpfulSpan "Y", but those
strings are messages for the user, unfit to serve as identifiers for source
elements.

Secondly, this design made it hard to extend SrcSpan with additional data.
Recall that the definition of SrcSpan is:

        data SrcSpan =
            RealSrcSpan !RealSrcSpan
          | UnhelpfulSpan !FastString

Say we want to extend the RealSrcSpan constructor with additional information:

        data SrcSpan =
            RealSrcSpan !RealSrcSpan !AdditionalInformation
          | UnhelpfulSpan !FastString

        getAdditionalInformation :: SrcSpan -> AdditionalInformation
        getAdditionalInformation (RealSrcSpan _ a) = a

Now, in order for  Map SrcSpan  to keep working correctly, we must *ignore* additional
information when comparing SrcSpan values:

        instance Ord SrcSpan where
          compare (RealSrcSpan r1 _) (RealSrcSpan r2 _) = compare r1 r2
          ...

However, this would violate an important law:

        a == b  therefore  f a == f b

Ignoring  AdditionalInformation  in comparisons would mean that with
f=getAdditionalInformation, the law above does not hold.

A more robust design is to avoid  Ord SrcSpan  altogether, which is what this patch implements.
The mappings are changed to use RealSrcSpan instead:

        blackList :: Set RealSrcSpan         -- compiler/GHC/HsToCore/Coverage.hs
        instanceMap :: Map RealSrcSpan Name  -- compiler/GHC/HsToCore/Docs.hs

All SrcSpan comparisons are now done with explicit comparison strategies:

        SrcLoc.leftmost_smallest
        SrcLoc.leftmost_largest
        SrcLoc.rightmost_smallest

These strategies are not subject to the law mentioned above and can easily
discard both the string stored in  UnhelpfulSpan  and  AdditionalInformation.

Updates haddock submodule.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5aa6c18866cf4071246891da3b0f7651b5d28d0f">5aa6c188</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-24T02:06:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Shuffle text
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e3f1741356491332613aacf66c96991682b84603">e3f17413</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-24T02:06:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">users-guide: Drop old release notes
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/84dd96105faff71cb17d1c1d069d724d014847dc">84dd9610</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-24T02:06:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bump directory submodule to 1.3.6.0
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e295a02440db8b1d96cebad22c5ee48774774681">e295a024</a></strong>
<div>
<span>by Stefan Pavikevik</span>
<i>at 2020-02-24T20:53:44-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">check for safe arguments, raising error when invalid (fix #17720)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/354e2787be08fb6d973de1a39e58080ff8e107f8">354e2787</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-02-24T20:54:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Comments, small refactor

* Remove outdated Note [HsForAllTy tyvar binders] and [Context quantification].
  Since the wildcard refactor 1e041b7382, HsForAllTy no longer has an flag
  controlling explicity. The field `hsq_implicit` is gone too.
  The current situation is covered by Note [HsType binders] which is already
  linked from LHsQTyVars.
* Small refactor in CoreLint, extracting common code to a function
* Remove "not so sure about WpFun" in TcEvidence, per Richard's comment
  https://gitlab.haskell.org/ghc/ghc/merge_requests/852#note_223226
* Use mkIfThenElse in Foreign/Call, as it does exactly what we need.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1b1067d14b656bbbfa7c47f156ec2700c9751549">1b1067d1</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-24T20:55:25-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Modules: CmmToAsm (#13009)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/621468f680a111c20366a9445a3b225cbc34ffbf">621468f6</a></strong>
<div>
<span>by Alexis King</span>
<i>at 2020-02-26T15:08:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Treat coercions as arguments for floating and inlining

This reverts commit 8924224ecfa065ebc67b96a90d01cf9d2edd0e77
and fixes #17787.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/def486c90ef6f37d81d0d9c6df754431ff94c6a4">def486c9</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:08:47-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Allow libnuma library path to be specified
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ed03d4e76ead6384e38bb742fee73905d92d1545">ed03d4e7</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:08:47-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Refactor gmp arguments

Move the gmp configuration to its own binding.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/09b8838422d5dde32af7b09c8adcb4dff4cd00fb">09b88384</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:08:47-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Tell Cabal about integer-gmp library location
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/161e08c5d85d7ee7f731db31481cd818480f07a7">161e08c5</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-02-26T15:09:30-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove dead code

* FailablePattern can no longer be created since ab51bee40c82
  Therefore, Opt_WarnMissingMonadFailInstances has no effect anymore.
* XWrap is no longer used, it was moved to an extension field
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e0d09db377bcb3d4caef2abe9db0cac36811d740">e0d09db3</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Use 8.8.3 to bootstrap on Windows

This should fix #17861.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/972bcf3a1971691ec809452322404ce8f65ad721">972bcf3a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Fix symlink test

Needs to `write` bytes, not str.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/273e60dee183707315415799ae3ed08079ab9ee9">273e60de</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Add shell subcommand for debugging within CI environment
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/43b13ed33f50274383a8dce11cbd7c77b8e851d5">43b13ed3</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Fix colors on Darwin

Darwin sh doesn't support \e.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/217546a798e1eb5a931a677771bbd54bb0e4b5ee">217546a7</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Flush stdout buffers in InitEventLogging

Otherwise we are sensitive to libc's buffering strategy.
Similar to the issue fixed in 543dfaab166c81f46ac4af76918ce32190aaab22.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c7d4fa55d19f7ac72f3071f9d19e03443c9b538c">c7d4fa55</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Add run_hadrian subcommand

I've ruined two trees already by failing to pass --flavour to hadrian.
Let's factor this out so it can be reused during troubleshooting.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7dc54873c0768ad3234c40300ae20e4f1e847bdd">7dc54873</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Allow tests to be marked as broken on the command line

This allows us to work-around distribution-specific breakage easily.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/25e2458ee9e8007687c165fe6b27adf91f405ed0">25e2458e</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Add --broken-test flag

This exposes the flag of the same name supported by the testsuite
driver.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/557699967f9438d3bf2936cbc6edce55b11622e0">55769996</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Mark some tests as broken on Alpine
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9ee7f87dbea786259d12fb9177fd2759d4fad3bb">9ee7f87d</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">SysTools: Don't use process jobs if they are broken
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bfaa39618a25ae642221a478889b9667281b52e8">bfaa3961</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bump hsc2hs submodule

Fixes name of C compiler.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b2b49a0aad353201678970c76d8305a5dcb1bfab">b2b49a0a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-26T15:10:09-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Make hasMetricsFile RHS more descriptive
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/817f93eac4d13f680e8e3e7a25eb403b1864f82e">817f93ea</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-26T15:10:58-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Modules: Core (#13009)

Update haddock submodule
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/74311e10bbb6ced9cd3093c8949f2535a715d8f6">74311e10</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-02-27T16:22:45-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">PmCheck: Implement Long-distance information with Covered sets

Consider

```hs
data T = A | B | C

f :: T -> Int
f A = 1
f x = case x of
  A -> 2
  B -> 3
  C -> 4
```

Clearly, the RHS returning 2 is redundant. But we don't currently see
that, because our approximation to the covered set of the inner case
expression just picks up the positive information from surrounding
pattern matches. It lacks the context sensivity that `x` can't be `A`
anymore!

Therefore, we adopt the conceptually and practically superior approach
of reusing the covered set of a particular GRHS from an outer pattern
match. In this case, we begin checking the `case` expression with the
covered set of `f`s second clause, which encodes the information that
`x` can't be `A` anymore. After this MR, we will successfully warn about
the RHS returning 2 being redundant.

Perhaps surprisingly, this was a great simplification to the code of
both the coverage checker and the desugarer.

Found a redundant case alternative in `unix` submodule, so we have to
bump it with a fix.

Metric Decrease:
    T12227
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/59c023ba5ccb10fff62810591f20608bd73c97af">59c023ba</a></strong>
<div>
<span>by Adam Sandberg Ericsson</span>
<i>at 2020-02-27T16:23:25-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">configure: correctly generate LIBRARY_template_haskell_VERSION
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9be82389a702c09d03975e7a0c17e5866dc17ffc">9be82389</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-02-28T02:35:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">boot: Remove remote origin check

Previously, we used relative paths in submodules. When cloning from
GitHub, they had to be manually tweaked.
Since a76b233d we use absolute paths, so this workaround can be removed.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f4b6b594fae6b257e997ade3fae67b3378e54a22">f4b6b594</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-28T02:36:12-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Fix marking in compact regions

Previously we were tracing the object we were asked to mark, even if it
lives in a compact region. However, there is no need to do this; we need
only to mark the region itself as live.

I have seen a segfault due to this due to the concurrent mark seeing a
an object in the process of being compacted by the mutator.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f97d1fb614ff7638d13eb7c552d2a72fce4c613a">f97d1fb6</a></strong>
<div>
<span>by Alp Mestanogullari</span>
<i>at 2020-02-28T02:36:59-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">base: use an explicit import list in System.Environment.ExecutablePath

This was making -Werror builds fail on Windows (at least with Hadrian).
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/66f5d6d634698ce054a9b9ce0c53ce9682f6f042">66f5d6d6</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-02-28T22:03:23-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Improve error handling for VTA + deferred type errors

This fixes #17792

See Note [VTA for out-of-scope functions] in TcExpr
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/37f126033f1e5bf0331143f005ef90ba6e2e02cd">37f12603</a></strong>
<div>
<span>by Ilias Tsitsimpis</span>
<i>at 2020-02-28T22:04:04-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">llvm-targets: Add arm-unknown-linux-gnueabi

Add arm-unknown-linux-gnueabi, which is used by Debian's ARM EABI port
(armel), as an LLVM target.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/327b29e1a05d9f1ea04465c9b23aed92473dd453">327b29e1</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-02-29T05:06:31-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Monotonic locations (#17632)

When GHC is parsing a file generated by a tool, e.g. by the C preprocessor, the
tool may insert #line pragmas to adjust the locations reported to the user.

As the result, the locations recorded in RealSrcLoc are not monotonic. Elements
that appear later in the StringBuffer are not guaranteed to have a higher
line/column number.

In fact, there are no guarantees whatsoever, as #line pragmas can arbitrarily
modify locations. This lack of guarantees makes ideas such as #17544
infeasible.

This patch adds an additional bit of information to every SrcLoc:

        newtype BufPos = BufPos { bufPos :: Int }

A BufPos represents the location in the StringBuffer, unaffected by any
pragmas.

Updates haddock submodule.

Metric Increase:
    haddock.Cabal
    haddock.base
    haddock.compiler
    MultiLayerModules
    Naperian
    parsing001
    T12150
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/99d2de860ff82e3f626c8b3d47d355ab16d18fd1">99d2de86</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-02-29T05:07:10-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">plugins: Ensure that loadInterface plugins can see annotations

loadInterface replaces the `mi_decls`, `mi_insts`, `mi_fam_insts`,
`mi_rules`, `mi_anns` fields of ModIface with `undefined` before
inserting the interface into the EPS. However, we still want to give
loadInterface plugins access to these fields. Consequently, we want to
pass the unmodified `ModIface` the plugin.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a999ee96a22650b59855609f84e2808b4133e9e0">a999ee96</a></strong>
<div>
<span>by Xavier Denis</span>
<i>at 2020-02-29T05:07:50-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Rename ghci.sh and build.sh to ghci and build respectively

Convert hadrian buildscripts to unsuffixed, dashed form

final cleanups
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b5fb58fd1a4a24b9273d9d2de65b6347e1654e98">b5fb58fd</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-02-29T05:08:36-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Document and refactor a few things around bitmap scavenging

- Added a few comments in StgPAP
- Added a few comments and assertions in scavenge_small_bitmap and
  walk_large_bitmap
- Did tiny refactor in GHC.Data.Bitmap: added some comments, deleted
  dead code, used PlatformWordSize type.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/18757cab04c5c5c48eaceea19469d4811c5d0371">18757cab</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-29T05:09:25-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactor runtime interpreter code

In #14335 we want to be able to use both the internal interpreter (for
the plugins) and the external interpreter (for TH and GHCi) at the same
time.

This patch performs some preliminary refactoring: the `hsc_interp` field
of HscEnv replaces `hsc_iserv` and is now used to indicate which
interpreter (internal, external) to use to execute TH and GHCi.

Opt_ExternalInterpreter flag and iserv options in DynFlags are now
queried only when we set the session DynFlags. It should help making GHC
multi-target in the future by selecting an interpreter according to the
selected target.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b86a639504e1de79c861a2c11b897089cc63ae5f">b86a6395</a></strong>
<div>
<span>by Adam Sandberg Ericsson</span>
<i>at 2020-02-29T05:10:06-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">docs: correct relative links to haddocks from users guide (fixes #17866)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0f55df7f197b7e30d7c6e39d80deb36b7dc86fb5">0f55df7f</a></strong>
<div>
<span>by Adam Sandberg Ericsson</span>
<i>at 2020-02-29T05:10:06-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">docs: correct link to th haddocks from users guide
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/252e51179bd179f52e25dea762ef7b95bc56ce0a">252e5117</a></strong>
<div>
<span>by Jean-Baptiste Mazon</span>
<i>at 2020-02-29T05:10:46-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: enforce POSIX numeric locale for heap profiles
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/34c7d23074f47c720b5722ca14d78a34213eabb6">34c7d230</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-02-29T05:11:27-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix Hadrian's ``--configure`` (fix #17883)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/04d30137771a6cf8a18fda1ced25f78d0b2eb204">04d30137</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-02-29T05:12:06-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Simplify IfaceIdInfo type

IfaceIdInfo type is confusing: there's practically no difference between
`NoInfo` and `HasInfo []`. The comments say NoInfo is used when
-fomit-interface-pragmas is enabled, but we don't need to distinguish
`NoInfo` from `HasInfo []` in when reading the interface so the
distinction is not important.

This patch simplifies the type by removing NoInfo. When we have no info
we use an empty list.

With this change we no longer read the info list lazily when reading an
IfaceInfoItem, but when reading an IfaceId the ifIdInfo field is
read lazily, so I doubt this is going to be a problem.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3979485bd97771373214c44d14b7830ba447ad23">3979485b</a></strong>
<div>
<span>by Roland Senn</span>
<i>at 2020-02-29T17:36:59+01:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Show breakpoint locations of breakpoints which were ignored during :force (#2950)

GHCi is split up into 2 major parts: The user-interface (UI)
and the byte-code interpreter. With `-fexternal-interpreter`
they even run in different processes. Communication between
the UI and the Interpreter (called `iserv`) is done using
messages over a pipe. This is called `Remote GHCI` and
explained in the Note [Remote GHCi] in `compiler/ghci/GHCi.hs`.

To process a `:force` command the UI sends a `Seq` message
to the `iserv` process. Then `iserv` does the effective
evaluation of the value. When during this process a breakpoint
is hit, the `iserv` process has no additional information to
enhance the `Ignoring breakpoint` output with the breakpoint
location.

To be able to print additional breakpoint information,
there are 2 possible implementation choices:
1. Store the needed information in the `iserv` process.
2. Print the `Ignoring breakpoint` from the UI process.

For option 1 we need to store the breakpoint info redundantely
in 2 places and this is bad. Therfore option 2 was implemented
in this MR:
- The user enters a `force` command
- The UI sends  a `Seq` message to the `iserv` process.
- If processing of the `Seq` message hits a breakpoint,
  the `iserv` process returns control to the UI process.
- The UI looks up the source location of the breakpoint,
  and prints the enhanced `Ignoring breakpoint` output.
- The UI sends a `ResumeSeq` message to the `iserv` process,
  to continue forcing.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3cf7303bf39bca734bd87f0f42872f1a4025fa34">3cf7303b</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-03-02T01:18:33-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove dead code

* The names in PrelName and THNames are no longer used
  since TH merged types and kinds, Typeable is kind-polymorphic,
  .net support was removed
* unqualQuasiQuote no longer used since 6f8ff0bbad3b9fa3
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dbea7e9d4d4a8812f3dbeed720fb6aa97e16f896">dbea7e9d</a></strong>
<div>
<span>by Ilias Tsitsimpis</span>
<i>at 2020-03-02T01:19:12-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Do not define hs_atomic{read,write}64() on non-64bit

Do not define hs_atomicread64() and hs_atomicwrite64() on machines where
WORD_SIZE_IN_BITS is less than 64, just like we do with the rest of the atomic
functions which work on 64-bit values.

Without this, compilation fails on MIPSel and PowerPC with the following error:

/usr/bin/ld: /<<PKGBUILDDIR>>/libraries/ghc-prim/dist-install/build/libHSghc-prim-0.5.3_p.a(atomic.p_o): in function `hs_atomicread64':
atomic.c:(.text.hs_atomicread64+0x8): undefined reference to `__sync_add_and_fetch_8'
/usr/bin/ld: /<<PKGBUILDDIR>>/libraries/ghc-prim/dist-install/build/libHSghc-prim-0.5.3_p.a(atomic.p_o): in function `hs_atomicwrite64':
atomic.c:(.text.hs_atomicwrite64+0x38): undefined reference to `__sync_bool_compare_and_swap_8'

Fixes #17886.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7c0c76fb1a11532076a0342655a9c889a2a12768">7c0c76fb</a></strong>
<div>
<span>by Roland Senn</span>
<i>at 2020-03-02T17:13:55-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Set `ImpredicativeTypes` during :print command. (#14828)

If ImpredicativeTypes is not enabled, then `:print <term>` will fail if the
type of <term> has nested `forall`s or `=>`s.
This is because the GHCi debugger's internals will attempt to unify a
metavariable with the type of <term> and then display the result, but if the
type has nested `forall`s or `=>`s, then unification will fail.
As a result, `:print` will bail out and the unhelpful result will be
`<term> = (_t1::t1)` (where `t1` is a metavariable).

Beware: <term> can have nested `forall`s even if its definition doesn't use
RankNTypes! Here is an example from #14828:

  class Functor f where
    fmap :: (a -> b) -> f a -> f b

Somewhat surprisingly, `:print fmap` considers the type of fmap to have
nested foralls. This is because the GHCi debugger sees the type
`fmap :: forall f. Functor f => forall a b. (a -> b) -> f a -> f b`.
We could envision deeply instantiating this type to get the type
`forall f a b. Functor f => (a -> b) -> f a -> f b`,
but this trick wouldn't work for higher-rank types.

Instead, we adopt a simpler fix: enable `ImpredicativeTypes` when using
`:print` and friends in the GHCi debugger. This is allows metavariables
to unify with types that have nested (or higher-rank) `forall`s/`=>`s,
which makes `:print fmap` display as
`fmap = (_t1::forall a b. Functor f => (a -> b) -> f a -> f b)`, as expected.

Although ImpredicativeTypes is a somewhat unpredictable from a type inference
perspective, there is no danger in using it in the GHCi debugger, since all
of the terms that the GHCi debugger deals with have already been typechecked.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2a2f51d79f145e015cc089d97cf71c19dd27bee4">2a2f51d7</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-02T17:14:38-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use configure script to detect that we should use in-tree GMP on Windows
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8c663c2c2ff0d79b2c7cfadb0ce961339f1e7e4c">8c663c2c</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-03-04T16:12:14+01:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Be explicit about how stack usage of mvar primops are covered.

This fixes #17893

[skip-ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cedd6f3041de6abe64dfa3257bec7730a9dced9f">cedd6f30</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-05T14:53:12-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Add getCurrentThreadCPUTime helper
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ace618cd2294989e783bd453cee88e0e1c0dad77">ace618cd</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-05T14:53:12-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving-gc: Track time usage of nonmoving marking
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/022b5ad5775ecf6652e663cddb2773d7230385f2">022b5ad5</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-05T14:53:12-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Stats: Add sync pauses to +RTS -S output
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/067632342cf2f063b0f23c255740e2717e5e14c7">06763234</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-05T14:53:12-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Report nonmoving collector statistics in machine-readable output
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/70d2b9956d1ecc9d40d1e2d4920983af00ea846d">70d2b995</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-09T06:10:52-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Fix collection of sparks

Previously sparks living in the non-moving heap would be promptly GC'd
by the minor collector since pruneSparkQueue uses the BF_EVACUATED flag,
which non-moving heap blocks do not have set.

Fix this by implementing proper support in pruneSparkQueue for
determining reachability in the non-moving heap. The story is told in
Note [Spark management in the nonmoving heap].
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9668781a36941e7552fcec38f6d4e1d5ec3ef6d1">9668781a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-09T06:11:30-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Disable Sphinx documentation in Alpine build</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8eb2c2639494bed3326163df52fa13de941cd047">8eb2c263</a></strong>
<div>
<span>by Jean-Baptiste Mazon</span>
<i>at 2020-03-09T16:33:37-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix Windows breakage by not touching locales on Windows
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b8dab057f0730a324b7cb7b74a11152f6b96a889">b8dab057</a></strong>
<div>
<span>by Jean-Baptiste Mazon</span>
<i>at 2020-03-09T16:33:37-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: ensure C numerics in heap profiles using Windows locales if needed
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7d95260f0b9a91186eb6a99d6235151a22b2c5ae">7d95260f</a></strong>
<div>
<span>by Jean-Baptiste Mazon</span>
<i>at 2020-03-09T16:33:37-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: refactor and comment profile locales
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5b62781336aff0007aa5fde261c3028a82543a09">5b627813</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-03-09T16:34:14-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use InstanceSigs in GND/DerivingVia-generated code (#17899)

Aside from making the generated code easier to read when
`-ddump-deriv` is enabled, this makes the error message in `T15073`
substantially simpler (see the updated `T15073` expected stderr).

Fixes #17899.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/70b5077820a0859d22edd29885b62eef3c363058">70b50778</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-10T02:05:42-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">SysTools: Ensure that error parser can handle absolute paths on Windows

This fixes #17786, where the error parser fails to correctly handle the
drive name in absolute Windows paths.

Unfortunately I couldn't find a satisfactory way to test this.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/85b861d822251486fdf900ee951c275ebd8dfcb3">85b861d8</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-10T02:05:42-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Add test for #17786

This isn't pretty but it's perhaps better than nothing.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ee2c50cbeead0d865a02a963f3f3c72e298398d7">ee2c50cb</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-10T02:06:33-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: track missing configure results
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ca8f51d475a69583a228f118e6b9dac98ba483d3">ca8f51d4</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-10T02:07:22-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add regression test for T17904

Closes #17904
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5fa9cb82223de1c1c2684aa6917bf85a2e3c6469">5fa9cb82</a></strong>
<div>
<span>by Richard Eisenberg</span>
<i>at 2020-03-10T12:29:46-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">anyRewritableTyVar now looks in RuntimeReps

Previously, anyRewritableTyVar looked only at the arg and res
of `arg -> res`, but their RuntimeReps are also subject to
rewriting. Easy to fix.

Test case: typecheck/should_compile/T17024

Fixes #17024.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5ba01d83a2078acce789a9d5f111efa4d4ffc616">5ba01d83</a></strong>
<div>
<span>by Ben Price</span>
<i>at 2020-03-10T12:30:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Clarify a Lint message

When developing a plugin I had a shadowing problem, where I generated
code
  app = \f{v r7B} x{v r7B} -> f{v r7B} x{v r7B}
This is obviously wrong, since the occurrence of `f` to the right of the
arrow refers to the `x` binder (they share a Unique). However, it is
rather confusing when Lint reports
  Mismatch in type between binder and occurrence
  Var: x{v rB7}
since it is printing the binder, rather than the occurrence.
It is rather easy to read this as claiming there is something wrong with
the `x` occurrence!

We change the report to explicitly print both the binder and the
occurrence variables.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7b2c827b7b68f0ade7f4ae66e7033fdb84d75a5f">7b2c827b</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-10T12:31:15-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Comments only

Clarify code added in #17852 and MR !2724
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3300eeacbbf7a3d1f961f809be5d236c48827b28">3300eeac</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-03-10T12:31:54-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Misc cleanup

- Remove Note [Existentials in shift_con_pat].
  The function shift_con_pat has been removed 15 years ago in 23f40f0e9be6d4.
- Remove kcLookupTcTyCon - it's the same as tcLookupTcTyCon
- Remove ASSERT in tyConAppArgN. It's already done by getNth,
  and it's the only reason getNth exists.
- Remove unused function nextRole
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/abf5736bcad2d740b5854e2e4a9b3547b9b06639">abf5736b</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-03-10T18:05:01+01:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Typos in comments [skip ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bb586f894532baf1bcb822afd0df7f9fea198671">bb586f89</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-11T00:14:59-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Prefer darwin-specific getCurrentThreadCPUTime

macOS Catalina now supports a non-POSIX-compliant version of clock_gettime
which cannot use the clock_gettime codepath.

Fixes #17906.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/20800b9a9e88a8784a3ee8720544f504aba7b4f7">20800b9a</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-11T08:17:19-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Split GHC.Iface.Utils module

* GHC.Iface.Recomp: recompilation avoidance stuff
* GHC.Iface.Make: mkIface*

Moved `writeIfaceFile` into GHC.Iface.Load alongside `readIface` and
renamed it `writeIface` for consistency.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1daa20298880487b2a351c88f7ade840eb4632c6">1daa2029</a></strong>
<div>
<span>by Greg Steuck</span>
<i>at 2020-03-11T08:17:56-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fixed a minor typo in codegen.rst</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0bc23338b02ffd624247ace409ab690b2b4a6186">0bc23338</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-03-11T08:18:32-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Re-quantify when generalising over rewrite rule types

Previously, `tcRules` would check for naughty quantification
candidates (see `Note [Naughty quantification candidates]` in
`TcMType`) when generalising over the type of a rewrite rule. This
caused sensible-looking rewrite rules (like those in #17710) to be
rejected. A more permissing (and easier-to-implement) approach is to
do what is described in `Note [Generalising in tcTyFamInstEqnGuts]`
in `TcTyClsDecls`: just re-quantify all the type variable binders,
regardless of the order in which the user specified them. After all,
the notion of type variable specificity has no real meaning in
rewrite rules, since one cannot "visibly apply" a rewrite rule.
I have written up this wisdom in
`Note [Re-quantify type variables in rules]` in `TcRules`.

As a result of this patch, compiling the `ExplicitForAllRules1` test
case now generates one fewer warning than it used to. As far as I can
tell, this is benign, since the thing that the disappearing warning
talked about was also mentioned in an entirely separate warning.

Fixes #17710.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/336eac7ef049ba9feab5a948120f0f732e26f773">336eac7e</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-11T08:19:08-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Mark ghci056 and ghcilink004 as fragile in unreg

As noted in #17018.

Also fix fragile declaration of T13786, which only runs in the normal
way.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c61b9b02925acf248cde1ec0f67730c1a6f6c6e5">c61b9b02</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-11T08:19:44-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Deepen call stack for isIn

I see quite a few warnings like:

  WARNING: file compiler/utils/Util.hs, line 593
    Over-long elem in unionLists

But the call stack is uninformative.   Better to add HasDebugCallStack
to isIn.  Ditto isn'tIn.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3aa9b35fcc417ab39d8da633482fe64dc9f898b1">3aa9b35f</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-11T08:20:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Zero any slop after compaction in compacting GC

In copying GC, with the relevant debug flags enabled, we release the old
blocks after a GC, and the block allocator zeroes the space before
releasing a block. This effectively zeros the old heap.

In compacting GC we reuse the blocks and previously we didn't zero the
unused space in a compacting generation after compaction. With this
patch we zero the slop between the free pointer and the end of the block
when we're done with compaction and when switching to a new block
(because the current block doesn't have enough space for the next object
we're shifting).
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8e6febcee4b91a88a5027baac4bee5a8847fe79b">8e6febce</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-11T20:33:37-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactor GHC.Driver.Session (Ways and Flags)

* extract flags and ways into their own modules (with some renaming)

* remove one SOURCE import of GHC.Driver.Session from GHC.Driver.Phases

* when GHC uses dynamic linking (WayDyn), `interpWays` was only
  reporting WayDyn even if the host was profiled (WayProf).  Now it
  returns both as expected (might fix #16803).

* `mkBuildTag :: [Way] -> String` wasn't reporting a canonical tag for
  differently ordered lists. Now we sort and nub the list to fix this.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bc41e47123b205a45385a3aa69de97ce22686423">bc41e471</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-11T20:33:37-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactor interpreterDynamic and interpreterProfiled

* `interpreterDynamic` and `interpreterProfiled` now take `Interp`
  parameters instead of DynFlags

* slight refactoring of `ExternalInterp` so that we can read the iserv
  configuration (which is pure) without reading an MVar.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a6989971379c26d8c288551d536149675e009e34">a6989971</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-11T20:33:37-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use a Set to represent Ways

Should make `member` queries faster and avoid messing up with missing
`nubSort`.

Metric Increase:
    hie002
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cb93a1a4405b448e83cad973f93dab3f7f050736">cb93a1a4</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-03-11T20:34:14-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make DeriveFunctor-generated code require fewer beta reductions

Issue #17880 demonstrates that `DeriveFunctor`-generated code is
surprisingly fragile when rank-_n_ types are involved. The culprit is
that `$fmap` (the algorithm used to generate `fmap` implementations)
was too keen on applying arguments with rank-_n_ types to lambdas,
which fail to typecheck more often than not.

In this patch, I change `$fmap` (both the specification and the
implementation) to produce code that avoids creating as many lambdas,
avoiding problems when rank-_n_ field types arise.
See the comments titled "Functor instances" in `TcGenFunctor` for a
more detailed description. Not only does this fix #17880, but it also
ensures that the code that `DeriveFunctor` generates will continue
to work after simplified subsumption is implemented (see #17775).

What is truly amazing is that #17880 is actually a regression
(introduced in GHC 7.6.3) caused by commit
49ca2a37bef18aa57235ff1dbbf1cc0434979b1e, the fix #7436. Prior to
that commit, the version of `$fmap` that was used was almost
identical to the one used in this patch! Why did that commit change
`$fmap` then? It was to avoid severe performance issues that would
arise for recursive `fmap` implementations, such as in the example
below:

```hs
data List a = Nil | Cons a (List a) deriving Functor

-- ===>

instance Functor List where
  fmap f Nil = Nil
  fmap f (Cons x xs) = Cons (f x) (fmap (\y -> f y) xs)
```

The fact that `\y -> f y` was eta expanded caused significant
performance overheads. Commit
49ca2a37bef18aa57235ff1dbbf1cc0434979b1e fixed this performance
issue, but it went too far. As a result, this patch partially
reverts 49ca2a37bef18aa57235ff1dbbf1cc0434979b1e.

To ensure that the performance issues pre-#7436 do not resurface,
I have taken some precautionary measures:

* I have added a special case to `$fmap` for situations where the
  last type variable in an application of some type occurs directly.
  If this special case fires, we avoid creating a lambda expression.
  This ensures that we generate
  `fmap f (Cons x xs) = Cons (f x) (fmap f xs)` in the derived
  `Functor List` instance above. For more details, see
  `Note [Avoid unnecessary eta expansion in derived fmap implementations]`
  in `TcGenFunctor`.
* I have added a `T7436b` test case to ensure that the performance
  of this derived `Functor List`-style code does not regress.

When implementing this, I discovered that `$replace`, the algorithm
which generates implementations of `(<$)`, has a special case that is
very similar to the `$fmap` special case described above. `$replace`
marked this special case with a custom `Replacer` data type, which
was a bit overkill. In order to use the same machinery for both
`Functor` methods, I ripped out `Replacer` and instead implemented
a simple way to detect the special case. See the updated commentary
in `Note [Deriving <$]` for more details.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1f9db3e79bd0d70e5a1491174d540717f3bce2bf">1f9db3e7</a></strong>
<div>
<span>by Kirill Elagin</span>
<i>at 2020-03-12T09:45:51-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">pretty-printer: Properly parenthesise LastStmt

After ApplicatveDo strips the last `return` during renaming, the pretty
printer has to restore it. However, if the return was followed by `$`,
the dollar was stripped too and not restored.

For example, the last stamement in:

```
  foo = do
    x <- ...
    ...
    return $ f x
```

would be printed as:

```
    return f x
```

This commit preserved the dolar, so it becomes:

```
    return $ f x
```
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5cb93af73499f9cee4a17427629840feb26171e5">5cb93af7</a></strong>
<div>
<span>by Kirill Elagin</span>
<i>at 2020-03-12T09:45:51-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">pretty-printer: Do not print ApplicativeDo join

* Do not print `join` in ApplictiveStmt, unless ppr-debug
* Print parens around multiple parallel binds

When ApplicativeDo is enabled, the renamer analyses the statements of a
`do` block and in certain cases marks them as needing to be rewritten
using `join`.

For example, if you have:

```
foo = do
  a <- e1
  b <- e2
  doSomething a b
```

it will be desugared into:

```
foo = join (doSomething <$> e1 <*> e2)
```

After renaming but before desugaring the expression is stored
essentially as:

```
foo = do
  [will need join] (a <- e1 | b <- e2)
  [no return] doSomething a b
```

Before this change, the pretty printer would print a call to `join`,
even though it is not needed at this stage at all. The expression will be
actually rewritten into one using join only at desugaring, at which
point a literal call to join will be inserted.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3a259092a02e84d6b45da6b232cfc022898451a0">3a259092</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-12T09:46:29-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Expose compulsory unfoldings always

The unsafeCoerce# patch requires that unsafeCoerce# has
a compulsory unfolding that is always available.  So we have
to be careful to expose compulsory unfoldings unconditionally
and consistently.

We didn't get this quite right: #17871.  This patch fixes
it.  No real surprises here.

See Note [Always expose compulsory unfoldings] in GHC.Iface.Tidy
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6a65b8c2f5b4bc7abdb0ca3b5876df694acb8194">6a65b8c2</a></strong>
<div>
<span>by Alp Mestanogullari</span>
<i>at 2020-03-13T02:29:20-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: improve dependency tracking for the check-* programs

The code in Rules.Register responsible for finding all the build artifacts
that Cabal installs when registering a library (static/shared libs, .hi files,
...) was looking in the wrong place. This patch fixes that logic and makes sure
we gather all those artifacts in a list to declare that the rule for a given
`.conf` file, our proxy for "Hadrian, please install this package in the package
db for this stage", also produces those artifacts under the said package
database.

We also were completely missing some logic to declare that the check-* programs
have dependencies besides their source code, at least when testing an in-tree
compiler.

Finally, this patch also removes redundant packages from 'testsuitePackages',
since they should already be covered by the stage<N>Packages lists from
Settings.Default.

With this patch, after a complete build and freezing stage 1, a change to
`compiler/parser/Parser.y` results in rebuilding the ghc lib, reinstalling it,
and rebuilding the few programs that depend on it, _including_ `check-ppr` and
`check-api-annotations` (therefore fixing #17273).
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/44fad4a925c06fa2b14611ea08acea9210ee4e00">44fad4a9</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-13T02:30:22-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Rename isDllName

I wanted to fix the dangling comment in `isDllName` ("This is the cause
of #", #8696 is already mentioned earlier). I took the opportunity to
change the function name to better reflect what it does.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2f292db8f10134919c420b71b8a5eccd379212ad">2f292db8</a></strong>
<div>
<span>by Paavo</span>
<i>at 2020-03-13T02:31:03-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Update documentation for closureSize
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f124ff0dfccced755ee97ecac027119269996f8f">f124ff0d</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-13T02:31:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Rework triggering of release builds

Use a push option instead of tagging.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7f25557a6f240943ebe3eb3b3c7178e76a3e93e1">7f25557a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-13T10:38:09-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Distinguish integer-simple test envs

Previously two integer-simple jobs declared the same test environment. One (the nightly job) was built in the perf way, the other in the validate way. Consequently they had appreciably different performance characteristics, causing in the nightly job to spuriously fail with performance changes.</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c12a2ec5fe4e7f94d565c0e6398d1d79854db146">c12a2ec5</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-14T05:25:30-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix Lint

Ticket #17590 pointed out a bug in the way the linter dealt with
type lets, exposed by the new uniqAway story.

The fix is described in Note [Linting type lets]. I ended up
putting the in-scope Ids in a different env field, le_ids,
rather than (as before) sneaking them into the TCvSubst.

Surprisingly tiresome, but done.

Metric Decrease:
    hie002
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b989845e378081f0932a7fec528e68daeeaa14fb">b989845e</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-14T05:26:11-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: fix absolute buildroot support (#17822)

Shake's "**" wildcard doesn't match absolute root. We must use "//" instead.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4f117135673b36816c343bc11efcbb8396160c75">4f117135</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-14T05:26:49-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make: refactor GMP rules

Document and use simpler rules for the ghc-gmp.h header.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7432b327a3c43c4e2e7c777b41a8e17899b8d0d1">7432b327</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-14T05:27:28-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use correct option name (-opti) (fix #17314)

s/pgmo/opti
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8f7dd5710b80906ea7a3e15b7bb56a883a49fed8">8f7dd571</a></strong>
<div>
<span>by Judah Jacobson</span>
<i>at 2020-03-14T05:28:07-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Allow overriding LD_STAGE0 and AR_STAGE0 in the configure script.

Previously it was possible to override the stage0 C compiler via `CC_STAGE0`,
but you couldn't override `ld` or `ar` in stage0.  This change allows overriding them
by setting `LD_STAGE0` or `AR_STAGE0`, respectively.

Our team uses this feature internally to take more control of our GHC build
and make it run more hermetically.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7c3e39a9a7ccb3b6c2953b0397a0d315dc0ec7d5">7c3e39a9</a></strong>
<div>
<span>by Judah Jacobson</span>
<i>at 2020-03-14T05:28:07-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use AC_ARG_VAR for LD_STAGE0 and AR_STAGE0.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/20d4d676964382b313b9e44062e45a7c38621999">20d4d676</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-14T05:28:43-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Don't traverse filled segment list in pause

The non-moving collector would previously walk the entire filled segment
list during the preparatory pause. However, this is far more work than
is strictly necessary. We can rather get away with merely collecting the
allocators' filled segment list heads and process the lists themselves
during the concurrent phase. This can significantly reduce the maximum
gen1 GC pause time in programs with high rates of long-lived allocations.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fdfa2d0121ca8cc22479dd17a74afa58fc2b39f5">fdfa2d01</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-14T05:29:18-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Remove redundant bitmap clearing

nonmovingSweep already clears the bitmap in the sweep loop. There is no
reason to do so a second time.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2f8c77673f1faf0d8fed6df2bdd1ca15d696a010">2f8c7767</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-14T05:29:55-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Simple refactor of cheapEqExpr

No change in functionality.  Just seems tidier (and signficantly more
efficient) to deal with ticks directly than to call stripTicksTopE.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/88f7a76208b0fcf41ca0e16d18a71523f0601ee5">88f7a762</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-14T05:29:55-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Improve CSE.combineAlts

This patch improves the way that CSE combines identical
alternatives.  See #17901.

I'm still not happy about the duplication between CSE.combineAlts
and GHC.Core.Utils.combineIdenticalAlts; see the Notes with those
functions.  But this patch is a step forward.

Metric Decrease:
    T12425
    T5642
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8b95ddd3f20a67acf5251347d80f9cab191bdfc4">8b95ddd3</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-14T05:30:31-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Add integer-simple release build for Windows

Closes #16144.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e3c374cc5bd7eb49649b9f507f9f7740697e3f70">e3c374cc</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-14T05:31:07-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Wrap an implication around class-sig kind errors

Ticket #17841 showed that we can get a kind error
in a class signature, but lack an enclosing implication
that binds its skolems.

This patch

* Adds the wrapping implication: the new call to
  checkTvConstraints in tcClassDecl1

* Simplifies the API to checkTvConstraints, which
  was not otherwise called at all.

* Simplifies TcErrors.report_unsolved by *not*
  initialising the TidyEnv from the typechecker lexical
  envt.  It's enough to do so from the free vars of the
  unsolved constraints; and we get silly renamings if
  we add variables twice: once from the lexical scope
  and once from the implication constraint.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/73133a3b601b76c46098fb8ad3c76de5fe04c9b2">73133a3b</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-14T05:31:07-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactoring in TcSMonad

This patch is just refactoring: no change in
behaviour.

I removed the rather complicated
    checkConstraintsTcS
    checkTvConstraintsTcS

in favour of simpler functions
    emitImplicationTcS
    emitTvImplicationTcS
    pushLevelNoWorkList

The last of these is a little strange, but overall
it's much better I think.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/93c88c266eacd80a7f2a1754778167390c287b18">93c88c26</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-14T05:31:42-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">base: Make `open` calls interruptible

As noted in #17912, `open` system calls were `safe` rather than
`interruptible`. Consequently, the program could not be interrupted with
SIGINT if stuck in a slow open operation. Fix this by marking
`c_safe_open` as interruptible.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bee4cdad4ce68a5bbe6af493d99f0197a34eef5c">bee4cdad</a></strong>
<div>
<span>by Vladislav Zavialov</span>
<i>at 2020-03-14T05:32:18-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove second tcLookupTcTyCon in tcDataDefn

Before this patch, tcDataDefn used to call tcLookupTcTyCon twice in a row:
        1. in bindTyClTyVars itself
        2. in the continuation passed to it

Now bindTyClTyVars passes the TcTyCon to the continuation, making
the second lookup unnecessary.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3f116d35a5b028ae2bb22da5063900d2f3d0b476">3f116d35</a></strong>
<div>
<span>by Cale Gibbard</span>
<i>at 2020-03-14T19:34:42-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Enable stage1 build of haddock

The submodule has already been bumped to contain the fix.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/49e9d7395a13584f15798bce1601b8d3a6633f11">49e9d739</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-14T19:35:24-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Fix printClosure when printing fwd ptrs
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1de3ab4a147eeb0b34b24a3c0e91f174e6e5cb79">1de3ab4a</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-03-14T19:36:04-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove unused field var_inline (#17915)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d30aeb4b38381758025bc1002eb2135ad6bc58b8">d30aeb4b</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-03-15T03:57:41-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Document restriction on SCC pragma syntax

Currently, the names of cost centres must be quoted or
be lowercase identifiers.

Fixes #17916.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b4774598e6bd060b1b4230b11b734ca40022980d">b4774598</a></strong>
<div>
<span>by Brian Foley</span>
<i>at 2020-03-15T03:58:18-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove some dead code

>From the notes.ghc.drop list found using weeder in #17713
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dd6ffe6be742cf3ec98406704fef53ad86cc1560">dd6ffe6b</a></strong>
<div>
<span>by Viktor Dukhovni</span>
<i>at 2020-03-15T03:58:55-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Note platform-specific Foreign.C.Types in context

Also fix the markup in the general note at the top of the module.  Haddock
(usability trade-off), does not support multi-line emphasised text.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2e82465fff5851f00449131fdc8bacd3ca95f90f">2e82465f</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-15T10:57:10-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactor CmmToAsm (disentangle DynFlags)

This patch disentangles a bit more DynFlags from the native code
generator (CmmToAsm).

In more details:

- add a new NCGConfig datatype in GHC.CmmToAsm.Config which contains the
  configuration of a native code generation session
- explicitly pass NCGConfig/Platform arguments when necessary
- as a consequence `sdocWithPlatform` is gone and there are only a few
  `sdocWithDynFlags` left
- remove the use of `unsafeGlobalDynFlags` from GHC.CmmToAsm.CFG
- remove `sdocDebugLevel` (now we pass the debug level via NCGConfig)

There are still some places where DynFlags is used, especially because
of pretty-printing (CLabel), because of Cmm helpers (such as
`cmmExprType`) and because of `Outputable` instance for the
instructions. These are left for future refactoring as this patch is
already big.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c35c545d3f32f092c52052349f741739a844ec0f">c35c545d</a></strong>
<div>
<span>by Judah Jacobson</span>
<i>at 2020-03-15T10:57:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add a -no-haddock flag.

This flag undoes the effect of a previous "-haddock" flag.  Having both flags makes it easier
for build systems to enable Haddock parsing in a set of global flags, but then disable it locally for
specific targets (e.g., third-party packages whose comments don't pass the validation in the latest GHC).

I added the flag to expected-undocumented-flags.txt since `-haddock` was alreadyin that list.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cfcc3c9a1f2e4e33bed4c40767f8e7971e331c15">cfcc3c9a</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-15T10:58:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix global_link of TSOs for threads reachable via dead weaks

Fixes #17785

Here's how the problem occurs:

- In generation 0 we have a TSO that is finished (i.e. it has no more
  work to do or it is killed).

- The TSO only becomes reachable after collectDeadWeakPtrs().

- After collectDeadWeakPtrs() we switch to WeakDone phase where we don't
  move TSOs to different lists anymore (like the next gen's thread list
  or the resurrected_threads list).

- So the TSO will never be moved to a generation's thread list, but it
  will be promoted to generation 1.

- Generation 1 collected via mark-compact, and because the TSO is
  reachable it is marked, and its `global_link` field, which is bogus at
  this point (because the TSO is not in a list), will be threaded.

- Chaos ensues.

In other words, when these conditions hold:

- A TSO is reachable only after collectDeadWeakPtrs()
- It's finished (what_next is ThreadComplete or ThreadKilled)
- It's retained by mark-compact collector (moving collector doesn't
  evacuate the global_list field)

We end up doing random mutations on the heap because the TSO's
global_list field is not valid, but it still looks like a heap pointer
so we thread it during compacting GC.

The fix is simple: when we traverse old_threads lists to resurrect
unreachable threads the threads that won't be resurrected currently
stays on the old_threads lists. Those threads will never be visited
again by MarkWeak so we now reset the global_list fields. This way
compacting GC does not thread pointers to nowhere.

Testing
-------

The reproducer in #17785 is quite large and hard to build, because of
the dependencies, so I'm not adding a regression test.

In my testing the reproducer would take a less than 5 seconds to run,
and once in every ~5 runs would fail with a segfault or an assertion
error. In other cases it also fails with a test failure. Because the
tests never fail with the bug fix, assuming the code is correct, this
also means that this bug can sometimes lead to incorrect runtime
results.

After the fix I was able to run the reproducer repeatedly for about an
hour, with no runtime crashes or test failures.

To run the reproducer clone the git repo:

    $ git clone https://github.com/osa1/streamly --branch ghc-segfault

Then clone primitive and atomic-primops from their git repos and point
to the clones in cabal.project.local. The project should then be
buildable using GHC HEAD. Run the executable `properties` with `+RTS -c
-DZ`.

In addition to the reproducer above I run the test suite using:

    $ make slowtest EXTRA_HC_OPTS="-debug -with-rtsopts=-DS \
        -with-rtsopts=-c +RTS -c -RTS" SKIPWAY='nonmoving nonmoving_thr'

This enables compacting GC always in both GHC when building the test
programs and when running the test programs, and also enables sanity
checking when running the test programs. These set of flags are not
compatible for all tests so there are some failures, but I got the same
set of failures with this patch compared to GHC HEAD.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/818b3c38e7548f4720815f76969238d82c9650f7">818b3c38</a></strong>
<div>
<span>by Lysxia</span>
<i>at 2020-03-16T23:52:42-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">base: add strict IO functions: readFile', getContents', hGetContents'
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/18a346a4b5a02b8c62e8eedb91b35c2d8e754b96">18a346a4</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-16T23:53:24-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Modules: Core (#13009)

Update submodule: haddock
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/92327e3afd9d2650c9cc9610297d40c2712da085">92327e3a</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-16T23:54:04-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Update sanity checking for TSOs:

- Remove an invalid assumption about GC checking what_next field. The GC
  doesn't care about what_next at all, if a TSO is reachable then all
  its pointers are followed (other than global_tso, which is only
  followed by compacting GC).

- Remove checkSTACK in checkTSO: TSO stacks will be visited in
  checkHeapChain, or checkLargeObjects etc.

- Add an assertion in checkTSO to check that the global_link field is
  sane.

- Did some refactor to remove forward decls in checkGlobalTSOList and
  added braces around single-statement if statements.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e1aa40525ddac370766907a49682976e2ea78422">e1aa4052</a></strong>
<div>
<span>by PHO</span>
<i>at 2020-03-17T07:36:09-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Don't use non-portable operator "==" in configure.ac

The test operator "==" is a Bash extension and produces a wrong result
if /bin/sh is not Bash.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/89f034ddeb4ad7d93c877d5bdbcf2cca7a44f79c">89f034dd</a></strong>
<div>
<span>by Maximilian Tagher</span>
<i>at 2020-03-17T07:36:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Document the units of -ddump-timings

Right now, in the output of -ddump-timings to a file, you can't tell what the units are:

```
CodeGen [TemplateTestImports]: alloc=22454880 time=14.597
```

I believe bytes/milliseconds are the correct units, but confirmation would be appreciated. I'm basing it off of this snippet from `withTiming'`:

```
when (verbosity dflags >= 2 && prtimings == PrintTimings)
  $ liftIO $ logInfo dflags (defaultUserStyle dflags)
      (text "!!!" <+> what <> colon <+> text "finished in"
       <+> doublePrec 2 time
       <+> text "milliseconds"
       <> comma
       <+> text "allocated"
       <+> doublePrec 3 (realToFrac alloc / 1024 / 1024)
       <+> text "megabytes")
```

which implies time is in milliseconds, and allocations in bytes (which divided by 1024 would be KB, and again would be MB)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/beffa14771ebd6ba24b20337f29045364621c5fa">beffa147</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-17T07:37:25-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Implement mapTyCo like foldTyCo

This patch makes mapType use the successful idiom described
in TyCoRep
   Note [Specialising foldType]

I have not yet changed any functions to use mapType, though there
may be some suitable candidates.

This patch should be a no-op in terms of functionality but,
because it inlines the mapper itself, I'm hoping that there may
be some modest perf improvements.

Metric Decrease:
    T5631
    T5642
    T3064
    T9020
    T14683
    hie002
    haddock.Cabal
    haddock.base
    haddock.compiler
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5800ebfeb2fe3e3ed985cdf08a66defea73db71d">5800ebfe</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-17T07:38:08-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Don't update ModDetails with CafInfos when opts are disabled

This is consistent with the interface file behavior where we omit
HsNoCafRefs annotations with -fomit-interface-pragmas (implied by -O0).

ModDetails and ModIface are just different representations of the same
thing, so they really need to be in sync. This patch does the right
thing and does not need too much explanation, but here's an example of a
problem not doing this causes in !2842:

    -- MyInteger.hs
    module MyInteger
      ( MyInteger (MyInteger)
      , ToMyInteger (toMyInteger)
      ) where

    newtype MyInteger = MyInteger Integer

    class ToMyInteger a where
      toMyInteger :: a -> MyInteger

    instance ToMyInteger Integer where
      toMyInteger = MyInteger {- . succ -}

    -- Main.hs
    module Main
      ( main
      ) where

    import MyInteger (MyInteger (MyInteger), toMyInteger)

    main :: IO ()
    main = do
      let (MyInteger i) = (id . toMyInteger) (41 :: Integer)
      print i

If I build this with -O0, without this fix, we generate a ModDetails with
accurate LFInfo for toMyInteger (MyInteger.$fToMyIntegerInteger) which says that
it's a LFReEntrant with arity 1. This means in the use site (Main) we tag the
value:

    R3 = MyInteger.$fToMyIntegerInteger_closure + 1;
    R2 = GHC.Base.id_closure;
    R1 = GHC.Base.._closure;
    Sp = Sp - 16;
    call stg_ap_ppp_fast(R4, R3, R2, R1) args: 24, res: 0, upd: 24;

Now we change the definition by uncommenting the `succ` part and it becomes a thunk:

    MyInteger.$fToMyIntegerInteger [InlPrag=INLINE (sat-args=0)]
      :: MyInteger.ToMyInteger GHC.Integer.Type.Integer
    [GblId[DFunId(nt)]] =
        {} \u [] $ctoMyInteger_rEA;

and its LFInfo is now LFThunk. This change in LFInfo makes a difference in the
use site: we can no longer tag it.

But becuase the interface fingerprint does not change (because ModIface does not
change) we don't rebuild Main and tag the thunk.

(1.2% increase in allocations when building T12545 on armv7 because we
generate more code without CafInfos)

Metric Increase:
    T12545
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5b632dad2e1d373606fe29f7eee0daf15641560f">5b632dad</a></strong>
<div>
<span>by Paavo</span>
<i>at 2020-03-17T07:38:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add example for Data.Semigroup.diff
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4d85d68b004a3d577c0e27d9e6fdddd118e8a9f3">4d85d68b</a></strong>
<div>
<span>by Paavo</span>
<i>at 2020-03-17T07:38:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Clean up
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/75168d07c9c30289709423fc184bbab8dcad0f4e">75168d07</a></strong>
<div>
<span>by Paavo</span>
<i>at 2020-03-17T07:38:48-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Make example collapsible
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/53ff2cd0c49735e8f709ac8a5ceab68483eb89df">53ff2cd0</a></strong>
<div>
<span>by Richard Eisenberg</span>
<i>at 2020-03-17T13:46:57+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix #17021 by checking more return kinds

All the details are in new Note [Datatype return kinds] in
TcTyClsDecls.

Test case: typecheck/should_fail/T17021{,b}
           typecheck/should_compile/T17021a

Updates haddock submodule
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/528df8ecb4e2f9c78b1ae4ab7ff8230644e9b643">528df8ec</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-18T10:06:43-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Modules: Core operations (#13009)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4e8a71c1138b587dfbab8a1823b3f7fa6f0166bd">4e8a71c1</a></strong>
<div>
<span>by Richard Eisenberg</span>
<i>at 2020-03-18T10:07:19-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add release note about fix to #16502.

We thought we needed to update the manual, but the fix for #16502
actually brings the implementation in line with the manual. So we
just alert users of how to update their code.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5cbf9934c59f7726781cc4cccf4748a5c09c4997">5cbf9934</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-03-19T00:39:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Update "GHC differences to the FFI Chapter" in user guide.

The old entry had a heavy focus on how things had been. Which is
not what I generally look for in a user guide.

I also added a small section on behaviour of nested safe ffi calls.

[skip-ci]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b03fd3bcd4ff14aed2942275c3b0db5392dc913c">b03fd3bc</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-03-19T00:40:06-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">PmCheck: Use ConLikeSet to model negative info

In #17911, Simon recognised many warnings stemming from over-long list
unions while coverage checking Cabal's `LicenseId` module.

This patch introduces a new `PmAltConSet` type which uses a `UniqDSet`
instead of an association list for `ConLike`s. For `PmLit`s, it will
still use an assocation list, though, because a similar map data
structure would entail a lot of busy work.

Fixes #17911.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/64f207566931469648e791df4f0f0384d45cddd0">64f20756</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-19T12:16:49-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Refactoring: use Platform instead of DynFlags when possible

Metric Decrease:
    ManyConstructors
    T12707
    T13035
    T1969
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cb1785d9f839e34a3a4892f354f0c51cc6553c0e">cb1785d9</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-19T12:16:54-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">FastString: fix eager reading of string ptr in hashStr

This read causes NULL dereferencing when len is 0.

Fixes #17909

In the reproducer in #17909 this bug is triggered as follows:

- SimplOpt.dealWithStringLiteral is called with a single-char string
  ("=" in #17909)

- tailFS gets called on the FastString of the single-char string.

- tailFS checks the length of the string, which is 1, and calls
  mkFastStringByteString on the tail of the ByteString, which is an
  empty ByteString as the original ByteString has only one char.

- ByteString's unsafeUseAsCStringLen returns (NULL, 0) for the empty
  ByteString, which is passed to mkFastStringWith.

- mkFastStringWith gets hash of the NULL pointer via hashStr, which
  fails on empty strings because of this bug.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/73a7383ebc17f495d7acd04007c8c56b46532cb6">73a7383e</a></strong>
<div>
<span>by Richard Eisenberg</span>
<i>at 2020-03-20T20:42:56-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Simplify treatment of heterogeneous equality

Previously, if we had a [W] (a :: k1) ~ (rhs :: k2), we would
spit out a [D] k1 ~ k2 and part the W as irreducible, hoping for
a unification. But we needn't do this. Instead, we now spit out
a [W] co :: k2 ~ k1 and then use co to cast the rhs of the original
Wanted. This means that we retain the connection between the
spat-out constraint and the original.

The problem with this new approach is that we cannot use the
casted equality for substitution; it's too like wanteds-rewriting-
wanteds. So, we forbid CTyEqCans that mention coercion holes.

All the details are in Note [Equalities with incompatible kinds]
in TcCanonical.

There are a few knock-on effects, documented where they occur.

While debugging an error in this patch, Simon and I ran into
infelicities in how patterns and matches are printed; we made
small improvements.

This patch includes mitigations for #17828, which causes spurious
pattern-match warnings. When #17828 is fixed, these lines should
be removed.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/faa36e5b3674a7b2cfc6b931eec27b3558fad33b">faa36e5b</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-20T20:43:41-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Hadrian: ignore in-tree GMP objects with ``--lint``
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9a96ff6b1c19c9d0af9c9a39fb2c086f311c7239">9a96ff6b</a></strong>
<div>
<span>by Richard Eisenberg</span>
<i>at 2020-03-20T20:44:17-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Update core spec to reflect changes to Core.

Key changes:
 * Adds a new rule for forall-coercions over coercion variables, which
was implemented but conspicuously missing from the spec.
 * Adds treatment for FunCo.
 * Adds treatment for ForAllTy over coercion variables.
 * Improves commentary (including restoring a Note lost in
03d4852658e1b7407abb4da84b1b03bfa6f6db3b) in the source.

No changes to running code.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7e0451c6ce78b08b5f7564aa03a9a86051b35163">7e0451c6</a></strong>
<div>
<span>by Sergej Jaskiewicz</span>
<i>at 2020-03-20T20:44:55-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix event message in withTiming'

This typo caused generating 'end' events without the corresponding 'begin' events.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1542a626a3649e5fc1becec1eff2715a6108d144">1542a626</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">fs.h: Add missing declarations on Windows
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3bcf2ccdd0bdd3cf176943ddb946e4fcef2ac7c1">3bcf2ccd</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bump process submodule

Avoids redundant case alternative warning.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3b363ef9405c52369b63fc167ded8a533c6a5079">3b363ef9</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Normalize slashes in ghc-api annotations output

Enable `normalise_slashes` on `annotations`, `listcomps`, and
`parseTree` to fix Windows failures.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/25fc94295c68620c6928751aaadc46b11a185f0c">25fc9429</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Update expected output on Windows
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7f58ec6d94f49cf5713757710c6b80a682ee066b">7f58ec6d</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Fix TOP of T17786
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/aadcd909563d5ddf7b2fc469ee3c09c301b1a813">aadcd909</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Update expected output on Windows
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dc1eb10dae03f3fe5f11de845c6772c229684c28">dc1eb10d</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Fix executable extension passed to testsuite driver
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/58f62e2caa19e13082807da1d49f94e9cf869322">58f62e2c</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Require that Windows-hadrian job passes
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8dd2415dd2f423688f33a8fb267857e3ff39754d">8dd2415d</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Eliminate redundant .exe from GHC path

Previously we were invoking:

    bash -c
    "c:/GitLabRunner/builds/eEQrxK4p/0/ghc/ghc/toolchain/bin/ghc.exe.exe
    testsuite/mk/ghc-config.hs -o _build/test/bin/ghc-config.exe"
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/373621f61f812accdeba39c745eb7d015430ff8e">373621f6</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-22T22:37:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Bump hsc2hs submodule
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/abc02b4036c2d8efe50b720d8c8103c4f1b8899a">abc02b40</a></strong>
<div>
<span>by Hécate</span>
<i>at 2020-03-22T22:38:33-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Annotate the non-total function in Data.Foldable as such
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/19f125578247dfe8036b5793cb3f6b684474f9c7">19f12557</a></strong>
<div>
<span>by Josef Svenningsson</span>
<i>at 2020-03-23T14:05:33-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix ApplicativeDo regression #17835

A previous fix for #15344 made sure that monadic 'fail' is used properly
when translating ApplicativeDo. However, it didn't properly account
for when a 'fail' will be inserted which resulted in some programs
failing with a type error.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2643ba465cd2a133b6f495f34fc59cd1a6d23525">2643ba46</a></strong>
<div>
<span>by Paavo</span>
<i>at 2020-03-24T08:31:32-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add example and doc for Arg (Fixes #17153)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/703221f408b023a1b3433938572e7b5c24b4af60">703221f4</a></strong>
<div>
<span>by Roland Senn</span>
<i>at 2020-03-25T14:45:04-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use export list of Main module in function TcRnDriver.hs:check_main (Fix #16453)

- Provide the export list of the `Main` module as parameter to the
  `compiler/typecheck/TcRnDriver.hs:check_main` function.
- Instead of `lookupOccRn_maybe` call the function `lookupInfoOccRn`.
  It returns the list `mains_all` of all the main functions in scope.
- Select from this list `mains_all` all `main` functions that are in
  the export list of the `Main` module.
- If this new list contains exactly one single `main` function, then
  typechecking continues.
- Otherwise issue an appropriate error message.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3e27205a66b06a4501d87eb31e285eadbc693eb7">3e27205a</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-03-25T14:45:40-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove -fkill-absence and -fkill-one-shot flags

They seem to be a benchmarking vestige of the Cardinality paper and
probably shouldn't have been merged to HEAD in the first place.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/262e42aa34c4d5705c8d011907c351497dd4e862">262e42aa</a></strong>
<div>
<span>by Peter Trommler</span>
<i>at 2020-03-25T22:41:39-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Do not panic on linker errors
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0de03cd78729dc58a846c64b645e71057ec5d24e">0de03cd7</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-25T22:42:02-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">DynFlags refactoring III

Use Platform instead of DynFlags when possible:
* `tARGET_MIN_INT` et al. replaced with `platformMinInt` et al.
* no more DynFlags in PreRules: added a new `RuleOpts` datatype
* don't use `wORD_SIZE` in the compiler
* make `wordAlignment` use `Platform`
* make `dOUBLE_SIZE` a constant

Metric Decrease:
    T13035
    T1969
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7a04920b23376b2759b5049820400ddd40f7b89e">7a04920b</a></strong>
<div>
<span>by Tristan Cacqueray</span>
<i>at 2020-03-25T22:42:06-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Base: fix a typo in liftA doc

This change removes an extra '|' that should not be rendered in
the liftA documentation.

Tracking: #17929
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1c5a15f7d257d0a2ded4850e38b6174965a7735b">1c5a15f7</a></strong>
<div>
<span>by Tristan Cacqueray</span>
<i>at 2020-03-25T22:42:06-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Base: add Control.Applicative optional example

This change adds an optional example.

Tracking: #17929
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6d172e63f3dd3590b0a57371efb8f924f1fcdf05">6d172e63</a></strong>
<div>
<span>by Tristan Cacqueray</span>
<i>at 2020-03-25T22:42:06-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Base: add markup around Except
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/eb2162c81964b3a1057c21c73574cc2b542d863a">eb2162c8</a></strong>
<div>
<span>by John Ericson</span>
<i>at 2020-03-26T12:37:08-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove unused `ghciTablesNextToCode` from compiler proper
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f51efc4bf5f20d1df3d11a2bb4c147f416367ae4">f51efc4b</a></strong>
<div>
<span>by Joachim Breitner</span>
<i>at 2020-03-26T12:37:09-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Prepare to use run-time tablesNextToCode in compiler exclusively

Factor out CPP as much as possible to prepare for runtime
determinattion.

Progress towards #15548
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1c446220250dcada51d4bb33a0cc7d8ce572e8b6">1c446220</a></strong>
<div>
<span>by Joachim Breitner</span>
<i>at 2020-03-26T12:37:09-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Use run-time tablesNextToCode in compiler exclusively (#15548)

Summary:

 - There is no more use of the TABLES_NEXT_TO_CODE CPP macro in
   `compiler/`. GHCI_TABLES_NEXT_TO_CODE is also removed entirely.
   The field within `PlatformMisc` within `DynFlags` is used instead.

 - The field is still not exposed as a CLI flag. We might consider some
   way to ensure the right RTS / libraries are used before doing that.

Original reviewers:

Original subscribers: TerrorJack, rwbarton, carter

Original Differential Revision: https://phabricator.haskell.org/D5082
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1941ef4f050c0dfcb68229641fcbbde3a10f1072">1941ef4f</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-29T17:28:51-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Modules: Types (#13009)

Update Haddock submodule

Metric Increase:
   haddock.compiler
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1c7c6f1afc8e7f7ba5d256780bc9d5bb5f3e7601">1c7c6f1a</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-29T17:28:51-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove GHC.Types.Unique.Map module

This module isn't used anywhere in GHC.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f1a6c73d01912b389e012a0af81a5c2002e82636">f1a6c73d</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-29T17:28:51-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Merge GHC.Types.CostCentre.Init into GHC.Driver.CodeOutput
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/54250f2d8de910b094070c1b48f086030df634b1">54250f2d</a></strong>
<div>
<span>by Simon Peyton Jones</span>
<i>at 2020-03-29T17:29:30-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Demand analysis: simplify the demand for a RHS

Ticket #17932 showed that we were using a stupid demand for the RHS
of a let-binding, when the result is a product.  This was the result
of a "fix" in 2013, which (happily) turns out to no longer be
necessary.

So I just deleted the code, which simplifies the demand analyser,
and fixes #17932. That in turn uncovered that the anticipation
of worker/wrapper in CPR analysis was inaccurate, hence the logic
that decides whether to unbox an argument in WW was extracted into
a function `wantToUnbox`, now consulted by CPR analysis.

I tried nofib, and got 0.0% perf changes.

All this came up when messing about with !2873 (ticket #17917),
but is idependent of it.

Unfortunately, this patch regresses #4267 and realised that it is now
blocked on #16335.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/03060b2f963436dd22582f3a1c218b7a74d302ec">03060b2f</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-29T17:30:05-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Fix T17786 on Windows

Fixes line ending normalization issue.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/1f7995baaaf4dcba9b3abaddcd571ac66675ab19">1f7995ba</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-29T17:30:05-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Fix T17786

Fix missing quoting and expected exit code.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ef9c608eba417c59fe45c9edd6a946c59f50b5d2">ef9c608e</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-29T17:30:05-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Mark T12971 as broken on Windows

Due to #17945.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e54500c12de051cb9695728d27c812e5160593ee">e54500c1</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-29T17:30:47-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Store ComponentId details

As far as GHC is concerned, installed package components ("units") are
identified by an opaque ComponentId string provided by Cabal. But we
don't want to display it to users (as it contains a hash) so GHC queries
the database to retrieve some infos about the original source package
(name, version, component name).

This patch caches these infos in the ComponentId itself so that we don't
need to provide DynFlags (which contains installed package informations)
to print a ComponentId.

In the future we want GHC to support several independent package states
(e.g. for plugins and for target code), hence we need to avoid
implicitly querying a single global package state.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7e7cb714173652165b8372c3450f4ccd6a377497">7e7cb714</a></strong>
<div>
<span>by Marius Bakke</span>
<i>at 2020-03-29T17:31:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Remove test that dlopens a PIE object.

glibc 2.30 disallowed dlopening PIE objects, so just remove the test.
Fixes #17952.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6c8f80d8876965539571d37d3c7f0fee43c300d2">6c8f80d8</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-03-29T17:32:04-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Correct haddocks for testBit in Data.Bits

It conflated the nth bit with the bit at offset n.

Now we instead give the definition in terms of `bit and `.&.`
on top of clearer phrasing.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c916f190b455d9c43459f81c7ee06d06ab3db957">c916f190</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-03-29T17:32:04-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Apply suggestion to libraries/base/Data/Bits.hs</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/64bf7f51064dad9c63728ac8bccdb9cf00bdb420">64bf7f51</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-29T17:32:41-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Add FreeBSD release job
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a0d8e92e9c9b67426aa139d6bc46363d8940f992">a0d8e92e</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-03-29T17:33:20-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Run checkNewDataCon before constraint-solving newtype constructors

Within `checkValidDataCon`, we used to run `checkValidType` on the
argument types of a newtype constructor before running
`checkNewDataCon`, which ensures that the user does not attempt
non-sensical things such as newtypes with multiple arguments or
constraints. This works out in most situations, but this falls over
on a corner case revealed in #17955:

```hs
newtype T = Coercible () T => T ()
```

`checkValidType`, among other things, peforms an ambiguity check on
the context of a data constructor, and that it turn invokes the
constraint solver. It turns out that there is a special case in the
constraint solver for representational equalities (read: `Coercible`
constraints) that causes newtypes to be unwrapped (see
`Note [Unwrap newtypes first]` in `TcCanonical`). This special case
does not know how to cope with an ill formed newtype like `T`, so
it ends up panicking.

The solution is surprisingly simple: just invoke `checkNewDataCon`
before `checkValidType` to ensure that the illicit newtype
constructor context is detected before the constraint solver can
run amok with it.

Fixes #17955.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/45eb9d8cad254440eaea25676d6788ca13baa2fb">45eb9d8c</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-03-29T17:33:59-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Minor cleanup

- Simplify mkBuildExpr, the function newTyVars was called
  only on a one-element list.
- TTG: use noExtCon in more places. This is more future-proof.
- In zonkExpr, panic instead of printing a warning.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f024b6e385bd1448968b7bf20de05f655c815bae">f024b6e3</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-03-30T12:48:39+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Expect T4267 to pass

Since 54250f2d8de910b094070c1b48f086030df634b1 we expected T4267 to
fail, but it passes on CI.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/57b888c0e90be7189285a6b078c30b26d0923809">57b888c0</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-03-31T10:54:20-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Require GHC 8.8 as the minimum compiler for bootstrapping

This allows us to remove several bits of CPP that are either always
true or no longer reachable. As an added bonus, we no longer need to
worry about importing `Control.Monad.Fail.fail` qualified to avoid
clashing with `Control.Monad.fail`, since the latter is now the same
as the former.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/33f095511a8fce4c945bbcd4feb3910c854dcb61">33f09551</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-03-31T10:54:57-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add regression test for #17963

The panic in #17963 happened to be fixed by commit
e3c374cc5bd7eb49649b9f507f9f7740697e3f70. This patch adds a
regression test to ensure that it remains fixed.

Fixes #17963.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/09a36e80ecaefcfb60eccda98bd06461d0aeca70">09a36e80</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-03-31T10:55:37-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Simplify stderrSupportsAnsiColors

The combinator andM is used only once, and the code is shorter and
simpler if you inline it.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/95bccdd034ce4dd2d1bc36db9f1ba5e172550249">95bccdd0</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-31T10:56:19-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">base: Ensure that encoding global variables aren't inlined

As noted in #17970, these (e.g. `getFileSystemEncoding` and
`setFileSystemEncoding`) previously had unfoldings, which would
break their global-ness.

While not strictly necessary, I also add a NOINLINE on
`initLocaleEncoding` since it is used in `System.IO`, ensuring that we
only system's query the locale encoding once.

Fixes #17970.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/982aaa837aed564ae9b418cda8e97d4facff8fb8">982aaa83</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-03-31T10:56:55-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Update hadrian index revision.

Required in order to build hadrian using ghc-8.10
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4b9c586472bf99425f7bbcf346472d7c54f05028">4b9c5864</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-03-31T10:57:32-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">integer-gmp: Bump version and add changelog entry
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9b39f2e6f63ae50cedd96eaf49146de8ed00fbc8">9b39f2e6</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-04-01T01:20:00-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Clean up "Eta reduction for data families" Notes

Before, there were two distinct Notes named
"Eta reduction for data families". This renames one of them to
"Implementing eta reduction for data families" to disambiguate the
two and fixes references in other parts of the codebase to ensure
that they are pointing to the right place.

Fixes #17313.

[ci skip]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7627eab5dd882eb6f1567e3ae95c6c770830a5eb">7627eab5</a></strong>
<div>
<span>by Ryan Scott</span>
<i>at 2020-04-01T01:20:38-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix the changelog/@since information for hGetContents'/getContents'/readFile'

Fixes #17979.

[ci skip]
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0002db1bf436cbd32f97b659a52b1eee4e8b21db">0002db1b</a></strong>
<div>
<span>by Sylvain Henry</span>
<i>at 2020-04-01T01:21:27-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Kill wORDS_BIGENDIAN and replace it with platformByteOrder (#17957)

Metric Decrease:
    T13035
    T1969
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/774d1f47016e662eaf0c7ac4189f73439f3beab3">774d1f47</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-04-01T17:53:52+02:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Rework treatment of `elem`. Add UTF8 GHC.CString functions.

We optimize `elem` now in more ways than before.

A fusion RULE for elem was broken preventing it from firing.
Fixing this allows a call to elem on a known list to be translated
into a series of equality checks. These ultimately simply to a
single case expression.

It will also turn into a fold for dynamic lists when list fusion
applies.

This logic however does not work on string literals. For this reason
I added a rule to do the transformation into a case explicitly via a
built in rule. It will fire for any short string literals. (<=32 Bytes).

Longer calls to elem on string literals are rewritten to calls
to elem variants specialized to string literals.

This means we will rewrite:
    * c `elem` (unpackCString "Foo"#) => elemCString# c' "Foo"#
    * c `elem` (unpackCStringUtf8 "Bär"#) => elemCStringUtf8# c' "Bär"#

This means all calls to elem on string literals, as well as many
on other statically known lists should now be allocation free.

As a byproduct GHC.CString functionality is now available for Ascii
and UTF8 strings. The following missing UTF8 variants were
added: unpackAppendCStringUtf8#, unpackFoldrCStringUtf8#

They work just like their ascii counterparts. Which hopefully
makes proper UTF8 support easier for library authors.

A version of `elem` operating on known string literals was added:
* elemCString#     :: Char# -> Addr# -> Bool
* elemCStringUtf8# :: Char# -> Addr# -> Bool
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#03615ac1622815b67e9829de1c43ac90fa6d8068">
.ghcid
</a>
</li>
<li class="file-stats">
<a href="#587d266bb27a4dc3022bbed44dfa19849df3044c">
.gitlab-ci.yml
</a>
</li>
<li class="file-stats">
<a href="#157f7634c25bc6366cb7c9c9edb48e819dce38db">
<span class="new-file">
+
.gitlab/ci.sh
</span>
</a>
</li>
<li class="file-stats">
<a href="#0b4c5784bb7e87b68e9cfeb0ef799d273c982a59">
<span class="deleted-file">

.gitlab/darwin-init.sh
</span>
</a>
</li>
<li class="file-stats">
<a href="#412267f7d5ed866deae5ac2ca598ff8092b826b6">
.gitlab/linters/check-cpp.py
</a>
</li>
<li class="file-stats">
<a href="#b25b374c2459de3e2aaed42163f492c8b8614385">
.gitlab/merge_request_templates/merge-request.md
</a>
</li>
<li class="file-stats">
<a href="#1726cdd2367b3b0246025a33d56ad19b52d3e5d4">
<span class="deleted-file">

.gitlab/prepare-system.sh
</span>
</a>
</li>
<li class="file-stats">
<a href="#0641ef536c197a46fddf169b39613b0ff5ad92b3">
<span class="deleted-file">

.gitlab/win32-init.sh
</span>
</a>
</li>
<li class="file-stats">
<a href="#0c39c6a7c54e5d668d208665d6e5ccecdd3bb246">
HACKING.md
</a>
</li>
<li class="file-stats">
<a href="#9ab3868b23ed5d5a6e12ef902049902556fa4009">
aclocal.m4
</a>
</li>
<li class="file-stats">
<a href="#5c73b0c6f476ded38de389f894770f06f4d02b2f">
boot
</a>
</li>
<li class="file-stats">
<a href="#d0d96a6d03668aeab20ebe05e2c4ccb798c7e64c">
compiler/main/GHC.hs

compiler/GHC.hs
</a>
</li>
<li class="file-stats">
<a href="#2f6f8d6d05acc04b08fff94df4b3996c65b87892">
compiler/ghci/ByteCodeAsm.hs

compiler/GHC/ByteCode/Asm.hs
</a>
</li>
<li class="file-stats">
<a href="#16db773e94d0938489b415eb3231cadb2565b84d">
compiler/ghci/ByteCodeItbls.hs

compiler/GHC/ByteCode/InfoTable.hs
</a>
</li>
<li class="file-stats">
<a href="#073b107caa98ea426694eacd6c08b492801a51a0">
compiler/ghci/ByteCodeInstr.hs

compiler/GHC/ByteCode/Instr.hs
</a>
</li>
<li class="file-stats">
<a href="#11e6f6a348be9920cecad0893a25350137524b4f">
compiler/ghci/ByteCodeLink.hs

compiler/GHC/ByteCode/Linker.hs
</a>
</li>
<li class="file-stats">
<a href="#5c66928780aaad0eb5888511dc4b0b08492c69fa">
compiler/ghci/ByteCodeTypes.hs

compiler/GHC/ByteCode/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#f73a4fa90a8eb153bccdcfcc9f63c15edcd66785">
compiler/GHC/Cmm.hs
</a>
</li>
<li class="file-stats">
<a href="#2635960270885615c76f7437d2eb6c5bd6082895">
compiler/GHC/Cmm/BlockId.hs
</a>
</li>
<li class="file-stats">
<a href="#af639f2a086d36849734dbcb216a4e324edbdd1e">
compiler/GHC/Cmm/BlockId.hs-boot
</a>
</li>
<li class="file-stats">
<a href="#db697f6aea9f93f1583f1d5c62d25570a1e07f73">
compiler/GHC/Cmm/CLabel.hs
</a>
</li>
<li class="file-stats">
<a href="#d088ba20f051734394bf7ca283f33ed8127bc8ab">
compiler/GHC/Cmm/CallConv.hs
</a>
</li>
<li class="file-stats">
<a href="#806448db91cc2906ebcc088107220a663d3d43eb">
compiler/GHC/Cmm/CommonBlockElim.hs
</a>
</li>
<li class="file-stats">
<a href="#ae3febe6c6eb7c487d9f1021b113402ae6148bae">
compiler/GHC/Cmm/Dataflow.hs
</a>
</li>
<li class="file-stats">
<a href="#eae45922f6e633780395508f44c14a5ed7959e7a">
compiler/GHC/Cmm/Dataflow/Block.hs
</a>
</li>
<li class="file-stats">
<a href="#f0eb87ebfd1fa86064e22c34e559db8c8195ffcb">
compiler/GHC/Cmm/Dataflow/Graph.hs
</a>
</li>
<li class="file-stats">
<a href="#4fbb1c5f251c38fc01fcde693420ee6d02df7e45">
compiler/GHC/Cmm/Dataflow/Label.hs
</a>
</li>
<li class="file-stats">
<a href="#92b713d88390e6ea489e24b6cff8a3960384c0d0">
compiler/GHC/Cmm/DebugBlock.hs
</a>
</li>
<li class="file-stats">
<a href="#56e23d78cfece2c83f03ed9b9a8ce9b20be26462">
compiler/GHC/Cmm/Expr.hs
</a>
</li>
<li class="file-stats">
<a href="#29368208fbfcaee57ce84000cdccaba639e85a75">
compiler/GHC/Cmm/Graph.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/cf3313927aa8801d9aab740b10bf26778626dcd7...774d1f47016e662eaf0c7ac4189f73439f3beab3">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>