<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style='--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;'>
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>

<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>


<style>img {
max-width: 100%; height: auto;
}
body {
font-size: .875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px;
}
body {
font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style='font-size: inherit; -webkit-text-shadow: rgba(255,255,255,.01) 0 0 1px; font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";'>
<div class="content">

<h3 style="margin-top: 20px; margin-bottom: 10px;">
Zubin pushed to branch wip/romes/restore-ecwl at <a href="https://gitlab.haskell.org/ghc/ghc">Glasgow Haskell Compiler / GHC</a>
</h3>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
Commits:
</h4>
<ul>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7bd407a67cd7810d3ff1e6d18885555175383a35">7bd407a6</a></strong>
<div>
<span> by Brandon Chinn </span> <i> at 2024-11-21T14:08:15-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #28272d; position: relative; font-family: "GitLab Mono","JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Fix CRLF in multiline strings (#25375)
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7575709b7de56daf01f1b6e59dd63ebc53266aef">7575709b</a></strong>
<div>
<span> by Rodrigo Mesquita </span> <i> at 2024-11-21T14:08:52-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #28272d; position: relative; font-family: "GitLab Mono","JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Improve reachability queries on ModuleGraph

Introduces `ReachabilityIndex`, an index constructed from a
`GHC.Data.Graph.Directed` `Graph` that supports fast reachability
queries (in $O(1)$). This abstract data structure is exposed from
`GHC.Data.Graph.Directed.Reachability`.

This index is constructed from the module graph nodes and cached in
`ModuleGraph`, enabling efficient reachability queries on the module
graph. Previously, we'd construct a Map of Set of ModuleGraph nodes
which used a lot of memory (`O(n^2)` in the number of nodes) and cache
that in the `ModuleGraph`. By using the reachability index we get rid of
this space leak in the module graph -- even though the index is still
quadratic in the number of modules, it is much, much more space
efficient due to its representation using an IntMap of IntSet as opposed
to the transitive closure we previously cached.

In a memory profile of MultiLayerModules with 100x100 modules, memory
usage improved from 6GB residency to 2.8GB, out of which roughly 1.8GB
are caused by a second space leak related to ModuleGraph. On the same
program, it brings compile time from 7.5s to 5.5s.

Note how we simplify `checkHomeUnitsClosed` in terms of
`isReachableMany` and by avoiding constructing a second graph with the
full transitive closure -- it suffices to answer the reachability query
on the full graph without collapsing the transitive closure completely
into nodes.

Unfortunately, solving this leak means we have to do a little bit more
work since we can no longer cache the result of turning vertex indices
into nodes. This results in a slight regression in MultiLayerModulesTH_Make,
but results in large performance and memory wins when compiling large
amounts of modules.

-------------------------
Metric Decrease:
    mhu-perf
Metric Increase:
    MultiLayerModulesTH_Make
-------------------------
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/bcbcdaaf2df58e3b7a2756d044c4169a724e03d9">bcbcdaaf</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2024-11-21T14:09:28-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #28272d; position: relative; font-family: "GitLab Mono","JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>driver: fix hpc undefined symbol issue in TH with -fprefer-byte-code

This commit fixes an undefined symbol error in RTS linker when
attempting to compile home modules with -fhpc and
-fbyte-code-and-object-code/-fprefer-byte-code, see #25510 for
detailed description and analysis of the bug.

Also adds T25510/T25510c regression tests to test make mode/oneshot
mode of the bug.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/d186f6aa60d94430b82cdc26890761efc42b4145">d186f6aa</a></strong>
<div>
<span> by Rodrigo Mesquita </span> <i> at 2024-11-22T12:11:22+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #28272d; position: relative; font-family: "GitLab Mono","JetBrains Mono","Menlo","DejaVu Sans Mono","Liberation Mono","Consolas","Ubuntu Mono","Courier New","andale mono","lucida console",monospace; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Re-introduce ErrorCallWithLocation with a deprecation pragma

With the removal of the duplicate backtrace, part of CLC proposal #285,
the constructor `ErrorCallWithLocation` was removed from base.

This commit re-introduces it with a deprecation.
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
30 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#24139dae656713ba861751fb2c2ac38839349a7a">
.gitattributes
</a>
</li>
<li class="file-stats">
<a href="#076d011643e7ccd7d4e01c8948db82d0d4f59432">
compiler/GHC/Data/Graph/Directed.hs
</a>
</li>
<li class="file-stats">
<a href="#6161974107038dbd1ecdd6422ce5c852f6c53fb0">
<span class="new-file">
+
compiler/GHC/Data/Graph/Directed/Internal.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#4a934dbe1370d0a15e3817ff17c0d721bb97f9ef">
<span class="new-file">
+
compiler/GHC/Data/Graph/Directed/Reachability.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#3b4a348959abd9d6cf552e6b740baadea76d9da5">
compiler/GHC/Driver/Config/StgToCmm.hs
</a>
</li>
<li class="file-stats">
<a href="#8e72a25145f803aab964beb710b25dd6cd38aafc">
compiler/GHC/Driver/Hooks.hs
</a>
</li>
<li class="file-stats">
<a href="#9a679a2680ef6061397f1987091ea9f96ffe095d">
compiler/GHC/Driver/Main.hs
</a>
</li>
<li class="file-stats">
<a href="#1dab250036d04cfcf3530f6ff27889f723cc2dda">
compiler/GHC/Driver/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#e011edcbdb6414ff00022ab5c1eeee88906a53ab">
compiler/GHC/HsToCore/Coverage.hs
</a>
</li>
<li class="file-stats">
<a href="#d11203a9321005ba51a16d751c86f609d1f18c71">
compiler/GHC/Iface/Tidy.hs
</a>
</li>
<li class="file-stats">
<a href="#df1fca609f31dac0cde9df4e87ccbac2654de2f7">
compiler/GHC/Linker/Deps.hs
</a>
</li>
<li class="file-stats">
<a href="#2d927b15feeb94a2556774ef2af632542c2e972e">
compiler/GHC/Parser/String.hs
</a>
</li>
<li class="file-stats">
<a href="#aa1ca517ccf154900e46e9f1db33050e272840be">
compiler/GHC/StgToCmm.hs
</a>
</li>
<li class="file-stats">
<a href="#8fd513f9f85423150e6087ab487a1d8c0d212a8e">
compiler/GHC/StgToCmm/Config.hs
</a>
</li>
<li class="file-stats">
<a href="#511d0db0477e68273ab361b5d258ab2a918a7f9f">
compiler/GHC/StgToCmm/Hpc.hs
</a>
</li>
<li class="file-stats">
<a href="#8e2fd61802dbf01ed3619fa8bab9f6f81df3de08">
compiler/GHC/Unit/Module/Graph.hs
</a>
</li>
<li class="file-stats">
<a href="#1b2e538eb480e4eb902f34efbe20581ec112e3c0">
compiler/GHC/Unit/Module/ModGuts.hs
</a>
</li>
<li class="file-stats">
<a href="#0f33fd88c617246c7f89c4477d2d1d24f942df23">
compiler/ghc.cabal.in
</a>
</li>
<li class="file-stats">
<a href="#23ba9fd1513983f09ecf91e6c150cfcd33d51f90">
docs/users_guide/exts/multiline_strings.rst
</a>
</li>
<li class="file-stats">
<a href="#af30c6b99312124f2098e256a7a9eb43d6d40011">
libraries/ghc-internal/src/GHC/Internal/Exception.hs
</a>
</li>
<li class="file-stats">
<a href="#54e850de1d0f75ce5a958cf9dc0e69785537ce03">
<span class="new-file">
+
testsuite/tests/bytecode/T25510/Makefile
</span>
</a>
</li>
<li class="file-stats">
<a href="#18e08c821f0596a146f99a0e35158e320b7c865a">
<span class="new-file">
+
testsuite/tests/bytecode/T25510/T25510A.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#9185c7049c3391667b6aa5590ac32263bf6436b1">
<span class="new-file">
+
testsuite/tests/bytecode/T25510/T25510B.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#4eca9b5e33fec8fb61fa74c1049edb02c6630732">
<span class="new-file">
+
testsuite/tests/bytecode/T25510/all.T
</span>
</a>
</li>
<li class="file-stats">
<a href="#f227a38797c18ee429e783e5132ca39e5a4cc7e7">
testsuite/tests/count-deps/CountDepsAst.stdout
</a>
</li>
<li class="file-stats">
<a href="#2dcdf7aadcff5b41822596f22b49b2851374d0cd">
testsuite/tests/count-deps/CountDepsParser.stdout
</a>
</li>
<li class="file-stats">
<a href="#2ca7b1d6bb24cd05ca30a428efb924268c8dbc51">
testsuite/tests/interface-stability/base-exports.stdout
</a>
</li>
<li class="file-stats">
<a href="#482ce10224feee28cb25df69f2be2fd845ccb44d">
testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs
</a>
</li>
<li class="file-stats">
<a href="#0c9107f6ffbb0ee70fe83374d94d1734a3bac3cb">
testsuite/tests/interface-stability/base-exports.stdout-mingw32
</a>
</li>
<li class="file-stats">
<a href="#e9c4dd54adbea818aa90a241f5325670bb349d53">
testsuite/tests/interface-stability/base-exports.stdout-ws-32
</a>
</li>
</ul>
<h5 style="margin-top: 10px; margin-bottom: 10px; font-size: .875rem;">
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: #737278;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/63edd2cdb6eee16e667f0413f2bd6b191e668bef...d186f6aa60d94430b82cdc26890761efc42b4145">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.haskell.org">gitlab.haskell.org</a>. <a href="https://gitlab.haskell.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.haskell.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>



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