<!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>
 Marge Bot pushed to branch wip/marge_bot_batch_merge_job
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/358aa7b1fee500dda3b2d98199ef603c886f1a34">358aa7b1</a></strong>
<div>
<span>by John Ericson</span>
<i>at 2020-10-16T10:10:21-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Skip type family defaults with hs-boot and hsig files

Works around #17190, possible resolution for #17224. New design is is
according to accepted [GHC Propoal 320].

Instances in signatures currently unconditionally opt into associated
family defaults if no explicit instance is given. This is bad for two
reasons:

  1. It constrains possible instantiations to use the default, rather
  than possibly define the associated family differently.

  2. It breaks compilation as type families are unsupported in
  signatures.

This PR simply turns off the filling in of defaults in those cases.
Additionally, it squelches a missing definition warning for hs-boot too
that was only squelched for hsig before.

The downsides are:

  1. There is no way to opt into the default, other than copying its
  definition.

  2. If we fixed type classes in signatures, and wanted instances to
  have to explicitly *out of* rather than into the default, that would
  now be a breaking change.

The change that is most unambiguously goood is harmonizing the warning
squelching between hs-boot or hsig. Maybe they should have the warning
(opt out of default) maybe they shouldn't (opt in to default), but
surely it should be the same for both.

Add hs-boot version of a backpack test regarding class-specified
defaults in instances that appear in an hs-boot file.

The metrics increase is very slight and makes no sense --- at least no
one has figured anything out after this languishing for a while, so I'm
just going to accept it.

Metric Increase:
  T10421a

[GHC proposal 320]: https://github.com/ghc-proposals/ghc-proposals/pull/320
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/db04f938c92655263a62f0e1771841164f9066e9">db04f938</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-10-16T10:10:22-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Arity: Refactor fixed-point iteration in GHC.Core.Opt.Arity

Arity analysis used to propagate optimistic arity types during
fixed-point interation through the `ArityEnv`'s `ae_cheap_fun` field,
which is like `GHC.Core.Utils.exprIsCheap`, but also considers the
current iteration's optimistic arity, for the binder in question only.

In #18793, we have seen that this is a problematic design, because it
doesn't allow us to look through PAP bindings of that binder.

Hence this patch refactors to a more traditional form with an explicit
signature environment, in which we record the optimistic `ArityType` of
the binder in question (and at the moment is the *only* binder that is
recorded in the arity environment).
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/49a8b754d6ea85e26db57475628310e9fbb69d3d">49a8b754</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-10-16T10:10:22-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Arity: Record arity types for non-recursive lets

In #18793, we saw a compelling example which requires us to look at
non-recursive let-bindings during arity analysis and unleash their arity
types at use sites.

After the refactoring in the previous patch, the needed change is quite
simple and very local to `arityType`'s defn for non-recurisve `Let`.

Apart from that, we had to get rid of the second item of
`Note [Dealing with bottoms]`, which was entirely a safety measure and
hindered optimistic fixed-point iteration.

Fixes #18793.

The following metric increases are all caused by this commit and a
result of the fact that we just do more work now:

Metric Increase:
    T3294
    T12545
    T12707
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5433b29ff09e8d2942477d78affd2057f8748f97">5433b29f</a></strong>
<div>
<span>by Sebastian Graf</span>
<i>at 2020-10-16T10:10:22-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Testsuite: Add dead arity analysis tests

We didn't seem to test these old tests at all, judging from their
expected output.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/572af2aef3335c90f2c9e791f095afe190b54ace">572af2ae</a></strong>
<div>
<span>by Dylan Yudaken</span>
<i>at 2020-10-16T10:10:26-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">When using rts_setInCallCapability, lock incall threads

This diff makes sure that incall threads, when using `rts_setInCallCapability`, will be created as locked.
If the thread is not locked, the thread might end up being scheduled to a different capability.
While this is mentioned in the docs for `rts_setInCallCapability,`, it makes the method significantly less useful as there is no guarantees on the capability being used.

This commit also adds a test to make sure things stay on the correct capability.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6475c1cb0918e52419d2175fae194f29126db6fe">6475c1cb</a></strong>
<div>
<span>by DylanZA</span>
<i>at 2020-10-16T10:10:26-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Apply suggestion to testsuite/tests/ffi/should_run/all.T</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7b3b2753a4e857e704af98ae52623bff1131da7a">7b3b2753</a></strong>
<div>
<span>by Hécate</span>
<i>at 2020-10-16T10:10:31-04:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Linting corrections

