<!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;">
Matthew Pickering pushed to branch wip/compress-iface 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/3b78e139033ab07232313888cc503712799fa76c">3b78e139</a></strong>
<div>
<span> by John Ericson </span> <i> at 2025-03-03T15:27:39-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Remove most of `GHC.Internal.Pack`
Since bd82ac9f4716e28b185758ae514691d5a50c003f when `GHC.Pack` was
deleted, it is no longer used except for one function by the RTS.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b4fe0850d8d8faa1dc9183a64fbeba483ef22c7e">b4fe0850</a></strong>
<div>
<span> by Rodrigo Mesquita </span> <i> at 2025-03-03T15:28:16-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>ghci: Don't set virtualCWD on every iteration
The calls to withVirtualCWD were introduced to fix #2973, but this bug
is no longer reproducible, even when `withVirtualCWD` is dropped.
This cleanup was originally motivated by the performance of :steplocal,
but the performance problem has now been fixed at its root in the next
commit.
Even then, `withVirtualCWD` seems to now be an unnecessary artifact, and
removing it simplifies the interpreter with no apparent drawbacks (testsuite is
also happy with this change)
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/73ba1e6ec811c19baaf77abc72ba886a80fef5b4">73ba1e6e</a></strong>
<div>
<span> by Rodrigo Mesquita </span> <i> at 2025-03-03T15:28:16-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>ghci debugger: improve break/resume control flow
After interpreting bytecode (`evalStmt`), we may want to hand off
control to "GHCi.UI" in order to display an interactive break prompt:
1. When an /active/ breakpoint (one set with :break ...) is hit
2. At any breakpoint, when using :step from a breakpoint
3. At any breakpoint in the same function f, when :steplocal is called
from a breakpoint in f
4. At any breakpoint in the same module, when :stepmodule is used
Whether to pass control to the UI is now fully determined by
`handleRunStatus` which transforms an `EvalStatus_` into an
`ExecResult`. When `ExecBreak` is returned from `handleRunStatus` to
GHCi, it always means GHCi breaks.
`handleRunStatus` determines whether to loop and resume evaluation right away, or
when to return to GHCi (by returning `ExecBreak` or `ExecComplete`).
- (1) is queried using the `BreakpointStatus` message (the
`breakpointStatus` call)
- (2,3,4) are determined by the predicate `breakHere step span`, which
inspects the improved `SingleStep` type to determine whether we care
about this breakpoint even if it is not active.
This refactor solves two big performance problems with the previous control flow:
- We no longer call `withArgs/withProgram` repeatedly in the
break/resume loop, but rather just once "at the top".
- We now avoid computing the expensive `bindLocalsAtBreakpoint` for
breakpoints we'd never inspect.
In the interpreter_steplocal test added, calling `:steplocal` after breaking on `main = fib 25`
now takes 12 seconds rather than 49 seconds on my machine.
```
interpreter_steplocal(ghci) ghc/alloc 6,124,821,176 540,181,392 -91.2% GOOD
```
Fixes #25779
-------------------------
Metric Decrease:
interpreter_steplocal
-------------------------
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c78d8f55afacfd559b1602bc2fbc35b1f326f1c1">c78d8f55</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2025-03-03T20:54:41+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>rts: fix top handler closure type signatures
This commit fixes the runIO/runNonIO closure type signatures in the
RTS which should be extern StgClosure. This allows us to remove an
unnecessary type cast in the C foreign desugaring logic, as well as
unneeded complications of JSFFI desugaring logic that also needs to
generate C stubs that may refer to those top handler closures.
Otherwise, we'll have to take special care to avoid generating "extern
StgClosure" declarations for them as we would for other closures, just
to avoid conflicting type signature error at stub compile time.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a204df3aa5a7be00c67aa7c92c5091ab32522226">a204df3a</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2025-03-03T20:54:41+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>compiler: allow arbitrary label string for JSFFI exports
This commit allows arbitrary label string to appear in a foreign
export declaration, as long as the calling convention is javascript.
Well, doesn't make sense to enforce it's a C function symbol for a
JSFFI declaration anyway, and it gets in the way of implementing the
"sync" flavour of exports.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/03ebab52bd00d4726735829cf6a24e5c9d3ac0c1">03ebab52</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2025-03-03T20:54:41+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>compiler: wasm backend JSFFI sync exports
This commit implements the synchronous flavour of the wasm backend
JSFFI exports:
- `foreign export javascript "foo sync"` exports a top-level Haskell
binding as a synchronous JS function
- `foreign import javascript "wrapper sync"` dynamically exports a
Haskell function closure as a synchronous JS function
- `foreign import javascript unsafe` is now re-entrant by lowering to
a safe ccall
- Also fix the issue that JSFFI dynamic exports didn't really work in
TH & ghci (#25473)
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b6ae908bd3ae7b75b79925e56c3e11ba5c40b5ec">b6ae908b</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2025-03-03T20:54:41+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>testsuite: test wasm backend JSFFI sync exports
This commit repurposes some existing JSFFI test cases to make them
cover JSFFI sync exports as well.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/edae287402792c09fa92b655e0cbd01100db9856">edae2874</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2025-03-03T20:54:41+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>docs: document wasm backend JSFFI sync exports
This commit updates wasm backend documentation to reflect the new
JSFFI sync exports feature.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9b54eecbee7329543e5016cec1574831bfb788c2">9b54eecb</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2025-03-03T20:56:21+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>wasm: add error message to WouldBlockException
This commit attaches an error message to WouldBlockException, for now
the error message consists of the JS async import code snippet that
thunk is trying to block for. This is useful for debugging synchronous
callbacks that accidentally call an async JS function.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/c331eebf575221ed8c67ca232bac4ae047b794a3">c331eebf</a></strong>
<div>
<span> by Cheng Shao </span> <i> at 2025-03-04T09:11:45-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>compiler: avoid overwriting existing writers in putWithTables
This patch makes `putWithTables` avoid overwriting all existing
UserData writers in the handle. This is crucial for GHC API users that
use putWithUserData/getWithUserData for serialization logic that
involve Names.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e9b7802b83d558985b570a6e2fbf41108e047b7c">e9b7802b</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2025-03-04T09:12:21-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>ghci: Serialise mi_top_env
When loading core from interface files (or from a bytecode object in
future) it's important to store what the top-level context of a module
is.
Otherwise, when you load the module into GHCi from the interface files,
only exported identifiers from the top-level module are in scope on the
repl.
See the added test which demonstrates what this enables.
The context at the GHCi prompt is everything that's in-scope in the
TopEnvIface module. Since TopEnvIface imports identifier "a", we can
evaluate "a" in the repl.
In addition to all this, we can use this information in order to
implement reifyModule in a more principled manner.
This becomes even more important when you're debugging and what to set
break-points on functions which are not imported.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/73e0206819d9367a7a91a865adceee45ecbd54d6">73e02068</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2025-03-04T09:12:21-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Implement reifyModule in terms of mi_top_env
mi_top_env provides precisely the information that reifyModule needs,
the user written imports.
This is important as it unblocks !9604 and #22188
Fixes #8489
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/0a99825d7ac0590db6c3f8867b33c40b2d1cc644">0a99825d</a></strong>
<div>
<span> by Ben Gamari </span> <i> at 2025-03-04T09:12:57-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>hadrian: Refactor handling of test suite environment
Previously we would set the environment variables used to run the
testsuite driver using `setEnv` to set them in the Hadrian process.
While looking into failures of a fix to #25752 I noticed this and took
the opportunity to refactor.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7ca72844337a68423e651a4b5f11fe55fc24e302">7ca72844</a></strong>
<div>
<span> by Alan Zimmerman </span> <i> at 2025-03-04T09:13:34-05:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>[EPA] Sync with the ghc-exactprint repo
This brings it into line with the changes in
https://hackage.haskell.org/package/ghc-exactprint-1.12.0.0
But also keeps the latest changes from master.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e3eaf6c1952a937a2ab31a88d50a0cdce771f88e">e3eaf6c1</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2025-03-04T17:55:01+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Add flag to control whether self-recompilation information is written to interface
This patch adds the flag -fwrite-self-recomp-info which controls whether
interface files contain the information necessary to answer the
question:
Do I need to recompile myself or is this current interface file
suitable?
Why? Most packages are only built once either by a distribution or cabal
and then placed into an immutable store, after which we will never ask
this question. Therefore we can derive two benefits from omitting this
information.
* Primary motivation: It vastly reduces the surface area for creating
non-deterministic interface files. See issue #10424 which motivated a
proper fix to that issue. Distributions have long contained versions
of GHC which just have broken self-recompilation checking (in order to
get deterministic interface files).
* Secondary motivation: This reduces the size of interface files
slightly.. the `mi_usages` field can be quite big but probably this
isn't such a great benefit.
* Third motivation: Conceptually clarity about which parts of an
interface file are used in order to **communicate** with subsequent
packages about the **interface** for a module. And which parts are
used to self-communicate during recompilation checking.
The main tracking issue is #22188 but fixes issues such as #10424 in a
proper way.
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ffafd83d12a220a8a0a7a1ea52abe6d4d0aaeee3">ffafd83d</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2025-03-04T17:55:02+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Disable self recomp in release flavour
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b05983210e812e79be6e318356c7c1e73093c57b">b0598321</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2025-03-04T17:55:02+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>iface: Store flags in interface files
When reporting the reason why a module is recompiled (using
`-dump-hi-diffs`), it is much more informative to inform the user about
which flag exactly has changed, rather than just an opaque reference to
a hash.
Now, when there is a difference the precise part of the flags is
reported:
```
codegen flags changed:
before: [Opt_NoTypeableBinds, Opt_OmitYields]
after: [Opt_NoTypeableBinds, Opt_OmitYields, Opt_DictsStrict]
```
Fixes #25571
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2c6ed4865e8959bdba0a6b760734781a261d841b">2c6ed486</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2025-03-04T17:55:02+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>WIP: Compress interface files
</pre>
</li>
<li>
<strong style="font-weight: 600;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7b482ff1fb03165e627f4dff8a2a86b4c8bc0fc7">7b482ff1</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2025-03-04T22:10:41+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 14px; color: #3a383f; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; border-radius: 2px; margin: 0; padding: 8px 12px; border: 1px solid #dcdcde;'>Fix
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
75 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#d0d96a6d03668aeab20ebe05e2c4ccb798c7e64c">
compiler/GHC.hs
</a>
</li>
<li class="file-stats">
<a href="#10d6a143c5922c88b5e2fe481d2af0fdafa25ee8">
compiler/GHC/Core/Opt/CallerCC/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#e65e7bbfc24f8830a20082bfc50f6d16e613cbeb">
compiler/GHC/Driver/DynFlags.hs
</a>
</li>
<li class="file-stats">
<a href="#2e5692f568fd7b67a6b172e2a60469da8392508c">
compiler/GHC/Driver/Flags.hs
</a>
</li>
<li class="file-stats">
<a href="#ecdb2d2d2744d52a895137204611a2e94a95c77c">
<span class="new-file">
+
compiler/GHC/Driver/IncludeSpecs.hs
</span>
</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="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#dd79b5199bc3b425c4536c633b39006df111a7ef">
compiler/GHC/HsToCore.hs
</a>
</li>
<li class="file-stats">
<a href="#72e14c3befeaebb85803171795d8fc797521568f">
compiler/GHC/HsToCore/Foreign/C.hs
</a>
</li>
<li class="file-stats">
<a href="#204da6b1b12bcfa4ccbef04a1e58b7554a915eac">
compiler/GHC/HsToCore/Foreign/Wasm.hs
</a>
</li>
<li class="file-stats">
<a href="#9f11c1c113f11a416be9e556904531050cbb5b2e">
compiler/GHC/Iface/Binary.hs
</a>
</li>
<li class="file-stats">
<a href="#12fae53271ab8929046115ab04711a1075fef5bf">
compiler/GHC/Iface/Env.hs
</a>
</li>
<li class="file-stats">
<a href="#a00b0a383a15a3aeb7ae6278f994741de0be7d1b">
<span class="new-file">
+
compiler/GHC/Iface/Flags.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#7d51edda4fa76a202cce0bca672ef300249ba8ea">
compiler/GHC/Iface/Load.hs
</a>
</li>
<li class="file-stats">
<a href="#4ed0dc87b8bdd9324e8a181cff15caa104b9e58c">
compiler/GHC/Iface/Make.hs
</a>
</li>
<li class="file-stats">
<a href="#a8e6b17fc507589522323d8dd20d9713e8c06760">
compiler/GHC/Iface/Recomp.hs
</a>
</li>
<li class="file-stats">
<a href="#0b4bc77723e1f22f50d70e89a81f6d92c3904408">
compiler/GHC/Iface/Recomp/Flags.hs
</a>
</li>
<li class="file-stats">
<a href="#079d6b28856775716c78fdd4a4b35bb45a59002c">
compiler/GHC/Iface/Syntax.hs
</a>
</li>
<li class="file-stats">
<a href="#06ff7bac58fd8cfe0c17b81963b03f4cce86a065">
compiler/GHC/IfaceToCore.hs
</a>
</li>
<li class="file-stats">
<a href="#86d694037d496c511e28b2c09c8410f67dc19596">
compiler/GHC/Rename/Env.hs
</a>
</li>
<li class="file-stats">
<a href="#e05ee69330b0f7088f11a5f3567137547489664d">
compiler/GHC/Rename/Names.hs
</a>
</li>
<li class="file-stats">
<a href="#173c7eb846a4e9b5fee79688a72cbf6a326e4e1e">
compiler/GHC/Runtime/Eval.hs
</a>
</li>
<li class="file-stats">
<a href="#55800b37c2c745f23532224c5a433bd1ddf3113d">
compiler/GHC/Runtime/Eval/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#474afbd1996fa06b8bc9410a2805103be57860f7">
compiler/GHC/StgToCmm/InfoTableProv.hs
</a>
</li>
<li class="file-stats">
<a href="#08a3d553a8ca7a753d77697815b63cd85e7dfbd6">
compiler/GHC/Tc/Gen/Foreign.hs
</a>
</li>
<li class="file-stats">
<a href="#9ea832ccdb4b5f7508a1efd6caedeafa16b269e7">
compiler/GHC/Tc/Gen/Splice.hs
</a>
</li>
<li class="file-stats">
<a href="#7dcf5b567a6cd3c9d98cf8d57323fbca1b1536e9">
compiler/GHC/Tc/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#1db76eadc6853599cb7bf4da7af905d641d3443a">
compiler/GHC/Types/Avail.hs
</a>
</li>
<li class="file-stats">
<a href="#03e77c5a7f093768fb8c3be51f8c4ece06b78463">
compiler/GHC/Types/Name/Reader.hs
</a>
</li>
<li class="file-stats">
<a href="#8422a23d78e2470bc2f58d923525570a7c7385e9">
compiler/GHC/Types/PkgQual.hs
</a>
</li>
<li class="file-stats">
<a href="#d3c30a6dfc850fb7e77ffd18a745022b4a400159">
compiler/GHC/Types/ProfAuto.hs
</a>
</li>
<li class="file-stats">
<a href="#02aa178643ef349f1cd6e2ddd9df6b8b62b64996">
compiler/GHC/Types/SafeHaskell.hs
</a>
</li>
<li class="file-stats">
<a href="#1b2e538eb480e4eb902f34efbe20581ec112e3c0">
compiler/GHC/Unit/Module/ModGuts.hs
</a>
</li>
<li class="file-stats">
<a href="#1b4da42c16b46d6c6cc2c2962072b1e91f519f4a">
compiler/GHC/Unit/Module/ModIface.hs
</a>
</li>
<li class="file-stats">
<a href="#2d7bf6c423ec9c38a0cd833979b49d8894b83dc6">
<span class="new-file">
+
compiler/GHC/Unit/Module/ModIface/SelfRecomp.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#f35faa85de2e0a75cdaa452eb7336a09c677d450">
compiler/GHC/Utils/Binary.hs
</a>
</li>
<li class="file-stats">
<a href="#659ee9f4a04f3d7ca5a6e0fed1452e0f56c3aeda">
<span class="new-file">
+
compiler/GHC/Utils/Compress.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#0f33fd88c617246c7f89c4477d2d1d24f942df23">
compiler/ghc.cabal.in
</a>
</li>
<li class="file-stats">
<a href="#12f1226bde7e9f48203d34d8d857513f2f1f4d75">
docs/users_guide/phases.rst
</a>
</li>
<li class="file-stats">
<a href="#f326be1cfd2ea1d4e6c641020338d0aac9e70f88">
docs/users_guide/wasm.rst
</a>
</li>
<li class="file-stats">
<a href="#c30f4ac98f08779ad1bd5a02a27802862c1e9521">
ghc/GHCi/UI.hs
</a>
</li>
<li class="file-stats">
<a href="#57d22eb49f269b51f07e23c509834d85e25f691e">
ghc/GHCi/UI/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#1655041cfd1add79e4c335c656405ee3eb3bd0dd">
hadrian/src/Flavour.hs
</a>
</li>
<li class="file-stats">
<a href="#4b733eb61cfe8a0a7189e1f5fcf412fdb852c3a6">
hadrian/src/Rules/Test.hs
</a>
</li>
<li class="file-stats">
<a href="#c77aefa7847d865ad607ebbc83b11d101d50e453">
hadrian/src/Settings/Flavours/Release.hs
</a>
</li>
<li class="file-stats">
<a href="#64986ea8b3be4272c20b8a7ea27c9861950060db">
libraries/ghc-internal/src/GHC/Internal/Pack.hs
</a>
</li>
<li class="file-stats">
<a href="#06e56ddc7a3ae336a0e60d630af4ac89e68c6903">
libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Imports.hs
</a>
</li>
<li class="file-stats">
<a href="#03654085b556c3453ef191d194b2ab0c41bc5562">
libraries/ghc-internal/src/GHC/Internal/Wasm/Prim/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#18c80762dadd678bd4dcc923cd03fc648acf4bfe">
m4/fp_find_libzstd.m4
</a>
</li>
<li class="file-stats">
<a href="#a442fd7ecae5d24fd03869652f2abedfa2721207">
rts/include/RtsAPI.h
</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="#9ac2f6e8ea3ee49cd6245f2853df3ef9116e1e49">
<span class="new-file">
+
testsuite/tests/driver/self-recomp/Makefile
</span>
</a>
</li>
<li class="file-stats">
<a href="#273609a0534323ce14674619efcd7679eaf4067f">
<span class="new-file">
+
testsuite/tests/driver/self-recomp/SelfRecomp01.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#6a913537cca93f1d9d1496bab7450b7247498303">
<span class="new-file">
+
testsuite/tests/driver/self-recomp/SelfRecomp02.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#7888811a3b46a2d57b4ba98a845426ea7dd7919c">
<span class="new-file">
+
testsuite/tests/driver/self-recomp/SelfRecomp03.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#251f2a45cc6ce11a143b81c09313b9c9737b9909">
<span class="new-file">
+
testsuite/tests/driver/self-recomp/SelfRecomp04.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ad9a073336c8bb4c494966257fd496eb6d15c21a">
<span class="new-file">
+
testsuite/tests/driver/self-recomp/SelfRecomp04.stdout
</span>
</a>
</li>
<li class="file-stats">
<a href="#7683c7db428fb58d755de69d30189998691adb43">
<span class="new-file">
+
testsuite/tests/driver/self-recomp/all.T
</span>
</a>
</li>
<li class="file-stats">
<a href="#5d816e20872e4770a7dbe3f77d5683e0bd00a50d">
testsuite/tests/ghci/should_run/Makefile
</a>
</li>
<li class="file-stats">
<a href="#e3879079afa32ec6b17e3ec0467dc56e0f6e2a1e">
<span class="new-file">
+
testsuite/tests/ghci/should_run/TopEnvIface.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#ecf4f403d61d19a8d84e390f57d32875e2aecdee">
<span class="new-file">
+
testsuite/tests/ghci/should_run/TopEnvIface.stdout
</span>
</a>
</li>
<li class="file-stats">
<a href="#e3ec196b4d51de46a9d43a05f940f89634edcfcc">
<span class="new-file">
+
testsuite/tests/ghci/should_run/TopEnvIface2.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#2adf5bbfc798c2d682060f7e514e2417532c2eab">
testsuite/tests/ghci/should_run/all.T
</a>
</li>
<li class="file-stats">
<a href="#a2b7cae4aec791aa039150be608dbfa0c1dcf25e">
testsuite/tests/jsffi/jsffigc.hs
</a>
</li>
<li class="file-stats">
<a href="#2e84c32764b31a3fe35772ed36720993c7401237">
testsuite/tests/jsffi/jsffigc.mjs
</a>
</li>
<li class="file-stats">
<a href="#7bcd84be2b12c98ad2eab5db292374f7c49f1f4a">
testsuite/tests/jsffi/jsffisleep.hs
</a>
</li>
<li class="file-stats">
<a href="#439bfdae1c812e7b2a29141149ee72e6b21640a7">
testsuite/tests/jsffi/jsffisleep.stdout
</a>
</li>
<li class="file-stats">
<a href="#53ec544bf16342ce6399801f0c6e2dbcd18dea2f">
testsuite/tests/jsffi/textconv.hs
</a>
</li>
<li class="file-stats">
<a href="#a5a4286c58acf6a6b45c01affd83b814cf13e67d">
testsuite/tests/jsffi/textconv.mjs
</a>
</li>
<li class="file-stats">
<a href="#c5662bedafa6a48ec7062b131d94b70f514207d9">
utils/check-exact/ExactPrint.hs
</a>
</li>
<li class="file-stats">
<a href="#a01c7c8d6870e84e6f69c9daf633c0cc2adbb1bf">
utils/check-exact/Main.hs
</a>
</li>
<li class="file-stats">
<a href="#5a3935220a12511953a752af2c9b7d29d0a1b3fa">
utils/check-exact/Transform.hs
</a>
</li>
<li class="file-stats">
<a href="#3257d9454efdfaae92dd011e55e59bba45faf514">
utils/check-exact/Utils.hs
</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: #626168;">
—
<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/75d6c9918a8007de3e5835e81538e35ce022f92f...7b482ff1fb03165e627f4dff8a2a86b4c8bc0fc7">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>