Zubin pushed to branch wip/9.14.2-rc2 at Glasgow Haskell Compiler / GHC Commits: 9e6272cb by Zubin Duggal at 2026-09-15T13:12:45+05:30 Prepare 9.14.2-rc2 ------------------------- Metric Decrease: T4029 ------------------------- - - - - - 24 changed files: - − changelog.d/27626 - − changelog.d/27627 - − changelog.d/27703 - − changelog.d/27704 - − changelog.d/27717 - − changelog.d/T26423 - − changelog.d/T26716 - − changelog.d/T27202 - − changelog.d/T27308 - − changelog.d/T27314.md - − changelog.d/T27360 - − changelog.d/T27440 - − changelog.d/T27455 - − changelog.d/T27583 - − changelog.d/T27586 - − changelog.d/T27639 - − changelog.d/T27657 - − changelog.d/T27705 - − changelog.d/arm_ncg_fixes_T27430 - − changelog.d/fix-parallel-gc-selector-race-27477 - − changelog.d/llvm-23 - − changelog.d/unit-index - docs/users_guide/9.14.2-notes.rst - libraries/base/changelog.md Changes: ===================================== changelog.d/27626 deleted ===================================== @@ -1,5 +0,0 @@ -section: compiler -synopsis: Fix a bug where an argument used only by a function's stable unfolding - could still be marked absent, resulting in a runtime crash. -mrs: !16503 -issues: #27626 ===================================== changelog.d/27627 deleted ===================================== @@ -1,5 +0,0 @@ -section: compiler -synopsis: Fix a bug where an absent constraint argument could be replaced by an - error thunk, which GHC then evaluated, crashing the program. -mrs: !16519 -issues: #27627 ===================================== changelog.d/27703 deleted ===================================== @@ -1,5 +0,0 @@ -section: compiler -synopsis: Fix a bug where the specialiser could drop an argument that the - function's stable unfolding still used, resulting in a runtime crash. -mrs: !16519 -issues: #27703 ===================================== changelog.d/27704 deleted ===================================== @@ -1,6 +0,0 @@ -section: compiler -synopsis: Fix a bug where a class declared abstractly in an hs-boot file was - assumed not to be unary, so GHC speculatively evaluated a dictionary that - could be bottom, crashing the program. -mrs: !16519 -issues: #27704 ===================================== changelog.d/27717 deleted ===================================== @@ -1,6 +0,0 @@ -section: compiler -synopsis: Fix a bug where -fspec-eval-dictfun could speculatively evaluate a - looping dictionary whose recursion went through an hs-boot import, hanging - the program. -mrs: !16519 -issues: #27717 ===================================== changelog.d/T26423 deleted ===================================== @@ -1,15 +0,0 @@ -section: compiler -synopsis: Introduce ``ExternalUnitDatabases`` and ``ExternalUnitDatabaseCache`` to cache unit databases. -issues: #26423 -mrs: !16115 - -description: { - Cache the ``UnitDatabase`` in memory in ``ExternalUnitDatabases`` to avoid constantly reading - the same ``UnitDatabase`` from disk with multiple home units. - - Allows to share the on-disk representation of ``UnitInfo`` across the whole ``UnitEnv``. - We cache a mutable version of ``ExternalUnitDatabases`` as ``ExternalUnitDatabaseCache`` - in ``UnitEnv``. - This allows us more easily to change the ``packageDBFlags`` and reading new package databases - from disk if required, but cache everything that has been read from disk before. -} ===================================== changelog.d/T26716 deleted ===================================== @@ -1,15 +0,0 @@ -section: rts -synopsis: Fix design of TSO blocking info, fixing a use-after-free bug -issues: #26716 #26717 -mrs: !15519 -description: { - Experimental work on ASAN support for GHC (MR !15168) revealed a - use-after-free bug when using the combination of the new poll I/O - manager with the compacting GC. The ultimate cause is that a TSO's - `block_info` (used by I/O managers and many other parts of the RTS) - is sometimes a GC pointer and sometimes not, but without a consistent - and easy-to-follow rule for when this is the case. The solution has - been to clean up and enforce that the TSO's `why_blocked` enumeration - is a proper tag for the `block_info`, and to use an encoding that - determines precisely when the `block_info` is a GC pointer or not. -} ===================================== changelog.d/T27202 deleted ===================================== @@ -1,13 +0,0 @@ -section: ghci -synopsis: Fix regression to honour module targets in nested directories into GHCi after startup. -issues: #27202 #27640 -mrs: !15980 !16591 - -description: { - Fix a regression that made it impossible to import modules using `:load <Mod>` and `:add <Mod>` after GHCi startup. - GHCi wasn't honouring the `-i<directory>` argument if given via `ghci -i<directory>`. - - Further, we fix a bug while setting up package database stacks for GHCi that was uncovered during this fix. - By underspecifying the version of dependencies, import modules from dependencies were ambiguous, even though - they shouldn't have been! -} ===================================== changelog.d/T27308 deleted ===================================== @@ -1,10 +0,0 @@ -section: compiler -synopsis: Drop `preloadClosure` from `UnitState` -issues: #27308 -mrs: !16108 - -description: { - Drop `preloadClosure` from `UnitState` as it is always set to the empty set. - This allows to simplify the `UnitState` and related functions. -} - ===================================== changelog.d/T27314.md deleted ===================================== @@ -1,10 +0,0 @@ -section: compiler -issues: #27314 -mrs: !16118 -synopsis: - Fix spurious ``-Wincomplete-uni-patterns`` warning under ``-finfo-table-map``. -description: - The pattern-match checker now ignores ticks when comparing scrutinees in - its CoreMap, so long-distance information is no longer lost across - function-application scrutinees because debug source annotations - (e.g. SourceNotes added by ``-finfo-table-map``) were inserted. ===================================== changelog.d/T27360 deleted ===================================== @@ -1,10 +0,0 @@ -section: compiler -issues: #27360 -mrs: !16161 -synopsis: - Recognise ``considerAccessible`` under ticks (``-g``, ``-finfo-table-map``, ``-fhpc`` etc) -description: - The pattern-match checker now properly recognises ``considerAccessible`` even - when it is surrounded by ticks (e.g. debug info ticks with ``-g``, with - ``-finfo-table-map``, etc). This ensures it works as advertised, suppressing - redundant pattern-match warnings, even when it occurs under a tick. ===================================== changelog.d/T27440 deleted ===================================== @@ -1,8 +0,0 @@ -section: compiler -issues: #27440 -mrs: !16434 -synopsis: - Fix a panic on ``@ty`` in a pattern synonym RHS -description: - An invisible type argument (``@ty``) in the right-hand side of an implicitly - bidirectional pattern synonym no longer causes a panic. ===================================== changelog.d/T27455 deleted ===================================== @@ -1,8 +0,0 @@ -section: base -issues: #27455 -mrs: !16274 -synopsis: - Don't drop `ExceptionContext` in `SomeException(toException)` -description: - Previously the implementation of ``Exception(toException)`` given to `SomeException` would inappropriately drop the carried `ExceptionContext`. Now ``toException = id``, faithfully implementing the semantics proposed in :ref:`CLC Proposal #200 <https://github.com/haskell/core-libraries-committee/issues/200>`. - ===================================== changelog.d/T27583 deleted ===================================== @@ -1,9 +0,0 @@ -section: compiler -issues: #27583 -mrs: !16434 -synopsis: - Fix spurious out-of-scope errors from ``type ty`` in a pattern synonym RHS -description: - A required type argument with an explicit namespace specifier (``type ty``) - in the right-hand side of an implicitly bidirectional pattern synonym no - longer reports variables bound by the pattern as out of scope. ===================================== changelog.d/T27586 deleted ===================================== @@ -1,9 +0,0 @@ -section: compiler -issues: #27586 -mrs: !16440 -synopsis: - Fix a panic on a required type argument in a pattern synonym RHS -description: - An argument of a pattern synonym that is matched against a required type - argument in the right-hand side no longer causes a panic; it is reported as - an illegal term-level use of a type variable. ===================================== changelog.d/T27639 deleted ===================================== @@ -1,10 +0,0 @@ -section: compiler -issues: #27639 -mrs: !16474 -synopsis: - Stop representation-polymorphism checks from producing a coercion that fails - Core Lint. -description: - The representation-polymorphism check that is done when subsumption performs - eta-expansion now composes the coercions it builds in the correct order, - avoiding a Core Lint failure. ===================================== changelog.d/T27657 deleted ===================================== @@ -1,9 +0,0 @@ -section: base -issues: #27657 -mrs: !16508 -synopsis: - Fix ``retry`` and async exception delivery inside a ``catchSTM`` handler -description: - ``catchSTM``\'s ``WhileHandling`` annotation used ``catch#``, leaving an IO - ``CATCH_FRAME`` inside the transaction. Use ``catchSTM#``, which is the - correct way to catch exceptions inside STM. ===================================== changelog.d/T27705 deleted ===================================== @@ -1,5 +0,0 @@ -section: compiler -synopsis: Fixed an issue that caused the specializer to sometimes loop on recursive dictionary superclasses. -issues: #27705 -mrs: !16559 - ===================================== changelog.d/arm_ncg_fixes_T27430 deleted ===================================== @@ -1,18 +0,0 @@ -section: compiler -issues: #27430 #27539 #27538 #27537 #27550 #27565 #27533 -mrs: !16255 -synopsis: - A series of fixes to the ARM64 ncg, related to handling of primitive - 8/16bit types and simd. -description: - A series of related fixes to the ncg fixing: - - Fixed sign extension for subword values returned from unsafe ffi calls. - Clarify and lint for invalid conversions of int8/int16 -> float/double conversions. - Fix incorrect clobbering of local variables when comparing signed subword values. - Fix incorrect use of 32bit reads/stores for 8/16bit wide reads/stores. - Fix zero extension on function entry if arguments are passed at word-width - but used at subword-widths. - Fix broadcast# for non-literal arguments (arm64 only). - Fix rare assembler errors caused by overflowing literals, by properly checking - whether a constant is a viable immediate argument. ===================================== changelog.d/fix-parallel-gc-selector-race-27477 deleted ===================================== @@ -1,10 +0,0 @@ -section: rts -synopsis: Fix a parallel GC race on weakly-ordered architectures (AArch64) that could crash or silently corrupt the heap -description: - On weakly-ordered architectures such as AArch64 programs using - could crash during parallel garbage collection (segmentation fault - or ``internal error: eval_thunk_selector: strange selectee <n>``) or - continue running with silently corrupted heap data, due to a missing - memory barrier in the parallel GC. -mrs: !16488 -issues: #27477 ===================================== changelog.d/llvm-23 deleted ===================================== @@ -1,4 +0,0 @@ -section: llvm-backend -synopsis: Bump LlvmMaxVersion to support LLVM 23.x releases. -issues: #27764 -mrs: !16617 ===================================== changelog.d/unit-index deleted ===================================== @@ -1,14 +0,0 @@ -section: compiler -synopsis: Use global ``UnitIndex`` to deduplicate ``UnitInfo``s over multiple home units -issues: #27500 #26423 #27748 -mrs: !16115 !16598 - -description: { - The ``UnitState`` used to be duplicated for all ``HomeUnitEnv``, not sharing any of the ``UnitInfo``s. - This can lead to excessive memory usage with multiple home units and large package databases. - - Our solution to this problem is deduplicating ``UnitInfo``s globally across the whole ``UnitEnv``. - We store this information in the ``UnitIndex`` which contains data global to all ``UnitState``s. - All processed ``UnitInfo``s and the ``WiredMap`` are stored in there, and in the future, we might - move more fields from ``UnitState`` to ``UnitIndex``. -} ===================================== docs/users_guide/9.14.2-notes.rst ===================================== @@ -87,13 +87,30 @@ Compiler - Make the order of usages deterministic (:ghc-ticket:`26877`) - Fix the interaction of ExplicitLevelImports with qualified imports (:ghc-ticket:`26616`, :ghc-ticket:`27385`) - Rename ZonkAny to UnusedType and add pretty printing logic for it (:ghc-ticket:`27390`) +- Cache unit databases and use a global ``UnitIndex`` to deduplicate + ``UnitInfo``\s across multiple home units, reducing memory usage + (:ghc-ticket:`26423`, :ghc-ticket:`27500`, :ghc-ticket:`27748`) +- Drop ``preloadClosure`` from ``UnitState`` (:ghc-ticket:`27308`) +- Fix a bug where an argument used only by a function's stable unfolding could still be marked absent, resulting in a runtime crash. (:ghc-ticket:`27626`) +- Fix a bug where an absent constraint argument could be replaced by an error thunk, which GHC then evaluated, crashing the program. (:ghc-ticket:`27627`) +- Fix a bug where the specialiser could drop an argument that the function's stable unfolding still used, resulting in a runtime crash. (:ghc-ticket:`27703`) +- Fix a bug where a class declared abstractly in an hs-boot file was assumed not to be unary, so GHC speculatively evaluated a dictionary that could be bottom, crashing the program. (:ghc-ticket:`27704`) +- Fix a bug where ``-fspec-eval-dictfun`` could speculatively evaluate a looping dictionary whose recursion went through an hs-boot import, hanging the program. (:ghc-ticket:`27717`) +- Fix a panic on ``@ty`` in a pattern synonym RHS (:ghc-ticket:`27440`) +- Fix spurious out-of-scope errors from ``type ty`` in a pattern synonym RHS (:ghc-ticket:`27583`) +- Fix a panic on a required type argument in a pattern synonym RHS (:ghc-ticket:`27586`) +- Stop representation-polymorphism checks from producing a coercion that fails Core Lint. (:ghc-ticket:`27639`) +- Fixed an issue that caused the specializer to sometimes loop on recursive dictionary superclasses. (:ghc-ticket:`27705`) +- Bumped the maximum supported LLVM version to 23 (:ghc-ticket:`27764`) +- Recognise ``considerAccessible`` under ticks (``-g``, ``-finfo-table-map``, ``-fhpc`` etc) (:ghc-ticket:`27360`) +- Fix spurious ``-Wincomplete-uni-patterns`` warning under ``-finfo-table-map``. (:ghc-ticket:`27314`) GHCi ~~~~ - Added the ``-fimport-loaded-targets`` flag, which automatically imports all loaded targets into the GHCi session (:ghc-ticket:`26866`) - Added support for custom external interpreter commands, allowing GHC API clients to extend the external interpreter with their own message handlers (:ghc-ticket:`26652`) -- Fix regression to allow loading modules into the GHCi after startup (:ghc-ticket:`27202`) +- Fix regression to allow loading modules into the GHCi after startup (:ghc-ticket:`27202`, :ghc-ticket:`27640`) - Fixed the GHCi prompt and session home units to use a consistent package database stack, avoiding spurious ambiguous-import errors for home unit dependencies (:ghc-ticket:`27202`) - Fixed the order in which ``:info`` lists instances, which previously depended on the order in which interface files happened to be loaded (:ghc-ticket:`27532`) @@ -128,6 +145,9 @@ Runtime System - Fix several black hole handling bugs that could lead to deadlocks or crashes in multithreaded programs. These could show up as the program hanging or "END_TSO_QUEUE object entered" errors (:ghc-ticket:`26922`, :ghc-ticket:`26936`) - Rethrow exceptions in overlapped IO when using the WinIO IO manager (:ghc-ticket:`27283`) - Fix "unknown/strange object 24 crash" in compacting GC (:ghc-ticket:`27434`) +- Fix a possible use-after-free bug with TSOs (:ghc-ticket:`26716`, :ghc-ticket:`26717`) +- Fix a parallel GC race on weakly-ordered architectures (AArch64) that could crash or silently corrupt the heap (:ghc-ticket:`27477`) +- Fix stack corruption when returning large unboxed tuples in GHCi (:ghc-ticket:`27633`) Code Generation ~~~~~~~~~~~~~~~ @@ -139,6 +159,10 @@ Code Generation - Fix module finalizers on multiple platforms (:ghc-ticket:`27072`) - Fix miscompiled %load_relaxed primop, add missing %store_relaxed (:ghc-ticket:`27483`) - Fix redundant AP thunk codegen when not using -ticky-ap-thunk (:ghc-ticket:`27502`) +- A number of fixes to the ARM64 ncg, fixing a number of bugs, including + incorrect runtime results when using subword operations + (:ghc-ticket:`27430`, :ghc-ticket:`27539`, :ghc-ticket:`27538`, + :ghc-ticket:`27537`, :ghc-ticket:`27550`, :ghc-ticket:`27533`) Bytecode Compiler ~~~~~~~~~~~~~~~~~ @@ -151,6 +175,8 @@ Bytecode Compiler ~~~~~~~~~~~~~~~~ - Added ``@since`` annotation to ``System.Info.fullCompilerVersion`` (:ghc-ticket:`26973`) +- Don't drop ``ExceptionContext`` in ``SomeException(toException)`` (:ghc-ticket:`27455`) +- Fix ``retry`` and async exception delivery inside a ``catchSTM`` handler (:ghc-ticket:`27657`) ``ghc-heap`` library ~~~~~~~~~~~~~~~~~~~~ ===================================== libraries/base/changelog.md ===================================== @@ -8,6 +8,7 @@ * Hide implementation details of `throw` and `throwSTM` from exception stack traces ([CLC proposal #387](https://github.com/haskell/core-libraries-committee/issues/387), [#26808](https://gitlab.haskell.org/ghc/ghc/-/issues/26808)) * GHC internals re-exported from `GHC.Num` have been deprecated and will be removed after one major release ([CLC proposal #360](https://github.com/haskell/core-libraries-committee/issues/360)) * The implementation of `toException` in `SomeException`'s `Exception` instance no longer drops exception context, in keeping with the behavior originally proposed in [CLC Proposal #200](https://github.com/haskell/core-libraries-committee/issues/200). + * Fix `retry` and async exception delivery inside a `catchSTM` handler ([#27657](https://gitlab.haskell.org/ghc/ghc/-/issues/27657)) ## 4.22.0.0 *December 2025* * Shipped with GHC 9.14.1 View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/9e6272cb9980ec4d3bc2fa8f04a2ecb5... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/9e6272cb9980ec4d3bc2fa8f04a2ecb5... 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)
-
Zubin (@wz1000)