* Bring back LANGUAGE pragmas in GHC.IO.Handle.Lock.Windows
* Exclude some modules that are wrongfully reported
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#c3967bb9d3e8f5aae2dd111b5a335b48c21c1999">
compiler/GHC/Core/Opt/Arity.hs
</a>
</li>
<li class="file-stats">
<a href="#9f0ddacf1490a1a7356d3b8c1b8506b1a8bc6ad4">
compiler/GHC/HsToCore/Foreign/Decl.hs
</a>
</li>
<li class="file-stats">
<a href="#dd8bbe6a21866e4f574f4796b7ad19de17564072">
compiler/GHC/Tc/TyCl/Class.hs
</a>
</li>
<li class="file-stats">
<a href="#e63425e031ffe9350ee6b1687e506aaea75d11e1">
compiler/GHC/Tc/TyCl/Instance.hs
</a>
</li>
<li class="file-stats">
<a href="#f7bfc5e15e7497f29b41f6df46865c151a07955d">
includes/RtsAPI.h
</a>
</li>
<li class="file-stats">
<a href="#09f66b87a97fc5650bd718de60e6e3ac9406fed8">
libraries/base/.hlint.yaml
</a>
</li>
<li class="file-stats">
<a href="#52cbed6d5a31a2e77e689138af4477c2a62f413b">
rts/RtsAPI.c
</a>
</li>
<li class="file-stats">
<a href="#16c842a51a135c8ef2c7c7f94336544868348a3c">
rts/RtsSymbols.c
</a>
</li>
<li class="file-stats">
<a href="#db603f869375afca615f480fe785567da6d0983c">
<span class="deleted-file">

testsuite/tests/arityanal/Main.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#bb099790e98768bc21d328251c4879b98730a37c">
<span class="deleted-file">

testsuite/tests/arityanal/Main.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#d11a4df8491eb39ba2735e7fe7ed59bd48dd314d">
testsuite/tests/arityanal/Makefile
</a>
</li>
<li class="file-stats">
<a href="#204270be3d7727e90b18ee7cadafb3bc0975739f">
<span class="deleted-file">

testsuite/tests/arityanal/f0.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#2c8e6ea9959e06d8e6dac33240e2f0860805d2e6">
<span class="deleted-file">

testsuite/tests/arityanal/f1.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#dd67d924f023da74b081a038becf105a5f8bc065">
<span class="deleted-file">

testsuite/tests/arityanal/f10.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#3b89975d32dbf8dc3b93eea76cae90abbf5ac2ac">
<span class="deleted-file">

testsuite/tests/arityanal/f11.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#b922a0c04537c7378b45ab70cd9e03d5387818b6">
<span class="deleted-file">

testsuite/tests/arityanal/f12.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#ec42d068aa1dcddf1df7bff499d233805c7d3c8c">
<span class="deleted-file">

testsuite/tests/arityanal/f13.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#9e434346de769dfd5a2c9dbba1d710e1ae0c63c9">
<span class="deleted-file">

testsuite/tests/arityanal/f14.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#efe71fa8e2c02c6e8f0189806c8da50b67ea04d1">
<span class="deleted-file">

testsuite/tests/arityanal/f15.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#65e523fea8069a105a7aa527d3563d7d1d45fc6e">
<span class="deleted-file">

testsuite/tests/arityanal/f2.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#78f4a00d32e1d7e49c34883e5865651c438ef10f">
<span class="deleted-file">

testsuite/tests/arityanal/f3.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#67eddd5ab4b7c20c2cc28fe54b5639280a06488f">
<span class="deleted-file">

testsuite/tests/arityanal/f4.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#d9be628575cce98999c8602566af005567f3e9b4">
<span class="deleted-file">

testsuite/tests/arityanal/f5.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#c93b8b4ec898c628f6dfb06665ff301d01e3838c">
<span class="deleted-file">

testsuite/tests/arityanal/f6.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#3e76877b084081b41f45768f892fa7b6532c3387">
<span class="deleted-file">

testsuite/tests/arityanal/f7.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#d08644fd7a746e8da9ac8baa50025c7566716ac8">
<span class="deleted-file">

testsuite/tests/arityanal/f8.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#7296d1afaa0aef345645413c208ea0dad53f3570">
<span class="deleted-file">

testsuite/tests/arityanal/f9.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#b7442bc909b510aedaca8c4b21975887ee099fca">
<span class="deleted-file">

testsuite/tests/arityanal/prim.stderr
</span>
</a>
</li>
<li class="file-stats">
<a href="#f95e40fa4f9ff5c75e584de349dee323ef0a6d78">
testsuite/tests/arityanal/f0.hs

testsuite/tests/arityanal/should_compile/Arity00.hs
</a>
</li>
<li class="file-stats">
<a href="#c98af7c58aa5756bf28f01cc1afa8afe43f6ac43">
<span class="new-file">
+
testsuite/tests/arityanal/should_compile/Arity00.stderr
</span>
</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/23e05f115e0f687a08252d579d63bf33d6662515...7b3b2753a4e857e704af98ae52623bff1131da7a">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>