-
5ae89054
by Sylvain Henry at 2025-09-24T17:07:00-04:00
Allow disabling builtin rules (#20298)
Add a way to disable built-in rules programmatically and with a debug flag.
I also took the opportunity to add a debug flag to disable bignum rules,
which was only possible programmatically (e.g. in a plugin).
-
135242ca
by Rodrigo Mesquita at 2025-09-24T17:07:44-04:00
Don't use build CFLAGS and friends as target settings
In the GHC in tree configure, `CFLAGS`, `CXXFLAGS`, and similar tool
configuration flags apply to the BUILD phase of the compiler, i.e. to
the tools run to compile GHC itself.
Notably, they should /not/ be carried over to the Target settings, i.e.
these flags should /not/ apply to the tool which GHC invokes at runtime.
Fixes #25637
-
b418408b
by Irene Knapp at 2025-09-25T09:47:54-04:00
Document etymology of "bind" as the name for `>>=`
It took me twenty years of contemplation to realize why it's called that.
I therefore feel that it may not be obvious to beginners.
-
e9c5e46f
by Brandon Chinn at 2025-09-25T09:48:36-04:00
Fix tabs in string gaps (#26415)
Tabs in string gaps were broken in bb030d0d because previously, string gaps were manually parsed, but now it's lexed by the usual Alex grammar and post-processed after successful lexing.
It broke because of a discrepancy between GHC's lexer grammar and the Haskell Report. The Haskell Report includes tabs in whitechar:
whitechar → newline | vertab | space | tab | uniWhite
$whitechar used to include tabs until 18 years ago, when it was removed in order to exclude tabs from $white_no_nl in order to warn on tabs: 6e202120. In this MR, I'm adding \t back into $whitechar, and explicitly excluding \t from the $white_no_nl+ rule ignoring all whitespace in source code, which more accurately colocates the "ignore all whitespace except tabs, which is handled in the next line" logic.
As a side effect of this MR, tabs are now allowed in pragmas; currently, a pragma written as {-# \t LANGUAGE ... #-} is interpreted as the tab character being the pragma name, and GHC warns "Unrecognized pragma". With this change, tabs are ignored as whitespace, which more closely matches the Report anyway.
-
8bf5b309
by Cheng Shao at 2025-09-25T09:49:18-04:00
wasm: remove the --no-turbo-fast-api-calls hack from dynamic linker shebang
This patch removes the `--no-turbo-fast-api-calls` hack from the dyld
script shebang; it was used to workaround v8 fast call coredumps in
nodejs and no longer needed, and comes with a performance penalty,
hence the removal.
-
f0aa9041
by Richard Eisenberg at 2025-09-26T17:16:01+01:00
Move some fundep solving to new spot
Work in progress...[skip ci]
This completes moving dict fundeps to the main loop
We need wanted/wanted fundeps too
...and some other refactors
Wibbles
Make FunDeps into a new module
Solve new_eqs rather than adding them to WantedConstraints
Wibble
Import wibbles
Comments only [skip ci]
WIP on FunDeps [skip ci]
Work in progress [skip ci]
More WIP
Wibbles to fundeps [skip ci]
Kill off kickOutAfterUnification
More wibbles
Need to remove the unification-count stuff entirely
and do more tidying up -- this commit is mainly for CI
Wibbles solver
Iterate the simples more often than plugins
Start to extend to equalities
Whitespace only
Small improvements
Wibbles
-
d5cc2868
by Simon Peyton Jones at 2025-09-26T17:16:01+01:00
Improved error messages from fundep changes
-
8613cbba
by Simon Peyton Jones at 2025-09-26T17:16:01+01:00
Wibbles
-
c949c8be
by Simon Peyton Jones at 2025-09-26T17:16:01+01:00
Fix typo
-
c39db9b6
by Simon Peyton Jones at 2025-09-26T17:16:01+01:00
Wibbles
-
21df47fe
by Simon Peyton Jones at 2025-09-26T17:16:01+01:00
Nuke FunDepOrigin1 and 2
-
15254924
by Simon Peyton Jones at 2025-09-26T17:16:01+01:00
Wibble
-
92dd9ead
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
More refactoring
-
df72a283
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
More tidying up
-
4993153d
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Yet more
-
2656dc08
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Wibbles
-
9a96f472
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Wibbles [skip ci]
-
6d560e2b
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Naming and comments only [skip ci]
-
0a4f786e
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Progress [skip ci]x
-
c41b5938
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Make it compile
.. with now story on WhatUnifications
-
b3dd75a1
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Stop putting QLInstVar into the tc_lvl environment [skip ci]
This is really a bug! See (TCAPP2)
Not done yet
-
6a5eb4a9
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Now it compiles
-
ea57abeb
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Accept error message changes
Plus compile time improvement
Metrics: compile_time/bytes allocated
Baseline
Test value New value Change
---------------------- --------------------------------------
T5030(normal) 173,839,232 148,115,248 -14.8% GOOD
hard_hole_fits(normal) 286,768,048 284,015,416 -1.0%
geo. mean -0.2%
minimum -14.8%
maximum +0.3%
Metric Decrease:
T5030
-
69eec23e
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
QuickLook's tcInstFun should make instantiation variables directly
tcInstFun must make "instantiation variables", not regular
unification variables, when instantiating function types. That was
previously implemented by a hack: set the /ambient/ level to QLInstTyVar.
But the hack finally bit me, when I was refactoring WhatUnifications.
And it was always wrong: see the now-expunged (TCAPP2) note.
This commit does it right, by making tcInstFun call its own
instantiation functions. That entails a small bit of duplication,
but the result is much, much cleaner.
-
7c68ae04
by Simon Peyton Jones at 2025-09-26T17:16:02+01:00
Wibbles