Andreas Klebinger pushed to branch wip/andreask/build-opt at Glasgow Haskell Compiler / GHC Commits: 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 - - - - - 44 changed files: - + changelog.d/ghc-pkg-long-path-support - compiler/GHC/Core/Lint.hs - + compiler/GHC/Core/Lint/SubstTypeLets.hs - compiler/GHC/Core/Opt/CallerCC.hs - compiler/GHC/Core/Opt/OccurAnal.hs - compiler/GHC/Core/Opt/Pipeline.hs - compiler/GHC/Core/Opt/Stats.hs - compiler/GHC/Core/Opt/WorkWrap/Utils.hs - compiler/GHC/Core/Subst.hs - compiler/GHC/Driver/Backpack.hs - compiler/GHC/Driver/Config/Core/Lint.hs - compiler/GHC/Driver/Env/Types.hs - compiler/GHC/Driver/Errors/Types.hs - compiler/GHC/Driver/Main.hs - + compiler/GHC/Driver/Main/Compile.hs - compiler/GHC/Driver/Main.hs-boot → compiler/GHC/Driver/Main/Compile.hs-boot - + compiler/GHC/Driver/Main/Hsc.hs - + compiler/GHC/Driver/Main/Interactive.hs - + compiler/GHC/Driver/Main/Passes.hs - + compiler/GHC/Driver/Main/Passes.hs-boot - compiler/GHC/Driver/Session.hs - compiler/GHC/Hs.hs - compiler/GHC/Hs/Instances.hs - + compiler/GHC/Hs/Instances.hs-boot - + compiler/GHC/HsToCore.hs-boot - compiler/GHC/Iface/Load.hs - + compiler/GHC/Tc/Deriv.hs-boot - compiler/GHC/Tc/TyCl.hs - compiler/GHC/Tc/TyCl/Instance.hs - compiler/GHC/Tc/TyCl/Instance.hs-boot - compiler/GHC/Types/Error.hs - compiler/GHC/Types/Error.hs-boot - compiler/GHC/Unit/State.hs - compiler/ghc.cabal.in - libraries/base/tests/perf/all.T - libraries/ghc-boot/GHC/Unit/Database.hs - libraries/ghc-boot/ghc-boot.cabal.in - testsuite/tests/cabal/Makefile - testsuite/tests/cabal/all.T - + testsuite/tests/cabal/ghcpkg10.stdout - testsuite/tests/corelint/LintEtaExpand.stderr - testsuite/tests/corelint/T21115b.stderr - utils/ghc-pkg/Main.hs - utils/ghc-pkg/ghc-pkg.cabal.in The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/3c622f0df932d3d0e0a36ec171499a8... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/3c622f0df932d3d0e0a36ec171499a8... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Andreas Klebinger (@AndreasK)