<!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, "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: 0.875rem;
}
body {
-webkit-text-shadow: rgba(255,255,255,0.01) 0 0 1px;
}
body {
font-family: var(--default-regular-font, -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,0.01) 0 0 1px; font-family: var(--default-regular-font, -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/users-guide 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: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5fe1d3e662e7b0ce8c2da31514d553a7f50ef179">5fe1d3e6</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2023-05-17T21:42:00-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Use setSrcSpan rather than setLclEnv in solveForAll

In subsequent MRs (#23409) we want to remove the TcLclEnv argument from
a CtLoc. This MR prepares us for that by removing the one place where
the entire TcLclEnv is used, by using it more precisely to just set the
contexts source location.

Fixes #23390
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/385edb65878d9963ea0406887649f7312c188c57">385edb65</a></strong>
<div>
<span> by Torsten Schmits </span> <i> at 2023-05-17T21:42:40-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Update the users guide paragraph on -O in GHCi

In relation to #23056
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/87626ef046335cf56c9fa4a875aa2a832fe59d4b">87626ef0</a></strong>
<div>
<span> by Ben Gamari </span> <i> at 2023-05-18T15:18:53-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>base: Add test for #13660
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9eef53b191a3100cf7255738f9c97c62673d9392">9eef53b1</a></strong>
<div>
<span> by Ben Gamari </span> <i> at 2023-05-18T15:18:53-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>base: Move implementation of GHC.Foreign to GHC.Internal
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/174ea2fa70747e315c6299211191494f57723786">174ea2fa</a></strong>
<div>
<span> by Ben Gamari </span> <i> at 2023-05-18T15:18:53-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>base: Introduce {new,with}CStringLen0

These are useful helpers for implementing the internal-NUL code unit
check needed to fix #13660.
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a46ced162d195cb171068c307328d139fc65fe85">a46ced16</a></strong>
<div>
<span> by Ben Gamari </span> <i> at 2023-05-18T15:18:53-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>base: Clean up documentation
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b98d99cc1642e3bba7968e7c9993098538d9491d">b98d99cc</a></strong>
<div>
<span> by Ben Gamari </span> <i> at 2023-05-18T15:18:53-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>base: Ensure that FilePaths don't contain NULs

POSIX filepaths may not contain the NUL octet but previously we did not
reject such paths. This could be exploited by untrusted input to cause
discrepancies between various `FilePath` queries and the opened
filename. For instance, `readFile "hello.so\x00.txt"` would open the
file `"hello.so"` yet `takeFileExtension` would return `".txt"`.

The same argument applies to Windows FilePaths

Fixes #13660.
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/7ae45459baaa175b73437b90af5abfa1c214d6fa">7ae45459</a></strong>
<div>
<span> by Simon Peyton Jones </span> <i> at 2023-05-18T15:19:29-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Allow the demand analyser to unpack tuple and equality dictionaries

Addresses #23398. The demand analyser usually does not unpack class
dictionaries: see Note [Do not unbox class dictionaries] in
GHC.Core.Opt.DmdAnal.

This patch makes an exception for tuple dictionaries and equality
dictionaries, for reasons explained in wrinkles (DNB1) and (DNB2) of
the above Note.

Compile times fall by 0.1% for some reason (max 0.7% on T18698b).
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/b53a908674bbcddf35545f63701d4f902202eb69">b53a9086</a></strong>
<div>
<span> by Greg Steuck </span> <i> at 2023-05-18T15:20:08-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Use a simpler and more portable construct in ld.ldd check

printf '%q\n' is a bash extension which led to incorrectly
failing an ld.lld test on OpenBSD which uses pdksh as /bin/sh
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dd5710afaf6b8f3139a3fb0f6ab8d1be50312b58">dd5710af</a></strong>
<div>
<span> by Torsten Schmits </span> <i> at 2023-05-18T15:20:50-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Update the warning about interpreter optimizations

to reflect that they're not incompatible anymore, but guarded by a flag
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4f6dd9996f9118206b26a2c61f7caacb202e89f5">4f6dd999</a></strong>
<div>
<span> by Matthew Pickering </span> <i> at 2023-05-18T15:21:26-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Remove stray dump flags in GHC.Rename.Names
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4bca0486232b5f0cf6f5a396b16d52e5db55fb9a">4bca0486</a></strong>
<div>
<span> by Oleg Grenrus </span> <i> at 2023-05-19T11:51:33+03:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Make Warn = Located DriverMessage

This change makes command line argument parsing use diagnostic
framework for producing warnings.
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/525ed55400d49e36a7953047c93c8f6731dd7f72">525ed554</a></strong>
<div>
<span> by Simon Peyton Jones </span> <i> at 2023-05-19T10:09:15-04:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>Type inference for data family newtype instances

This patch addresses #23408, a tricky case with data family
newtype instances.  Consider

  type family TF a where TF Char = Bool
  data family DF a
  newtype instance DF Bool = MkDF Int

and [W] Int ~R# DF (TF a), with a Given (a ~# Char).   We must fully
rewrite the Wanted so the tpye family can fire; that wasn't happening.
</pre>
</li>
<li>
<strong style="font-weight: bold;"><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/9765af3aa272d3f48f8fae1cf4168dbcc8fab741">9765af3a</a></strong>
<div>
<span> by Ben Gamari </span> <i> at 2023-05-19T14:32:53+00:00 </i>
</div>
<pre class="commit-message" style='white-space: pre-wrap; display: block; font-size: 0.875rem; color: #333238; position: relative; font-family: var(--default-mono-font, "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;'>users guide: A few small mark-up fixes
</pre>
</li>
</ul>
<h4 style="margin-top: 10px; margin-bottom: 10px;">
30 changed files:
</h4>
<ul>
<li class="file-stats">
<a href="#d0d96a6d03668aeab20ebe05e2c4ccb798c7e64c">
compiler/GHC.hs
</a>
</li>
<li class="file-stats">
<a href="#8104fa1b71db6cfc4eb90cd769463d9eb9004619">
compiler/GHC/Core/Opt/DmdAnal.hs
</a>
</li>
<li class="file-stats">
<a href="#0ca1508e5b0cedec2f19fe10e414597184209573">
compiler/GHC/Core/Predicate.hs
</a>
</li>
<li class="file-stats">
<a href="#dbce6cb5e8f3d5287103c66d1a56ad63bbbd11a9">
compiler/GHC/Driver/Backpack.hs
</a>
</li>
<li class="file-stats">
<a href="#5240ba4d079cfeb9884babd8ec4e134730308b54">
compiler/GHC/Driver/CmdLine.hs
</a>
</li>
<li class="file-stats">
<a href="#2c680115d7e70b54a18c48be02dce2d676eaf4f8">
compiler/GHC/Driver/Errors.hs
</a>
</li>
<li class="file-stats">
<a href="#3177183680205a840465ba6b8d33631394cca2d7">
compiler/GHC/Driver/Errors/Ppr.hs
</a>
</li>
<li class="file-stats">
<a href="#820a2607941cd6fe77ba25c9a59b3f1ee106bb01">
compiler/GHC/Driver/Errors/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#9a679a2680ef6061397f1987091ea9f96ffe095d">
compiler/GHC/Driver/Main.hs
</a>
</li>
<li class="file-stats">
<a href="#b8e6af642e56019828828dc679683c04afb81867">
compiler/GHC/Driver/Pipeline.hs
</a>
</li>
<li class="file-stats">
<a href="#64e68d52c0898049455e20b0d001ffe1dd07ff83">
compiler/GHC/Driver/Pipeline/Execute.hs
</a>
</li>
<li class="file-stats">
<a href="#891fefd1a14e4737c5427b8ad50d32f5f9300c96">
compiler/GHC/Driver/Pipeline/Phases.hs
</a>
</li>
<li class="file-stats">
<a href="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#e05ee69330b0f7088f11a5f3567137547489664d">
compiler/GHC/Rename/Names.hs
</a>
</li>
<li class="file-stats">
<a href="#f018e77421f495c6f75733fee4a511cfe57bebe8">
compiler/GHC/Tc/Solver/Canonical.hs
</a>
</li>
<li class="file-stats">
<a href="#03ec4f8741105271af29a61fdb47c8feba9bbcfa">
compiler/GHC/Tc/Solver/Equality.hs
</a>
</li>
<li class="file-stats">
<a href="#0c6b585a8a21f8340a85ca2cef89c4b1bf5a8953">
compiler/GHC/Tc/Solver/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#e2c828ee9e003df518a07b05beaa6971e5c62eb0">
compiler/GHC/Types/Error/Codes.hs
</a>
</li>
<li class="file-stats">
<a href="#b02c1c6109c60b8f685234b0dbaabf6c79fed2a2">
docs/users_guide/ghci.rst
</a>
</li>
<li class="file-stats">
<a href="#12f1226bde7e9f48203d34d8d857513f2f1f4d75">
docs/users_guide/phases.rst
</a>
</li>
<li class="file-stats">
<a href="#c30f4ac98f08779ad1bd5a02a27802862c1e9521">
ghc/GHCi/UI.hs
</a>
</li>
<li class="file-stats">
<a href="#519f43ef6302b87fec67179ff5343fb9706e9748">
ghc/Main.hs
</a>
</li>
<li class="file-stats">
<a href="#0cba8cd0b4d1e9b852fcc660e75a3175bc5d2f8a">
libraries/base/GHC/Foreign.hs
</a>
</li>
<li class="file-stats">
<a href="#ad08dfb63f369f28c8ba568340c2380a0c1d1da4">
<span class="new-file">
+
libraries/base/GHC/Foreign/Internal.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#324b09678d27e83d925642e6321cabde3ad06beb">
libraries/base/System/Posix/Internals.hs
</a>
</li>
<li class="file-stats">
<a href="#b7cfb47853ef95330e499ca0c5b90964744d101f">
libraries/base/base.cabal
</a>
</li>
<li class="file-stats">
<a href="#2d5b4686de4b83872046aca9b3e7e67c9e4aaa62">
<span class="new-file">
+
libraries/base/tests/T13660.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#e210b616558cf616676a0ba52a884ea98f0b51eb">
<span class="new-file">
+
libraries/base/tests/T13660.stdout
</span>
</a>
</li>
<li class="file-stats">
<a href="#b817c80cbb15890d9a6df41e91d15d7442471f3c">
libraries/base/tests/all.T
</a>
</li>
<li class="file-stats">
<a href="#d1d5a517a2acf43aa68af21193da3ace27591b15">
m4/fp_ld_supports_response_files.m4
</a>
</li>
</ul>
<h5 style="margin-top: 10px; margin-bottom: 10px; font-size: 0.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/6139066574ec43f07843ead6aef389decaefd955...9765af3aa272d3f48f8fae1cf4168dbcc8fab741">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>