-
7666f4a9
by Fendor at 2026-04-17T22:29:51-04:00
Migrate `ghc-pkg` to use `OsPath` and `file-io`
`ghc-pkg` should use UNC paths as much as possible to avoid MAX_PATH
issues on windows.
`file-io` uses UNC Paths by default on windows, ensuring we use the
correct APIs and that we finally are no longer plagued by MAX_PATH
issues in CI and private machines.
On top of it, the higher correctness of `OsPath` is appreciated in this
small codebase. Also, we improve memory usage very slightly, due to the
more efficient memory representation of `OsPath` over `FilePath`
Adds `ghc-pkg` regression test for MAX_PATH on windows
Make sure `ghc-pkg` behaves as expected when long paths (> 255) are
involved on windows.
Let's generate a testcase where we can actually observe that `ghc-pkg`
behaves as epxected.
See the documentation for windows on Maximum Path Length Limitation:
* `https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation`
Adds changelog entry for long path support in ghc-pkg.
-
78434e8c
by Simon Peyton Jones at 2026-04-17T22:30:38-04:00
Kill off the substitution in Lint
Now that we have invariant (NoTypeShadowing) we no longer
need Lint to carry an ambient substitution. This makes it
simpler and faster. A really worthwhile refactor.
There are some knock-on effects
* Linting join points after worker/wrapper. See
Note [Join points and beta redexes]
* Running a type substitution after the desugarer.
See Note [Substituting type-lets] in
the new module GHC.Core.SubstTypeLets
Implements #27078
Most perf tests don't use Lint so we won't see a perf incresae.
But T1969, which uses -O0 and Lint, gets 1.3% worse because it has
to run the SubstTypeLets pass which is a somewhat expensive no-op
Overall though compile-time allocations are down 0.1%.
Metric Increase:
T1969
-
86ca6c2c
by mangoiv at 2026-04-17T22:31:22-04:00
testsuite: inline elemCoreTest
Some weird (probably python scoping) rule caused elemCoreTest, a regex
being out of scope on ubuntu, presumably because of a newer python version.
This patch just inlines the regex, which fixes the issue.
Fixes #27193
-
1f30005b
by Andreas Klebinger at 2026-04-19T21:48:05+00:00
SOURCE import parseIdentifer to improve parallelism.
-
e96b8d63
by Andreas Klebinger at 2026-04-19T21:48:05+00:00
CallerCC: Remove CoreM dependency
Pass DynFlags directly, making the dependency graph more parallel.
-
26090197
by Andreas Klebinger at 2026-04-19T21:58:28+00:00
SOURCE-import HsInstances inside ghc.
Fixes #27198 by SOURCE importing HsInstances unlocking
more build paralleism.
(cherry picked from commit 7e53835977538e3c37e5d78502ff422ad87d4f9d)
-
cb679710
by Andreas Klebinger at 2026-04-19T22:06:08+00:00
HsInstances - fix a warning
-
f5722894
by Andreas Klebinger at 2026-04-20T15:11:06+00:00
SOURCE import GHC.Types.Error in some places for build parallelism.
Performance for these interfaces is not very relevant since it's only used for error handling.
This means we can use SOURCE imports to shorten the critical build path
by a non trivial amount.
-
a64cd962
by Andreas Klebinger at 2026-04-20T15:11:26+00:00
Split GHC.Driver.Main.hs up into multiple components.
This module was getting far too large to reason about, it split it
into components that all are re-exported from GHC.Driver.Main
-
cf62c053
by Andreas Klebinger at 2026-04-20T15:42:58+00:00
Fix hs-boot import
-
e6550ad1
by Andreas Klebinger at 2026-04-20T15:45:33+00:00
Fix hs-boot import2
-
900317b2
by Andreas Klebinger at 2026-04-20T15:54:23+00:00
Use SOURCE header for Driver.Main.Compiler import
-
8de7314b
by Andreas Klebinger at 2026-04-20T16:23:24+00:00
more hs-boot workarounds
-
c6ce86ca
by Andreas Klebinger at 2026-04-20T17:15:07+00:00
Driver interactive boot import
-
19fd9f7e
by Andreas Klebinger at 2026-04-20T17:18:27+00:00
deSugar SOURCE header
-
eff8fd32
by Andreas Klebinger at 2026-04-20T17:27:00+00:00
Add GHC.Tc.Deriv.hs-boot
-
ee3550f9
by Andreas Klebinger at 2026-04-20T18:56:35+00:00
Remove a potentially pointless import