Alan Zimmerman pushed to branch wip/az/exactprint-annotation-rationalisation at Glasgow Haskell Compiler / GHC Commits: f6d30767 by Wolfgang Jeltsch at 2026-06-16T15:32:34-04:00 Fix two issues in the documentation of pipeline interruption One issue is a typo (“interreuptible”), the other one the lack of an end of a sentence, which has been reconstructed from the message of 633bbc1fd4762a2bb73ba1c5b9e0c279f1dd3c40, the commit that introduced said documentation. - - - - - a3fa10e0 by Christian Georgii at 2026-06-16T15:33:26-04:00 Find plugins in sibling home units in multiple-home-unit sessions In a multiple-home-unit session (e.g. `cabal repl --enable-multi-repl` or HLS), enabling a plugin with -fplugin that is defined in (or reexported by) another home unit failed with a "hidden package" error. The plugin module finder only searched the current home unit and the registered external packages, never the sibling home units. findPluginModuleNoHsc now searches the home units that the current home unit depends on, following module reexports and respecting hidden modules, exactly as ordinary import resolution does in findImportedModuleNoHsc. To avoid two divergent copies of this logic, the shared home-unit search (the current home unit first, then its dependencies in priority order, with the accompanying ordering invariant) is extracted into findHomeModuleAmongDeps, which both findImportedModuleNoHsc and findPluginModuleNoHsc now call. Add testsuite/tests/driver/multipleHomeUnits/plugin01, which loads a plugin as byte-code from a sibling home unit, and plugin02, in which the consumer enables a plugin reexported by a sibling home unit without depending on the plugin's own home unit directly. Fixes #27349 - - - - - d216412b by Ian-Woo Kim at 2026-06-16T20:25:57-04:00 Make the order of usages deterministic It has been observed that the ordering of usages can be non-determinstic in parallel builds. Therefore, this contribution introduces sorting of usages based on a platform- and race-independent sorting criterion. Resolves #26877. Co-authored-by: Wolfgang Jeltsch <wolfgang@well-typed.com> - - - - - 8e1cc105 by Wolfgang Jeltsch at 2026-06-16T20:25:57-04:00 Change the descriptions of two existing changelog entries The descriptions now describe the changes in a user-friendly manner, as opposed to describing the contributions that led to these changes in a developer-friendly manner. - - - - - 636c1c7a by Ian Duncan at 2026-06-16T20:26:50-04:00 AArch64: use SXTH, not SXTW, for W32 signExtendReg signExtendReg was using SXTH (sign-extend halfword, 16-bit) for W32-to-W64 sign extension. This should be SXTW (sign-extend word, 32-bit). SXTH only sign-extends the lower 16 bits, producing wrong results for 32-bit values whose bit 15 differs from bit 31. Other fixes: - At sub-W64, code gen for MO_S_Mul2 should use W32 registers for SMULL source operands as per the ARM spec (SMULL Xd, Wn, Wm), and not W64. - Ensure signExtendReg uses the source width for the source operand in SXTW/SXTH/SXTB instructions. GNU as requires sxtw Xd,Wn (not sxtw Xd,Xn), while LLVM's integrated assembler on macOS is lenient. - Fix overflow flag computation for `MO_S_Mul2`. The overflow bit was exactly inverted for sub-W64 operands. Fixes #26978 and #27047 - - - - - b734c75d by Igor Ranieri at 2026-06-16T20:27:32-04:00 haddock: Update CONTRIBUTING with missing step, add missing test dependency - - - - - 7fe4f2ec by Luite Stegeman at 2026-06-17T05:35:09-04:00 tag inference: don't confuse functions with their return values inferTagRhs was mixing up taggedness for closures and return values for function closures. We really shouldn't assign TagTuple to a properly tagged function returning a tuple. We fix this by keeping track of functions (TagFun) separately from values (TagVal) and keeping track of their return value. TagFun is also used for join points. fixes #27005 - - - - - 4671c126 by Sebastian Graf at 2026-06-17T05:35:55-04:00 Seed the simplifier's in-scope set for open expressions simplifyExpr simplifies expressions typed at the GHCi prompt and the results of Template Haskell splices. Such an expression may be open: at a GHCi debugger breakpoint its free variables include RuntimeUnk skolems standing for as-yet-unknown types. The simplifier began with an in-scope set holding only the wildcard binder, so when it instantiated the unsafeCoerce# wrapper that GHCi builds around a result, it formed a substitution whose range mentioned a free skolem that was not in scope. That breaks the substitution invariant and, in a compiler built with assertions, trips substTy's sanity check. Seed the initial in-scope set with the free variables of the expression. For a closed expression this adds nothing. See Note [Seed the in-scope set for open expressions]. Fixes #17833 and its duplicate #21118. - - - - - b8dce002 by Alan Zimmerman at 2026-06-17T18:24:31+01:00 TTG: Add extension points to HsConDetails Extend HsConDetails as data HsConDetails p arg rec = PrefixCon !(XPrefixCon p) [arg] -- C @t1 @t2 p1 p2 p3 | RecCon !(XRecCon p) rec -- C { x = p1, y = p2 } | InfixCon !(XInfixCon p) arg arg -- p1 `C` p2 | XHsConDetails !(XXHsConDetails p) type family XPrefixCon p type family XRecCon p type family XInfixCon p type family XXHsConDetails p - - - - - fbb27f9e by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA: remove LocatedLI / SrcSpanAnnLI These were used for module export lists, and import decl lists. Replace them with direct capture of the relevant EP Annotations in HsModule and ImportDecl annotation extension points. Also use the HsConDetails RecCon extension point to capture the braces in a record constructor - - - - - 0b9babb1 by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA: Remove LocatedC / SrcSpanAnnC Used for contexts - - - - - 99af4158 by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA: Harmonise HsQual/HsQualTy TTG extension annotations - - - - - 00c40c9a by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA Remove LocatedLC / LocatedLS LocatedLC/LocatedLS were unused - - - - - 73b8dc27 by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA: Remove LocatedLW from LStmtLR - - - - - 54f76608 by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA: Remove LocatedLW from MatchGroup This is the last usage of LocatedLW / SrcSpanAnnLW - - - - - 00b02979 by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA: Move the 'where' annotation for PatSynBind This allows us to move it out of the MatchGroup exact print annotation too - - - - - c930ad27 by Alan Zimmerman at 2026-06-17T18:24:31+01:00 EPA: Replace AnnListItem with simply [TrailingAnn] Remove the unnecessary wrapper around a single field. - - - - - c8303cbb by Alan Zimmerman at 2026-06-17T23:17:06+01:00 Keep binds and sigs together in HsValBindsLR TBD - - - - - 164 changed files: - .gitlab-ci.yml - + changelog.d/T17833 - + changelog.d/T26978 - + changelog.d/T27047 - + changelog.d/deterministic-usage-order - + changelog.d/fix-plugin-finder-multi-home-unit.md - changelog.d/module-graph-reuse-in-downsweep - changelog.d/more-efficient-home-unit-imports-finding - + changelog.d/tag-inference-27005 - compiler/GHC/CmmToAsm/AArch64/CodeGen.hs - compiler/GHC/CmmToAsm/AArch64/Instr.hs - compiler/GHC/CmmToAsm/AArch64/Ppr.hs - compiler/GHC/Core/Opt/Simplify.hs - compiler/GHC/Core/Utils.hs - compiler/GHC/Data/BooleanFormula.hs - compiler/GHC/Hs.hs - compiler/GHC/Hs/Binds.hs - compiler/GHC/Hs/Decls.hs - compiler/GHC/Hs/Dump.hs - compiler/GHC/Hs/Expr.hs - compiler/GHC/Hs/ImpExp.hs - compiler/GHC/Hs/Instances.hs - compiler/GHC/Hs/Pat.hs - compiler/GHC/Hs/Stats.hs - compiler/GHC/Hs/Type.hs - compiler/GHC/Hs/Utils.hs - compiler/GHC/HsToCore/Docs.hs - compiler/GHC/HsToCore/Match.hs - compiler/GHC/HsToCore/Match/Constructor.hs - compiler/GHC/HsToCore/Pmc/Desugar.hs - compiler/GHC/HsToCore/Quote.hs - compiler/GHC/HsToCore/Ticks.hs - compiler/GHC/HsToCore/Usage.hs - compiler/GHC/Iface/Ext/Ast.hs - compiler/GHC/Parser.y - compiler/GHC/Parser/Annotation.hs - compiler/GHC/Parser/PostProcess.hs - compiler/GHC/Parser/PostProcess/Haddock.hs - compiler/GHC/Parser/Types.hs - compiler/GHC/Rename/Bind.hs - compiler/GHC/Rename/Expr.hs - compiler/GHC/Rename/HsType.hs - compiler/GHC/Rename/Module.hs - compiler/GHC/Rename/Names.hs - compiler/GHC/Rename/Pat.hs - compiler/GHC/Rename/Utils.hs - compiler/GHC/Stg/EnforceEpt.hs - compiler/GHC/Stg/EnforceEpt/Rewrite.hs - compiler/GHC/Stg/EnforceEpt/TagSig.hs - compiler/GHC/Stg/EnforceEpt/Types.hs - compiler/GHC/Tc/Deriv.hs - compiler/GHC/Tc/Deriv/Generate.hs - compiler/GHC/Tc/Gen/App.hs - compiler/GHC/Tc/Gen/Arrow.hs - compiler/GHC/Tc/Gen/Do.hs - compiler/GHC/Tc/Gen/Export.hs - compiler/GHC/Tc/Gen/Expr.hs - compiler/GHC/Tc/Gen/Head.hs - compiler/GHC/Tc/Gen/HsType.hs - compiler/GHC/Tc/Gen/Match.hs - compiler/GHC/Tc/Gen/Pat.hs - compiler/GHC/Tc/Gen/Sig.hs - compiler/GHC/Tc/Module.hs - compiler/GHC/Tc/TyCl.hs - compiler/GHC/Tc/TyCl/PatSyn.hs - compiler/GHC/Tc/TyCl/Utils.hs - compiler/GHC/Tc/Utils/Backpack.hs - compiler/GHC/Tc/Zonk/Type.hs - compiler/GHC/ThToHs.hs - compiler/GHC/Unit/Finder.hs - compiler/GHC/Unit/Module/Deps.hs - compiler/Language/Haskell/Syntax.hs - compiler/Language/Haskell/Syntax/Binds.hs - compiler/Language/Haskell/Syntax/Decls.hs - compiler/Language/Haskell/Syntax/Expr.hs - compiler/Language/Haskell/Syntax/Extension.hs - compiler/Language/Haskell/Syntax/ImpExp.hs - compiler/Language/Haskell/Syntax/Pat.hs - compiler/Language/Haskell/Syntax/Type.hs - ghc/GHCi/UI.hs - + testsuite/tests/codeGen/should_gen_asm/aarch64-sxth-mul2.asm - + testsuite/tests/codeGen/should_gen_asm/aarch64-sxth-mul2.cmm - + testsuite/tests/codeGen/should_gen_asm/aarch64-sxtw.asm - + testsuite/tests/codeGen/should_gen_asm/aarch64-sxtw.cmm - testsuite/tests/codeGen/should_gen_asm/all.T - + testsuite/tests/codeGen/should_run/aarch64-sxtw-cmm.cmm - + testsuite/tests/codeGen/should_run/aarch64-sxtw-run.hs - + testsuite/tests/codeGen/should_run/aarch64-sxtw-run.stdout - testsuite/tests/codeGen/should_run/all.T - testsuite/tests/core-to-stg/T14895.stderr - + testsuite/tests/driver/multipleHomeUnits/plugin01/all.T - + testsuite/tests/driver/multipleHomeUnits/plugin01/appunit - + testsuite/tests/driver/multipleHomeUnits/plugin01/p/MyPlugin.hs - + testsuite/tests/driver/multipleHomeUnits/plugin01/pluginunit - + testsuite/tests/driver/multipleHomeUnits/plugin01/q/App.hs - + testsuite/tests/driver/multipleHomeUnits/plugin02/all.T - + testsuite/tests/driver/multipleHomeUnits/plugin02/appunit - + testsuite/tests/driver/multipleHomeUnits/plugin02/p/MyPlugin.hs - + testsuite/tests/driver/multipleHomeUnits/plugin02/pluginunit - + testsuite/tests/driver/multipleHomeUnits/plugin02/q/App.hs - + testsuite/tests/driver/multipleHomeUnits/plugin02/r/RexLib.hs - + testsuite/tests/driver/multipleHomeUnits/plugin02/reexportunit - testsuite/tests/ghc-api/T25121_status.stdout - testsuite/tests/ghc-api/exactprint/T22919.stderr - testsuite/tests/ghc-api/exactprint/Test20239.stderr - testsuite/tests/ghc-api/exactprint/ZeroWidthSemi.stderr - testsuite/tests/ghci.debugger/scripts/all.T - testsuite/tests/haddock/should_compile_flag_haddock/T17544.stderr - testsuite/tests/haddock/should_compile_flag_haddock/T17544_kw.stderr - testsuite/tests/haddock/should_compile_flag_haddock/T24221.stderr - testsuite/tests/module/mod185.stderr - testsuite/tests/parser/should_compile/DumpParsedAst.stderr - testsuite/tests/parser/should_compile/DumpParsedAstComments.stderr - testsuite/tests/parser/should_compile/DumpRenamedAst.stderr - testsuite/tests/parser/should_compile/DumpSemis.stderr - testsuite/tests/parser/should_compile/DumpTypecheckedAst.stderr - testsuite/tests/parser/should_compile/KindSigs.stderr - testsuite/tests/parser/should_compile/T14189.stderr - testsuite/tests/parser/should_compile/T15279.stderr - testsuite/tests/parser/should_compile/T15323.stderr - testsuite/tests/parser/should_compile/T20452.stderr - testsuite/tests/parser/should_compile/T20718.stderr - testsuite/tests/parser/should_compile/T20718b.stderr - testsuite/tests/parser/should_compile/T20846.stderr - testsuite/tests/parser/should_compile/T23315/T23315.stderr - testsuite/tests/parser/should_compile/all.T - testsuite/tests/printer/AnnotationNoListTuplePuns.stdout - testsuite/tests/printer/Makefile - testsuite/tests/printer/T18791.stderr - testsuite/tests/printer/Test20297.stdout - testsuite/tests/printer/Test24533.stdout - testsuite/tests/simplCore/should_compile/T4201.stdout - + testsuite/tests/simplCore/should_run/T27005.hs - + testsuite/tests/simplCore/should_run/T27005.stdout - + testsuite/tests/simplCore/should_run/T27005_aux.hs - testsuite/tests/simplCore/should_run/all.T - testsuite/tests/simplStg/should_compile/T24806.hs - testsuite/tests/simplStg/should_compile/T24806.stderr - + testsuite/tests/simplStg/should_compile/T27005b.hs - + testsuite/tests/simplStg/should_compile/T27005b.stderr - testsuite/tests/simplStg/should_compile/all.T - testsuite/tests/simplStg/should_compile/inferTags004.hs - testsuite/tests/simplStg/should_compile/inferTags004.stderr - + testsuite/tests/simplStg/should_run/T27005a.hs - + testsuite/tests/simplStg/should_run/T27005a.stdout - testsuite/tests/simplStg/should_run/all.T - testsuite/tests/typecheck/should_compile/T15242.stderr - testsuite/tests/typecheck/should_compile/all.T - utils/check-exact/ExactPrint.hs - utils/check-exact/Main.hs - utils/check-exact/Transform.hs - utils/check-exact/Utils.hs - utils/haddock/CONTRIBUTING.md - utils/haddock/haddock-api/src/Haddock/Backends/Hoogle.hs - utils/haddock/haddock-api/src/Haddock/Backends/LaTeX.hs - utils/haddock/haddock-api/src/Haddock/Backends/Xhtml/Decl.hs - utils/haddock/haddock-api/src/Haddock/Convert.hs - utils/haddock/haddock-api/src/Haddock/GhcUtils.hs - utils/haddock/haddock-api/src/Haddock/Interface/Create.hs - utils/haddock/haddock-api/src/Haddock/Interface/LexParseRn.hs - utils/haddock/haddock-api/src/Haddock/Interface/Rename.hs - utils/haddock/haddock-api/src/Haddock/Interface/RenameType.hs - utils/haddock/haddock-api/src/Haddock/Types.hs - utils/haddock/haddock-test/haddock-test.cabal The diff was not included because it is too large. View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/140d9655c13c973476ad9d8b58bb343... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/140d9655c13c973476ad9d8b58bb343... You're receiving this email because of your account on gitlab.haskell.org.