Zubin pushed to branch wip/davide/io_manager_tests at Glasgow Haskell Compiler / GHC Commits: 13dff5d0 by L0neGamer at 2026-10-22T21:37:31-04:00 add options for resizing bytearrays (#27244) add five mutable bytearray resizing operations for various kinds of pinnedness and aligning. - prefer unpinned when allocating new array (``resizeMutableByteArrayPreferUnpinned#``; the ``resizeMutableByteArray#`` default) - prefer pinned when allocating new array (``resizeMutableByteArrayPreferPinned#``) - prefer aligned and pinned when allocating new array (``resizeMutableByteArrayPreferAlignedPinned#``) - prefer same as input bytearray when allocating new array (``resizeMutableByteArrayKeepPinnedness#``) - ensure the output array is aligned and pinned after operation (``resizeMutableByteArrayMakeAlignedPinned#``) - - - - - 0c17201c by Sylvain Henry at 2026-10-22T21:38:23-04:00 JS: implement performMinorGC and performBlockingMajorGC (#28012) GHC.Internal.System.Mem imports three C entry points: performMajorGC, performGC (for performMinorGC) and performBlockingMajorGC. The JS RTS only defined h$performMajorGC, so calling performMinorGC or performBlockingMajorGC threw "ReferenceError: h$performGC is not defined" at runtime. The JS RTS has a single non-generational collector, so both missing entry points are now aliases of h$performMajorGC. Add a test that calls every GC entry point of System.Mem. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> - - - - - 7a631ff2 by L0neGamer at 2026-10-23T09:11:39-04:00 Mon(a|oi)d of No (Return|Mappend) progress (!15795) Make non-canonical definitions of return and mappend non-suppressible errors, and make canonical definitions of those methods warnings. CLC proposal: https://github.com/haskell/core-libraries-committee/issues/328 - - - - - 14656fd4 by Simon Jakobi at 2026-10-23T09:12:27-04:00 Cmm: keep the CBE substitution idempotent When blocks are merged over multiple rounds during common block elimination, a block that won a merge in an earlier round can still lose a merge in a later round. The substitution map (Subst) used to record this as a chain: the earlier loser mapped to a block that was itself eliminated. In PLT terminology, the substitution became *non-idempotent*. Applying such a substitution with a single lookup left edges to unreachable blocks in the Cmm graph, eventually leading to a setInfoTableStackMap panic (#27368). With this patch, each round's fresh substitutions are applied to the old ones as they are added (extendSubst), so every eliminated block maps directly to its final replacement and the substitution stays idempotent. Fixes #27368. Assisted-by: Claude Fable 5.1 - - - - - 92848e61 by Evgeny Malyshev at 2026-10-23T20:26:04-04:00 hadrian: Include transitive dependencies in Haddock builds Haddock needs indirect dependency interfaces to resolve references to definitions outside a package's direct dependencies. Expose Cabal's configured dependency closure through ContextData and use it alongside the direct list, preserving direct-interface precedence. Bump Shake's cache version for the serialized oracle change. Add a Hadrian selftest requiring template-haskell's indirect ghc-prim interface. Fixes #25850. Fixes #27786. Assisted-By: OpenAI Codex Metric Increase: haddock.Cabal - - - - - 5e8ae81b by Zubin Duggal at 2026-10-23T20:26:47-04:00 WinIO: Don't confuse Win32 errors and NTSTATUS codes WinIO misinterpreted NTSTATUS codes as Win32 errors, and had some ad hoc logic to deal with this. However, this logic was incomplete and resulted in the mishandling of results of certain I/O operations (see testcase). Now the `ErrCode` argument in `CompletionCallback` is always the Win32 error code, and we convert the NTSTATUS using RtlNtStatusToDosError. Also when an overlapped/async operation such as ReadFile fails immediately, with a Win32 error such as ERROR_BROKEN_PIPE, we don't get a further completion notification, so we never recorded the failure. This worked by coincidence earlier, because `STATUS_PENDING` happened to have the same numerical code as `ERROR_NO_MORE_ITEMS`, but it doesn't now that we translate `STATUS_PENDING` into the correct Win32 error code (`ERROR_IO_PENDING`). Fix this by using the Win32 error value we obtained when an operation returns `STATUS_PENDING`. Fixes #27971 - - - - - c42ed66a by Martijn Bastiaan at 2026-10-24T16:00:42+02:00 Add single-threaded test for #27526 + #27123 Issue #27526 is a duplicate of #27123, which has already been fixed in HEAD. The proposed patch in the former carries a "nicer" regression test in that it doesn't rely on multi-threading to trigger. Closes #27526 - - - - - 7f73f515 by Simon Peyton Jones at 2026-10-24T17:29:19-04:00 Refactor QuickLook a bit This MR simply refactors QuickLook a bit. In particular, it simplifies `tcApp`, and moves shared code into `finishApp`. It also adds `Note [QuickLook: arguments before result]` responding to #26599. There should be no user-visible changes, except perhaps in error messages, which improve marginally. For some reason T24984 compiles 8% faster. I'll take the win! Metric Decrease: T24984 - - - - - a4a3a964 by Alan Zimmerman at 2026-10-24T17:30:03-04:00 EPA: Use AnnList for XClosedTypeFamily We now have TTG annotations for FamilyInfo. Make use of it to store the AnnList annotations for a closed type family. - - - - - 953e4c7f by sheaf at 2026-10-26T18:19:10-04:00 Rework LogQueue to be a proper queue Now 'LogQueue' uses a 'TQueue' with a separate 'TVar' to indicate whether the log queue is finished logging, instead of the previous weird data representation using a reverse-order '[Maybe Msg]' with 'Nothing' denoting the end of the queue. - - - - - ec29c5fa by Rodrigo Mesquita at 2026-10-26T18:19:10-04:00 Refactor GHC.Driver.MakeAction Pull out of 'runParPipelines' the logic for creating a 'MakeEnv' ready to be used by multiple threads, as that will be useful for downsweep as well (which doesn't fit the 'runPipelines' flow), rather than being just for upsweep. The code is moved and re-structured to match the export list, simplify the sequentiality checks previously both in 'runPipelines' and 'runAllPipelines', which were weirdly similar and confusing; into the two part step where we need these checks: (1) to construct the MakeEnv, (2) to run the MakeActions in parallel. These two steps are separate and used to be too mixed up. Some additional little simplifications or clean ups here and there. - - - - - 3fb22073 by Rodrigo Mesquita at 2026-10-26T18:19:11-04:00 Refactor GHC.Driver.Downsweep in preparation for parallel downsweep Pure refactor to improve the code to facilitate implementing parallel downsweep in the next commit. This commit puts a MakeEnv into the DownsweepEnv, gives the fields proper names and uses RecordWildcards to simplify, rather than passing around all diagnostic wrappers, driver-message-things and using 10s of positional fields. No behavior changes here! - - - - - 52f385a7 by sheaf at 2026-10-26T18:19:11-04:00 Driver: enableCodeGenForTH in load', not downsweep enableCodeGenForTH modifies the module graph for planning, creating fresh temporary paths. So it should only be run when we are about to execute a build plan (e.g. in load'), so that consumers that want to know facts about the module graph don't go looking for files that don't exist yet (in particular 'haddock --no-compilation'). - - - - - 82402d14 by sheaf at 2026-10-26T18:19:11-04:00 2-phase Cache/Search Finder monad This commit restructures the finder abstraction by introducing the 'FinderM' monad, which splits module lookup operations into two phases: - a cache-only phase, performing no filesystem access, - from the first cache miss onwards, a search action which may access the filesystem. This allows consumers to distinguish between quick cached results versus more expensive filesystem search operations. - - - - - 5c302b40 by sheaf at 2026-10-26T18:19:11-04:00 Separate Home/External finder caches The caches for home modules and modules from external units have different lifetimes, needing to be invalidated at different points. This commit moves the cache for modules from external units into the 'UnitState' type, which keeps the cache correct whenever package flags or package databases change (setSessionDynFlags, :set -package ..., Backpack's addUnit). This also makes it easier to clear the cache of home modules, as they are now stored separately (obviating the 'isUnitEnvInstalledModule' check we used to perform). - - - - - 605fbb96 by sheaf at 2026-10-26T18:19:11-04:00 Add known home modules to the finder cache The finder looks in the file system for the on-disk source that corresponds to a Haskell module name. There are two kinds of modules where we need to bypass this search: - a file passed directly in the command line, which may not be in any search path and whose module name may differ from the file name; - Backpack signatures and modules, which do not exist as files at all. This commit handles these two situations by adding an immutable 'KnownHomeModules' in the finder cache, which is always consulted first before doing any search. This removes the ad-hoc imperative logic which relied on mutating the finder cache at careful points. 'setModuleGraph' now also takes the known home modules, so that the module graph and the known home modules are always set consistently. See Note [Known home modules] in GHC.Unit.Finder.Types. - - - - - 82718f44 by sheaf at 2026-10-26T18:19:11-04:00 Make 'UnresolvedImport' into a suitable cache key The goal of this commit is to make 'UnresolvedImport' suitable for use as a cache key. Specifically, during downsweep we want to be able to cache module resolution queries. We want to do this using some kind of map, e.g. (roughly speaking): Map UnresolvedImport ResolvedImport For this to work, 'UnresolvedImport' must contain **precisely** the input data to each resolution computation. In other words: 1. If something changes that materially affects resolution, it must be stored in the cache key. 2. If changing some input does not materially affect the outcome, then it must not be stored in the cache key. To satisfy (1), we change 'UnitNode' to also keep track of the home unit in whose unit state the unit's dependencies were looked up. For (2), 'ImportResolution' now stores a 'ModuleLookupScope' instead of an 'UnresolvedImportOrigin'. Plugin imports are expressed with a new 'LookupPlugin' scope. The source location of an import, which is immaterial to the resolution, is stored out of band outside 'UnresolvedImport', in 'ModSummary'. - - - - - d4635c7c by sheaf at 2026-10-26T18:19:11-04:00 Add GHC.Data.Dependent This commit adds a minimal implementation of dependent sums ('Some', 'DSum') and dependent maps ('DMap'). The implementation is not entirely performance optimal, as there are a few extraneous allocations compared to the full-blown implementation in the 'dependent-map' package. For our use case (caching downsweep computations), this does not matter much. See GHC.Data.Dependent. - - - - - 6759533e by sheaf at 2026-10-26T18:19:11-04:00 Driver: structured concurrent worker abstraction This commit introduces a structured concurrency framework in the style of the 'ki' library: a collection of threads within a scope. We implement two kinds of concurrent workers on top of this framework: - Independent workers cannot wait for one another at all. The only scheduling operation is to wait for quiescence. - Coordinating workers declare an STM readiness condition (waiting on other workers to complete) which gates their start. See Note [Deterministic concurrent workers] in GHC.Driver.Concurrency. This commit ports upsweep to this new framework, with downsweep being left as subsequent work. Further changes along the way: - Refactoring of how concurrency is acquired to avoid the footgun of trying to use a no-op 'AbstractSem' as a lock in the serial case. - The "re-run with -j1" logic for semaphore opening errors no longer triggers on late semaphore failures (part-way through a lengthy computation). - Logger threads are properly cleaned up on exception, with each concurrent worker's log queue and local TmpFs properly bracketed. - The 'GhcMessage -> AnyGhcDiagnostic' and 'Maybe Messager' arguments of 'depanalE', 'depanalPartial' and 'downsweep', which were all dead in practice, have been dropped. - Concurrent logging has been completely overhauled. Each worker has its own log queue. Workers whose logs are printed as we go are spawned in the order in which their logs must be printed, now using a TQueue instead of the old complicated LogQueueQueue mechanism. 'logThread' is replaced by 'withLogPrinter', which runs the thread that prints the log queues within a concurrent worker scope. These changes allow us to fix issues with the exception handling: we now always flush remaining log queues before exiting (even when the action throws an exception), and exceptions that arise while printing are properly rethrown. This fixes #28009. - - - - - 38a99006 by sheaf at 2026-10-26T18:19:11-04: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. The rules are run by "GHC.Driver.Concurrency.runRules" in a demand-driven way: each worker can demand other workers to run, but never wait on another worker. Every piece of work is done at most once. Fixes #27514 Memory usage can increase due to doing more work concurrently: ------------------------- Metric Increase: MultiComponentModulesRecomp MultiComponentModulesRecomp100 mhu-perf ------------------------- - - - - - 9fa7b7be by sheaf at 2026-10-26T18:19:11-04:00 Acquire/release semaphore tokens more readily This commit reworks GHC.Driver.MakeSem to use the scoped worker abstraction of GHC.Utils.Concurrent.Scope. This allows us to get rid of a lot of the tricky logic in GHC.Driver.MakeSem involving manual exception handling, thread spawning and lifetime management, etc. The main user-visible change is that token acquisition is no longer rate limited (due to a bug, there previously was a 1s rate limit on acquisition of semaphore tokens), with the release debounce period shortened from 1s to 10ms. Other changes: - With -jsem, the number of capabilities is now capped at the number of processors, bringing it in line with the -jN behaviour. - Pending jobs whose wait for a token is interrupted by an exception are now withdrawn from the jobserver, instead of acquiring a token that it hung onto without doing useful work. Fixes #27763 - - - - - c83c6733 by Alan Zimmerman at 2026-10-26T18:19:55-04:00 EPA: Update AnnClsInstDecl to contain AnnList It was already separately tracking the '{', '}' and leading ';' values. This aligns it with layout-introducing parser productions ('vocurly'), so the layout processing can be handled uniformly - - - - - 452c765b by David Eichmann at 2026-10-27T15:51:43+05:30 testsuite: Fix python type errors These errors appear when using the VSCode python extension which uses Pylance under the hood. - - - - - 994a3f61 by David Eichmann at 2026-10-27T15:51:43+05:30 Add test modifier to test over all IO Managers - - - - - 221 changed files: - + changelog.d/25850 - + changelog.d/27368 - + changelog.d/27971 - + changelog.d/28012 - + changelog.d/T27763 - + changelog.d/monad-of-no-return-canonical - + changelog.d/parallel-downsweep - + changelog.d/resizeMutableByteArray-pinnedness - compiler/GHC.hs - compiler/GHC/Builtin.hs - compiler/GHC/Builtin/primops.txt.pp - compiler/GHC/ByteCode/Asm.hs - compiler/GHC/Cmm/CommonBlockElim.hs - compiler/GHC/CmmToAsm/CFG/Dominators.hs - compiler/GHC/CmmToLlvm/CodeGen.hs - + compiler/GHC/Data/Dependent.hs - compiler/GHC/Data/FastString.hs - compiler/GHC/Data/OrdList.hs - compiler/GHC/Data/Pair.hs - compiler/GHC/Data/Word64Map/Internal.hs - compiler/GHC/Data/Word64Set/Internal.hs - compiler/GHC/Driver/Backpack.hs - compiler/GHC/Driver/CmdLine.hs - + compiler/GHC/Driver/Concurrency.hs - + compiler/GHC/Driver/Config/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/Flags.hs - compiler/GHC/Driver/Main/Passes.hs - compiler/GHC/Driver/Make.hs - compiler/GHC/Driver/MakeAction.hs - compiler/GHC/Driver/MakeFile.hs - compiler/GHC/Driver/MakeSem.hs - compiler/GHC/Driver/Pipeline/Execute.hs - compiler/GHC/Driver/Pipeline/LogQueue.hs - compiler/GHC/Driver/Session.hs - compiler/GHC/Hs/Decls.hs - compiler/GHC/Hs/Dump.hs - compiler/GHC/HsToCore/Pmc/Types.hs - compiler/GHC/Iface/Load.hs - compiler/GHC/Iface/Recomp.hs - compiler/GHC/Iface/Type.hs - compiler/GHC/JS/Opt/Simple.hs - compiler/GHC/Linker/Deps.hs - compiler/GHC/Parser.y - compiler/GHC/Parser/Header.hs - compiler/GHC/Rename/Env.hs - compiler/GHC/Rename/Module.hs - compiler/GHC/Runtime/Interpreter/JS.hs - compiler/GHC/Runtime/Loader.hs - compiler/GHC/StgToCmm/Prim.hs - compiler/GHC/StgToJS/Linker/Linker.hs - compiler/GHC/StgToJS/Prim.hs - compiler/GHC/Tc/Deriv/Generate.hs - compiler/GHC/Tc/Errors/Ppr.hs - compiler/GHC/Tc/Errors/Types.hs - compiler/GHC/Tc/Gen/App.hs - compiler/GHC/Tc/Gen/Splice.hs - compiler/GHC/Tc/Module.hs - compiler/GHC/Tc/Plugin.hs - compiler/GHC/Tc/Solver/Monad.hs - compiler/GHC/Tc/Types/Constraint.hs - compiler/GHC/Tc/Utils/Backpack.hs - compiler/GHC/Tc/Utils/TcMType.hs - compiler/GHC/ThToHs.hs - compiler/GHC/Types/Basic.hs - compiler/GHC/Types/Error/Codes.hs - compiler/GHC/Types/Hint.hs - compiler/GHC/Types/Hint/Ppr.hs - compiler/GHC/Types/Unique/FM.hs - compiler/GHC/Types/Unique/Map.hs - compiler/GHC/Types/UnresolvedImport.hs - compiler/GHC/Unit/External/ModuleOrigin.hs - compiler/GHC/Unit/External/Visibility.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/Module/WholeCoreBindings.hs - compiler/GHC/Unit/State.hs - compiler/GHC/Unit/Types.hs - + compiler/GHC/Utils/Concurrent/Scope.hs - compiler/GHC/Utils/Monad/Codensity.hs - compiler/GHC/Utils/Ppr/Colour.hs - compiler/GHC/Utils/TmpFs.hs - compiler/ghc.cabal.in - docs/users_guide/using-warnings.rst - ghc/GHCi/UI.hs - ghc/Main.hs - ghc/ghc-bin.cabal.in - hadrian/src/Hadrian/Haskell/Cabal/Parse.hs - hadrian/src/Hadrian/Haskell/Cabal/Type.hs - hadrian/src/Main.hs - hadrian/src/Rules/Documentation.hs - hadrian/src/Rules/Selftest.hs - hadrian/src/Settings/Warnings.hs - libraries/base/src/GHC/Base.hs - libraries/base/src/GHC/Exts.hs - + libraries/base/tests/IO/T27971.hs - + libraries/base/tests/IO/T27971.stdout - libraries/base/tests/IO/all.T - libraries/ghc-internal/ghc-internal.cabal.in - libraries/ghc-internal/src/GHC/Internal/Base.hs - libraries/ghc-internal/src/GHC/Internal/Event/Windows.hsc - libraries/ghc-internal/src/GHC/Internal/Event/Windows/FFI.hsc - libraries/ghc-internal/src/GHC/Internal/IO/Windows/Handle.hsc - linters/lint-codes/LintCodes/Static.hs - rts/PrimOps.cmm - rts/RtsSymbols.c - rts/RtsUtils.c - rts/include/stg/MiscClosures.h - rts/js/environment.js - testsuite/config/ghc - testsuite/driver/runtests.py - testsuite/driver/testglobals.py - testsuite/driver/testlib.py - testsuite/driver/testutil.py - testsuite/tests/ado/ado-optimal.hs - testsuite/tests/ado/ado001.hs - + testsuite/tests/codeGen/should_compile/T27368.hs - testsuite/tests/codeGen/should_compile/all.T - testsuite/tests/concurrent/T13615/Parallel.hs - testsuite/tests/concurrent/should_run/T21651.hs - testsuite/tests/concurrent/should_run/setnumcapabilities001.hs - testsuite/tests/count-deps/CountDepsParser.stdout - testsuite/tests/cpranal/should_run/T20598a.hs - testsuite/tests/deriving/should_compile/T13758.hs - testsuite/tests/deriving/should_run/all.T - + testsuite/tests/deriving/should_run/drvrun-canonical-methods.hs - + testsuite/tests/deriving/should_run/drvrun-canonical-methods.stderr - + testsuite/tests/deriving/should_run/drvrun-canonical-methods.stdout - testsuite/tests/determinism/determ017/A.hs - testsuite/tests/diagnostic-codes/codes.stdout - testsuite/tests/dmdanal/should_compile/T9208.hs - testsuite/tests/driver/Makefile - 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/driver/T28009.hs - testsuite/tests/driver/all.T - testsuite/tests/generics/T27245.hs - testsuite/tests/generics/T27245.stdout - 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/ghci.debugger/scripts/T14628.stderr - testsuite/tests/haddock/perf/Fold.hs - testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr - testsuite/tests/hiefile/should_compile/hie002.hs - testsuite/tests/hpc/raytrace/Eval.hs - testsuite/tests/indexed-types/should_compile/T3787.hs - testsuite/tests/indexed-types/should_fail/T7729.hs - testsuite/tests/indexed-types/should_fail/T7729a.hs - testsuite/tests/interface-stability/ghc-experimental-exports.stdout - testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32 - testsuite/tests/interface-stability/ghc-prim-exports.stdout - testsuite/tests/interface-stability/ghc-prim-exports.stdout-mingw32 - testsuite/tests/module/mod133.hs - testsuite/tests/parser/should_compile/DumpParsedAst.stderr - testsuite/tests/parser/should_compile/DumpRenamedAst.stderr - testsuite/tests/parser/should_compile/KindSigs.stderr - testsuite/tests/perf/compiler/T13253.hs - testsuite/tests/perf/compiler/T14683.hs - testsuite/tests/perf/compiler/T16473.hs - testsuite/tests/perf/compiler/T18730_A.hs - testsuite/tests/perf/compiler/T25723.hs - testsuite/tests/plugins/defaulting-plugin/DefaultLifted.hs - testsuite/tests/pmcheck/should_compile/T11276.hs - + testsuite/tests/primops/should_run/ResizeByteArrayPinnedness.hs - + testsuite/tests/primops/should_run/ResizeByteArrayPinnedness.stdout - testsuite/tests/primops/should_run/all.T - testsuite/tests/printer/Test24533.stdout - testsuite/tests/profiling/should_compile/T19894/StreamK.hs - testsuite/tests/profiling/should_run/T3001-2.hs - testsuite/tests/programs/galois_raytrace/Eval.hs - testsuite/tests/rebindable/rebindable2.hs - + testsuite/tests/rename/should_fail/Noncanonical.hs - + testsuite/tests/rename/should_fail/Noncanonical.stderr - testsuite/tests/rename/should_fail/all.T - testsuite/tests/rename/should_fail/rnfail026.hs - + testsuite/tests/rts/T27526.hs - + testsuite/tests/rts/T27526.stdout - + testsuite/tests/rts/T28012.hs - + testsuite/tests/rts/T28012.stdout - testsuite/tests/rts/all.T - testsuite/tests/rts/ipe/IpeStats/Fold.hs - testsuite/tests/simplCore/should_compile/T14908_Deps.hs - testsuite/tests/simplCore/should_compile/simpl017.hs - testsuite/tests/splice-imports/SI35.hs - testsuite/tests/typecheck/should_compile/DeepSubsumption02.hs - testsuite/tests/typecheck/should_compile/T4524.hs - testsuite/tests/typecheck/should_compile/T4969.hs - testsuite/tests/typecheck/should_fail/T22707.hs - testsuite/tests/typecheck/should_fail/T22707.stderr - testsuite/tests/typecheck/should_fail/T25950.stderr - testsuite/tests/typecheck/should_fail/T7019.hs - testsuite/tests/typecheck/should_fail/T8450.stderr - testsuite/tests/typecheck/should_fail/T8603.hs - + testsuite/tests/warnings/should_compile/RedundantCanonicalMethods.hs - + testsuite/tests/warnings/should_compile/RedundantCanonicalMethods.stderr - testsuite/tests/warnings/should_compile/WarnNoncanonical.hs - testsuite/tests/warnings/should_compile/WarnNoncanonical.stderr - testsuite/tests/warnings/should_compile/all.T - utils/check-exact/ExactPrint.hs - utils/check-ppr/Main.hs - utils/haddock/haddock-api/haddock-api.cabal - utils/haddock/haddock-api/src/Haddock/Convert.hs - utils/haddock/haddock-api/src/Haddock/Interface.hs - utils/haddock/haddock-api/src/Haddock/Interface/ParseModuleHeader.hs - utils/haddock/haddock-api/src/Haddock/Types.hs - utils/haddock/haddock-api/src/Haddock/Utils/Json.hs - utils/haddock/haddock-library/haddock-library.cabal - utils/haddock/haddock.cabal - utils/runghc/Main.hs The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/6fe4ea9ff143ae0826864f098879162... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/6fe4ea9ff143ae0826864f098879162... 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