[Git][ghc/ghc][wip/romes/27514] 2 commits: Rule-based deterministic concurrent downsweep
sheaf pushed to branch wip/romes/27514 at Glasgow Haskell Compiler / GHC Commits: 7e6d3b57 by sheaf at 2026-08-26T15:05:00+02:00 Rule-based deterministic concurrent downsweep This commit rewrites downsweep as a single query-answering rule (see 'DownsweepRule') that can be executed by concurrent worker threads. The design allows every expensive operation (preprocessing files with CPP, parsing headers, reading interfaces) to be performed concurrently according to the -j<N>/-jsem flags. See Note [Rules-based downsweep] in GHC.Driver.Downsweep. To achieve this, the finder cache was slightly restructured in order to account for modules whose source files are directly specified as targets; see the new Note [Known home modules] in GHC.Unit.Finder.Types. This allowed us to remove 'addModuleToFinder', 'addHomeModuleToFinder' and a few brittle hacks (e.g. in Backpack). Fixes #27514 - - - - - 68246948 by sheaf at 2026-08-26T15:05:00+02:00 Separate Home/External finder caches - - - - - 44 changed files: - + changelog.d/parallel-downsweep - compiler/GHC.hs - compiler/GHC/Builtin.hs - + compiler/GHC/Data/Dependent.hs - compiler/GHC/Driver/Backpack.hs - compiler/GHC/Driver/Concurrency.hs - compiler/GHC/Driver/Downsweep.hs - compiler/GHC/Driver/Env.hs - compiler/GHC/Driver/Errors/Ppr.hs - compiler/GHC/Driver/Errors/Types.hs - compiler/GHC/Driver/Main/Passes.hs - compiler/GHC/Driver/Make.hs - compiler/GHC/Driver/MakeFile.hs - compiler/GHC/Driver/Pipeline/Execute.hs - compiler/GHC/Driver/Pipeline/LogQueue.hs - compiler/GHC/Iface/Recomp.hs - compiler/GHC/Parser/Header.hs - compiler/GHC/Runtime/Interpreter/JS.hs - compiler/GHC/Tc/Module.hs - compiler/GHC/Types/Error/Codes.hs - compiler/GHC/Types/UnresolvedImport.hs - compiler/GHC/Unit/Finder.hs - + compiler/GHC/Unit/Finder/Cache.hs - compiler/GHC/Unit/Finder/Types.hs - compiler/GHC/Unit/Module/Graph.hs - compiler/GHC/Unit/Module/ModSummary.hs - compiler/GHC/Unit/State.hs - compiler/GHC/Unit/Types.hs - compiler/GHC/Utils/Concurrent/Scope.hs - compiler/ghc.cabal.in - ghc/GHCi/UI.hs - testsuite/tests/diagnostic-codes/codes.stdout - testsuite/tests/driver/T27461/Makefile - + testsuite/tests/driver/T27461/T27461c.stderr - testsuite/tests/driver/T27461/all.T - + testsuite/tests/driver/T27461/src/Wrong.hs - testsuite/tests/ghc-api/downsweep/IncrementalDownsweep.hs - testsuite/tests/ghc-api/downsweep/OldModLocation.hs - testsuite/tests/ghc-api/downsweep/PartialDownsweep.hs - testsuite/tests/ghc-api/fixed-nodes/FixedNodes.hs - testsuite/tests/ghc-api/fixed-nodes/InterfaceModuleGraph.hs - testsuite/tests/ghc-api/fixed-nodes/ModuleGraphInvariants.hs - testsuite/tests/splice-imports/SI35.hs - utils/check-ppr/Main.hs The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/c2cfd600e365609cf959ef403de94bd... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/c2cfd600e365609cf959ef403de94bd... You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help
participants (1)
-
sheaf (@sheaf)