<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>
<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">
<h3>
Ben Gamari pushed to branch ghc-9.0
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/c2eaeda50d8c616e2605f0009c253f42c9b43a2a">c2eaeda5</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-29T18:48:41-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Fix regression from TSAN work
The TSAN rework (specifically aad1f803) introduced a subtle regression
in GC.c, swapping `g0` in place of `gen`. Whoops!
Fixes #18997.
(cherry picked from commit 21c807df67afe1aee7bf4a964a00cc78ef19e00f)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7629341d8490d1be02c6d4360f9814964a9ad573">7629341d</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-29T18:48:41-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts/Messages: Add missing write barrier in THROWTO message update
After a THROWTO message has been handle the message closure is
overwritten by a NULL message. We must ensure that the original
closure's pointers continue to be visible to the nonmoving GC.
(cherry picked from commit 6c2faf158fd26fc06b03c9bd11b6d2cf8e8db572)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/8ceec852bf64c4e8154a9697beb81f3113a3503a">8ceec852</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-29T18:48:41-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Add missing write barrier in shrinkSmallByteArray
(cherry picked from commit 35c22991ae5c22b10ca1a81f0aa888d1939f0b3f)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/29873608dbbcc93b6df703c2993543d93fece2d6">29873608</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-29T18:48:41-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Updates: Don't zero slop until closure has been pushed
Ensure that the the free variables have been pushed to the update
remembered set before we zero the slop.
(cherry picked from commit 134f759926bb4163d7ab97e72ce7209ed42f98b9)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/84684501bf883c9eb7b463b6d02d4ab680349918">84684501</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-29T18:48:41-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">OSThreads: Fix error code checking
pthread_join returns its error code and apparently doesn't set errno.
(cherry picked from commit c488ac737e8ca3813fe6db069cbeb7abba00cfb9)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/fda49d26e0b1744ae4803d52889e8b4a5b100dc9">fda49d26</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-29T18:48:42-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Don't join to mark_thread on shutdown
The mark thread is not joinable as we detach from it on creation.
(cherry picked from commit ca1ef0e758a3fb787691529a0f8149e9d10b1d00)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/6567e49ae9c293f9ff94fa104e9721bdbc3dc223">6567e49a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-11-29T18:48:42-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Add reference to Ueno 2016
(cherry picked from commit a3b8375eeb2ce9d2e30f8269f5b489c5bcacc69f)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cb365f512cb6ed88c56f10d7529ebbfdf4ad84dc">cb365f51</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-29T18:50:27-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Ensure that evacuated large objects are marked
See Note [Non-moving GC: Marking evacuated objects].
(cherry picked from commit b416189e4004506b89f06f147be37e76f4cd507f)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/824332c47098bcf5031050e1c2807686f3fbf214">824332c4</a></strong>
<div>
<span>by Andreas Klebinger</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">WinIO: Small changes related to atomic request swaps.
Move the atomix exchange over the Ptr type to an internal module.
Fix a bug caused by us passing ptr-to-ptr instead of ptr to
atomic exchange.
Renamed interlockedExchange to exchangePtr.
I've also added an cas primitive. It turned out we don't need it
for WinIO but I'm leaving it in as it's useful for other things.
(cherry picked from commit 401a64b80fb210fa1b403afe5b28d16f961f21bc)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7cb92decf49c8b76092f5dc33a885e6b300a9b7e">7cb92dec</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Force argument in setIdMult (#18925)
(cherry picked from commit 5506f1342e51bad71a7525ddad0650d1ac63afeb)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/77a239ecea7307a38740378f90417a83e0f1e809">77a239ec</a></strong>
<div>
<span>by Moritz Angermann</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">AArch64/arm64 adjustments
This addes the necessary logic to support aarch64 on elf, as well
as aarch64 on mach-o, which Apple calls arm64.
We change architecture name to AArch64, which is the official arm
naming scheme.
(cherry picked from commit 8887102fc4ed8ed1089c1aafd19bab424ad706f3)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7da4e5882e9f3f91201d7eda02c44883e1e89435">7da4e588</a></strong>
<div>
<span>by Krzysztof Gogolewski</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Export indexError from GHC.Ix (#18579)
(cherry picked from commit 165352a2d163537afb01a835bccc7cd0a667410a)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4b83b6a8f8ac08e81b6e75c47f133e3ed6bdea95">4b83b6a8</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts/linker: Align bssSize to page size when mapping symbol extras
We place symbol_extras right after bss. We also need
to ensure that symbol_extras can be mprotect'd independently from the
rest of the image. To ensure this we round up the size of bss to a page
boundary, thus ensuring that symbol_extras is also page-aligned.
(cherry picked from commit 9f40cf6ca9fb24dbc55f7eae43e2b89aa12bf251)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e0d7563a5ec5d6f0d9c9b12806df46b0e56c821e">e0d7563a</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Add testcase for #18733
(cherry picked from commit 787e93ae141ae0f33bc36895494d48a2a5e49e08)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3d59089bed6b48b71d68b4d0ec6d3e0c477732b3">3d59089b</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">compiler: Fix recompilation checking
In ticket #18733 we noticed a rather serious deficiency in the current
fingerprinting logic for recursive groups. I have described the old
fingerprinting story and its problems in Note [Fingerprinting recursive
groups] and have reworked the story accordingly to avoid these issues.
Fixes #18733.
(cherry picked from commit 5353fd500b1e92636cd9d45274585fd88a915ff6)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/eaa632ba10744dfda39190c3a9374458d60aabe9">eaa632ba</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Allocate MBlocks with MAP_TOP_DOWN on Windows
As noted in #18991, we would previously allocate heap in low memory.
Due to this the linker, which typically *needs* low memory, would end up
competing with the heap. In longer builds we end up running out of
low memory entirely, leading to linking failures.
(cherry picked from commit a1a75aa9be2c133dd1372a08eeb6a92c31688df7)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0bba65169d7f13788d7f7b834ade5203eb3f093e">0bba6516</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">gitlab-ci: Run LLVM job on appropriately-labelled MRs
Namely, those marked with the ~"LLVM backend" label
(cherry picked from commit 7c03cc5010999d0f0f9dfc549984023b3a1f2c8d)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/be408b86c9125dedd2f83e9701ea9f2e499c8dd4">be408b86</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts/linker: Ensure that .rodata is aligned to 16 bytes
Pulled out of !4310.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3a09acdc0d8a3e34ad417211a3169f3ffec5a595">3a09acdc</a></strong>
<div>
<span>by Ömer Sinan Ağacan</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix and enable object unloading in GHCi
Fixes #16525 by tracking dependencies between object file symbols and
marking symbol liveness during garbage collection
See Note [Object unloading] in CheckUnload.c for details.
(cherry picked from commit c34a4b98b1f09ea3096d39a839a86f2d7185c796)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/01f5126b05828df10ba56c22b074def956d6e3f5">01f5126b</a></strong>
<div>
<span>by Ray Shih</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add loadNativeObj and unloadNativeObj
(This change is originally written by niteria)
This adds two functions:
* `loadNativeObj`
* `unloadNativeObj`
and implements them for Linux.
They are useful if you want to load a shared object with Haskell code
using the system linker and have GHC call dlclose() after the
code is no longer referenced from the heap.
Using the system linker allows you to load the shared object
above outside the low-mem region. It also loads the DWARF sections
in a way that `perf` understands.
`dl_iterate_phdr` is what makes this implementation Linux specific.
(cherry picked from commit 2782487f5f6ad9df4dc8725226a47f07fec77f9f)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a1a0ec3389543667884788649c228300b96f6f48">a1a0ec33</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Introduce highMemDynamic
(cherry picked from commit 7a65f9e140906087273ce95f062775f18f6a708d)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/cae06fc404b8be27bf0bab2b51e4343b23b896e9">cae06fc4</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-30T18:56:35-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Introduce test for dynamic library unloading
This uses the highMemDynamic flag introduced earlier to verify that
dynamic objects are properly unloaded.
(cherry picked from commit e9e1b2e75de17be47ab887a26943f5517a8463ac)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/f72f27a325c16bf2975ee2a8a49c439b46ee8498">f72f27a3</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-30T19:21:56-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">ThreadPaused: Don't zero slop until free vars are pushed
When threadPaused blackholes a thunk it calls `OVERWRITING_CLOSURE` to
zero the slop for the benefit of the sanity checker. Previously this was
done *before* pushing the thunk's free variables to the update
remembered set. Consequently we would pull zero'd pointers to the update
remembered set.
(cherry picked from commit 3e75b0dbaca5fbd8abc529d70c1df159f5bfbaa4)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/43ff60b5cf02ff65976c5ab1a6b4ccd313920253">43ff60b5</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-12-01T00:55:55-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Refactor foreign export tracking
This avoids calling `libc` in the initializers which are responsible for
registering foreign exports. We believe this should avoid the corruption
observed in #18548.
See Note [Tracking foreign exports] in rts/ForeignExports.c for an
overview of the new scheme.
(cherry picked from commit c492134912e5270180881b7345ee86dc32756bdd)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/85822a8881a7463b479b07d0b4d627a44930f058">85822a88</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-12-01T00:57:01-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts: Refactor unloading of foreign export StablePtrs
Previously we would allocate a linked list cell for each foreign export.
Now we can avoid this by taking advantage of the fact that they are
already broken into groups.
(cherry picked from commit 40dc91069d15bfc1d81f1722b39e06cac8fdddd1)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2a622d0f05d240fc662bdd85266762c89e7bc370">2a622d0f</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-12-01T21:39:09+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">hadrian: Pass input file to makeindex
Strangely I find that on Alpine (and apparently only on Alpine) the
latex makeindex command expects to be given a filename, lest it reads
from stdin.
(cherry picked from commit 389a668343c0d4f5fa095112ff98d0da6998e99d)
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/553ec8150cd67fdb457e46fabd53d0218828afd6">553ec815</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-12-01T22:19:04+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix various documentation issues
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/007055cc5856caeac957489bd4ce061cf4b43459">007055cc</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-12-01T22:19:12+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix cas_int
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/794616b6c4ab6537304777cfb5616cd5fc031a2f">794616b6</a></strong>
<div>
<span>by Ben Gamari</span>
<i>at 2020-12-03T22:16:06-05:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">testsuite: Add missing #include on <stdlib.h>
This otherwise fails on newer Clangs, which warn
more aggressively on undeclared symbols.
(cherry picked from commit 3d7db1488c4bd7764e8b1fe3cfde4c5a548cde16)
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#587d266bb27a4dc3022bbed44dfa19849df3044c">
.gitlab-ci.yml
</a>
</li>
<li class="file-stats">
<a href="#9ab3868b23ed5d5a6e12ef902049902556fa4009">
aclocal.m4
</a>
</li>
<li class="file-stats">
<a href="#10b61652f9817945bb54ccf8fc40f8a664ca3c30">
compiler/GHC/CmmToAsm.hs
</a>
</li>
<li class="file-stats">
<a href="#70e6dda2b94c6f8cdd584c1b68c5af73bb1f64e3">
compiler/GHC/CmmToAsm/Reg/Graph/TrivColorable.hs
</a>
</li>
<li class="file-stats">
<a href="#83a3b2df5c77503c3a8c6df05a7654333d30cac3">
compiler/GHC/CmmToAsm/Reg/Linear.hs
</a>
</li>
<li class="file-stats">
<a href="#3225e35c655b58843bc349bd56680268cdf059ed">
compiler/GHC/CmmToAsm/Reg/Linear/FreeRegs.hs
</a>
</li>
<li class="file-stats">
<a href="#d521a7e9ecba2e084a32cf4aa6c27fa59efbab32">
compiler/GHC/CmmToAsm/Reg/Target.hs
</a>
</li>
<li class="file-stats">
<a href="#2bae5947e9412f6deebf4db7dcb89d780913130f">
compiler/GHC/CmmToAsm/X86/CodeGen.hs
</a>
</li>
<li class="file-stats">
<a href="#76664ab267df4fc0bec2465efd78bf0afacfe3a7">
compiler/GHC/CmmToC.hs
</a>
</li>
<li class="file-stats">
<a href="#b8e6af642e56019828828dc679683c04afb81867">
compiler/GHC/Driver/Pipeline.hs
</a>
</li>
<li class="file-stats">
<a href="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#9f0ddacf1490a1a7356d3b8c1b8506b1a8bc6ad4">
compiler/GHC/HsToCore/Foreign/Decl.hs
</a>
</li>
<li class="file-stats">
<a href="#a8e6b17fc507589522323d8dd20d9713e8c06760">
compiler/GHC/Iface/Recomp.hs
</a>
</li>
<li class="file-stats">
<a href="#1adbcc64a2498c9d32013a6d0ba279c97f3bac05">
compiler/GHC/Platform/ARM64.hs
→
compiler/GHC/Platform/AArch64.hs
</a>
</li>
<li class="file-stats">
<a href="#e3a03c426f641066d2459c6507317b572a19e0f9">
compiler/GHC/Platform/Regs.hs
</a>
</li>
<li class="file-stats">
<a href="#3556223cd3ef45d787321b5290bf33535a361873">
compiler/GHC/Runtime/Linker.hs
</a>
</li>
<li class="file-stats">
<a href="#5dac619989e8509003cf7b463c100f5cc56072a3">
compiler/GHC/Types/Var.hs
</a>
</li>
<li class="file-stats">
<a href="#0f33fd88c617246c7f89c4477d2d1d24f942df23">
compiler/ghc.cabal.in
</a>
</li>
<li class="file-stats">
<a href="#66cdb80eea3a52b51a885f3b1514f5cc3fd8d7d5">
config.sub
</a>
</li>
<li class="file-stats">
<a href="#85c07986c623f3180b40021d7109edd1e6a71a93">
docs/users_guide/9.0.1-notes.rst
</a>
</li>
<li class="file-stats">
<a href="#b02c1c6109c60b8f685234b0dbaabf6c79fed2a2">
docs/users_guide/ghci.rst
</a>
</li>
<li class="file-stats">
<a href="#6ae923e173536bf0ddb39552416a7e21767287db">
docs/users_guide/runtime_control.rst
</a>
</li>
<li class="file-stats">
<a href="#f2d774357fa6061a6d5972714cf4ad7a22e37695">
hadrian/src/Builder.hs
</a>
</li>
<li class="file-stats">
<a href="#cea726e2d7b4e04eca93c7e852da5602585a471b">
includes/CodeGen.Platform.hs
</a>
</li>
<li class="file-stats">
<a href="#40f83a2cddcbc1f8190b0551eb572ccf4ea88cc9">
includes/Rts.h
</a>
</li>
<li class="file-stats">
<a href="#241971342cd0c394b24e67a781cf7e3d2f01aa72">
includes/rts/Flags.h
</a>
</li>
<li class="file-stats">
<a href="#456263288343573de99d23371fb69e400889ac65">
<span class="new-file">
+
includes/rts/ForeignExports.h
</span>
</a>
</li>
<li class="file-stats">
<a href="#ae6b27fda1cc1591738c66625518d3472c48163f">
includes/rts/Linker.h
</a>
</li>
<li class="file-stats">
<a href="#aa19e824b3a8c24a7bf37f8352997022b14a5a0c">
includes/rts/storage/ClosureMacros.h
</a>
</li>
<li class="file-stats">
<a href="#94ca41c5afbb3d932bd6f37ee16458322988fb69">
includes/rts/storage/GC.h
</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: #666;">
—
<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/b944fd08884527c4fee7286ac60e0a9bd6ebf424...794616b6c4ab6537304777cfb5616cd5fc031a2f">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>