[Git][ghc/ghc][wip/backports-9.12.4] Prepare release 9.12.4
Zubin pushed to branch wip/backports-9.12.4 at Glasgow Haskell Compiler / GHC Commits: a86f8f8d by Zubin Duggal at 2026-03-05T00:41:48+05:30 Prepare release 9.12.4 - - - - - 9 changed files: - configure.ac - + docs/users_guide/9.12.4-notes.rst - docs/users_guide/release-notes.rst - libraries/base/base.cabal.in - libraries/base/changelog.md - testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs - testsuite/tests/interface-stability/base-exports.stdout-mingw32 - testsuite/tests/interface-stability/base-exports.stdout-ws-32 - testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32 Changes: ===================================== configure.ac ===================================== @@ -22,7 +22,7 @@ AC_INIT([The Glorious Glasgow Haskell Compilation System], [9.12.3], [glasgow-ha AC_CONFIG_MACRO_DIRS([m4]) # Set this to YES for a released version, otherwise NO -: ${RELEASE=YES} +: ${RELEASE=NO} # The primary version (e.g. 7.5, 7.4.1) is set in the AC_INIT line # above. If this is not a released version, then we will append the ===================================== docs/users_guide/9.12.4-notes.rst ===================================== @@ -0,0 +1,154 @@ +.. _release-9-12-4: + +Version 9.12.4 +============== + +The significant changes to the various parts of the compiler are listed in the +following sections. See the `migration guide +https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.12`_ on the GHC Wiki +for specific guidance on migrating programs to this release. + +Compiler +~~~~~~~~ + +- Fixed a bug in CSE where the in-scope set was not properly maintained (:ghc-ticket:`25468`) +- Fixed ``matchExpectedFunTys`` to use ``tcMkScaledFunTys`` (:ghc-ticket:`26277`) +- Fixed ``parenBreakableList`` usage in ``ppHsContext`` for better pretty-printing of contexts +- Improved error messages for bad record updates to allow out-of-scope data constructors (:ghc-ticket:`26391`) +- Fixed a missing InVar->OutVar lookup in ``SetLevels`` (:ghc-ticket:`26681`) +- Fixed split sections on Windows (:ghc-ticket:`26696`, :ghc-ticket:`26494`) +- Fixed split sections for the LLVM backend (:ghc-ticket:`26770`) +- Don't re-use stack slots for growing registers (:ghc-ticket:`26668`) +- Fixed cast worker/wrapper incorrectly firing on INLINE functions (:ghc-ticket:`26903`) +- Fixed non-determinism in ``TyLitMap`` by using deterministic maps for strings (:ghc-ticket:`26846`) +- Fixed non-determinism in ``WithHsDocIdentifiers`` binary instance by using a stable sort (:ghc-ticket:`26858`) +- Added ``-mcmodel=medium`` module flag to generated LLVM IR on LoongArch +- Pass the ``mcmodel=medium`` parameter to CC via GHC on LoongArch +- Pass the ``+evex512`` attribute to LLVM 18+ when ``-mavx512f`` is set (:ghc-ticket:`26410`) +- Improved error handling in ``getPackageArchives`` (:ghc-ticket:`26383`) +- Fixed a shadowing bug in implicit parameters (:ghc-ticket:`26451`) +- Fixed a subtle bug in ``GHC.Core.Utils.mkTick`` that could generate type-incorrect code (:ghc-ticket:`26772`) +- Fixed a long-standing interaction between ticks and casts in ``Eliminate Identity Cases`` +- ``NamedDefaults``: require the class to be standard or have an in-scope default declaration (:ghc-ticket:`25775`, :ghc-ticket:`25778`) + +Runtime System +~~~~~~~~~~~~~~ + +- Fixed a deadlock with eventlog flush interval and RTS shutdown (:ghc-ticket:`26573`) +- Fixed eager black holes: record mutated closure and fix assertion (:ghc-ticket:`26495`) +- Fixed object file format detection in ``loadArchive`` (:ghc-ticket:`26630`) +- Use ``INFO_TABLE_CONSTR`` for ``stg_dummy_ret_closure`` (:ghc-ticket:`26745`) +- Fixed lost wakeups in ``threadPaused`` for threads blocked on black holes (:ghc-ticket:`26324`) +- Fixed ``stg_AP_STACK`` to push the correct update frame (:ghc-ticket:`26324`) +- Fixed potential loop in heap reservation logic on certain kernels (:ghc-ticket:`26151`) +- Don't use CAS without ``PARALLEL_GC`` on +- Switch prim to use modern atomic compiler builtins (:ghc-ticket:`26729`) +- Removed obsolete ``CC_SUPPORTS_TLS``, ``HAS_VISIBILITY_HIDDEN``, ``COMPILING_WINDOWS_DLL``, + and ``__GNUC__``-related logic +- Removed the ``-O3`` pragma hack in ``Hash.c`` +- Removed unnecessary Cabal flags + +Code Generation +~~~~~~~~~~~~~~~ + +- NCG for PPC: add pattern for ``CmmRegOff`` to ``iselExpr64`` (:ghc-ticket:`26828`) +- PPC NCG: Use libcall for 64-bit ``cmpxchg`` on 32-bit PowerPC (:ghc-ticket:`23969`) + +Bytecode Compiler +~~~~~~~~~~~~~~~~~ + +- Use 32 bits for breakpoint index (:ghc-ticket:`26325`) + +``base`` library +~~~~~~~~~~~~~~~~ + +- Expose ``Backtraces`` constructor and fields (:ghc-ticket:`26049`) +- Store ``StackTrace`` and ``StackSnapshot`` in ``Backtraces``, deferring decoding until display +- Evaluate backtraces for ``error`` exceptions at the moment they are thrown + (`CLC proposal #383 https://github.com/haskell/core-libraries-committee/issues/383`__, + :ghc-ticket:`26751`) + +``ghc-experimental`` library +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- Fixed ``GHC.Exception.Backtrace.Experimental`` module +- Added ability to customise the collection of exception annotations + +``ghc-pkg`` +~~~~~~~~~~~~ + +- Removed ``traceId`` from ``ghc-pkg`` executable + +``ghc-toolchain`` +~~~~~~~~~~~~~~~~~ + +- Dropped ``ld.gold`` from merge object command + +Build System +~~~~~~~~~~~~ + +- Added ``hpc`` to release script +- Use a response file to invoke GHC when analysing dependencies +- Fixed ``GHC.Platform.Host`` generation for cross stage1 (:ghc-ticket:`26449`) +- Fixed runtime error during ``users_guide`` build with Sphinx 9.1.0 (:ghc-ticket:`26810`) +- Added ``ghc-{experimental,internal}.cabal`` to the list of dependencies of the doc target (:ghc-ticket:`26738`) + +Wasm Backend +~~~~~~~~~~~~ + +- Fixed dyld handling for forward declared ``GOT.func`` items (:ghc-ticket:`26430`) +- Ensure ``setKeepCAFs()`` is called in GHCi (:ghc-ticket:`26106`) +- Prevent bundlers from resolving ``import("node:timers")`` +- Use ``import.meta.main`` for proper distinction of Node.js main modules (:ghc-ticket:`26916`) + +Included libraries +~~~~~~~~~~~~~~~~~~ + +The package database provided with this distribution also contains a number of +packages other than GHC itself. See the changelogs provided with these packages +for further change information. + +.. ghc-package-list:: + + compiler/ghc.cabal: The compiler itself + libraries/array/array.cabal: Dependency of ``ghc`` library + libraries/base/base.cabal: Core library + libraries/binary/binary.cabal: Dependency of ``ghc`` library + libraries/bytestring/bytestring.cabal: Dependency of ``ghc`` library + libraries/Cabal/Cabal/Cabal.cabal: Dependency of ``ghc-pkg`` utility + libraries/Cabal/Cabal-syntax/Cabal-syntax.cabal: Dependency of ``ghc-pkg`` utility + libraries/containers/containers/containers.cabal: Dependency of ``ghc`` library + libraries/deepseq/deepseq.cabal: Dependency of ``ghc`` library + libraries/directory/directory.cabal: Dependency of ``ghc`` library + libraries/exceptions/exceptions.cabal: Dependency of ``ghc`` and ``haskeline`` library + libraries/file-io/file-io.cabal: Dependency of ``directory`` library + libraries/filepath/filepath.cabal: Dependency of ``ghc`` library + libraries/ghc-boot/ghc-boot.cabal: Internal compiler library + libraries/ghc-boot-th/ghc-boot-th.cabal: Internal compiler library + libraries/ghc-compact/ghc-compact.cabal: Core library + libraries/ghc-experimental/ghc-experimental.cabal: Core library + libraries/ghc-heap/ghc-heap.cabal: GHC heap-walking library + libraries/ghci/ghci.cabal: The REPL interface + libraries/ghc-internal/ghc-internal.cabal: Core library + libraries/ghc-platform/ghc-platform.cabal: Internal library + libraries/ghc-prim/ghc-prim.cabal: Core library + libraries/haskeline/haskeline.cabal: Dependency of ``ghci`` executable + libraries/hpc/hpc.cabal: Dependency of ``hpc`` executable + libraries/integer-gmp/integer-gmp.cabal: Core library + libraries/mtl/mtl.cabal: Dependency of ``Cabal`` library + libraries/os-string/os-string.cabal: Dependency of ``filepath`` library + libraries/parsec/parsec.cabal: Dependency of ``Cabal`` library + libraries/pretty/pretty.cabal: Dependency of ``ghc`` library + libraries/process/process.cabal: Dependency of ``ghc`` library + libraries/semaphore-compat/semaphore-compat.cabal: Dependency of ``ghc`` library + libraries/stm/stm.cabal: Dependency of ``haskeline`` library + libraries/template-haskell/template-haskell.cabal: Core library + libraries/terminfo/terminfo.cabal: Dependency of ``haskeline`` library + libraries/text/text.cabal: Dependency of ``Cabal`` library + libraries/time/time.cabal: Dependency of ``ghc`` library + libraries/transformers/transformers.cabal: Dependency of ``ghc`` library + libraries/unix/unix.cabal: Dependency of ``ghc`` library + libraries/Win32/Win32.cabal: Dependency of ``ghc`` library + libraries/xhtml/xhtml.cabal: Dependency of ``haddock`` executable + utils/haddock/haddock-api/haddock-api.cabal: Dependency of ``haddock`` executable + utils/haddock/haddock-library/haddock-library.cabal: Dependency of ``haddock`` executable ===================================== docs/users_guide/release-notes.rst ===================================== @@ -7,3 +7,4 @@ Release notes 9.12.1-notes 9.12.2-notes 9.12.3-notes + 9.12.4-notes ===================================== libraries/base/base.cabal.in ===================================== @@ -4,7 +4,7 @@ cabal-version: 3.0 -- Make sure you are editing ghc-experimental.cabal.in, not ghc-experimental.cabal name: base -version: 4.21.1.0 +version: 4.21.2.0 -- NOTE: Don't forget to update ./changelog.md license: BSD-3-Clause ===================================== libraries/base/changelog.md ===================================== @@ -1,7 +1,9 @@ # Changelog for [`base` package](http://hackage.haskell.org/package/base) -## 4.21.2.0 *TBA* - * Evaluate backtraces for "error" exceptions at the moment they are thrown. ([CLC proposal #383](https://github.com/haskell/core-libraries-committee/issues/383)) +## 4.21.2.0 *March 2026* + * Expose `Backtraces` constructor and fields ([CLC proposal #199](https://github.com/haskell/core-libraries-committee/issues/199), [#26049](https://gitlab.haskell.org/ghc/ghc/-/issues/26049)) + * Store `StackTrace` and `StackSnapshot` in `Backtraces`, deferring decoding until display + * Evaluate backtraces for "error" exceptions at the moment they are thrown ([CLC proposal #383](https://github.com/haskell/core-libraries-committee/issues/383), [#26751](https://gitlab.haskell.org/ghc/ghc/-/issues/26751)) ## 4.21.1.0 *Sept 2024* * Fix incorrect results of `integerPowMod` when the base is 0 and the exponent is negative, and `integerRecipMod` when the modulus is zero ([#26017](https://gitlab.haskell.org/ghc/ghc/-/issues/26017)). ===================================== testsuite/tests/interface-stability/base-exports.stdout-javascript-unknown-ghcjs ===================================== @@ -322,7 +322,7 @@ module Control.Exception.Backtrace where type BacktraceMechanism :: * data BacktraceMechanism = CostCentreBacktrace | HasCallStackBacktrace | ExecutionBacktrace | IPEBacktrace type Backtraces :: * - data Backtraces = Backtraces {btrCostCentre :: GHC.Internal.Maybe.Maybe (GHC.Internal.Ptr.Ptr GHC.Internal.Stack.CCS.CostCentreStack), btrHasCallStack :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.Types.CallStack, btrExecutionStack :: GHC.Internal.Maybe.Maybe [GHC.Internal.ExecutionStack.Internal.Location], btrIpe :: GHC.Internal.Maybe.Maybe [GHC.Internal.Stack.CloneStack.StackEntry]} + data Backtraces = Backtraces {btrCostCentre :: GHC.Internal.Maybe.Maybe (GHC.Internal.Ptr.Ptr GHC.Internal.Stack.CCS.CostCentreStack), btrHasCallStack :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.Types.CallStack, btrExecutionStack :: GHC.Internal.Maybe.Maybe GHC.Internal.ExecutionStack.Internal.StackTrace, btrIpe :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.CloneStack.StackSnapshot} collectBacktraces :: (?callStack::GHC.Internal.Stack.Types.CallStack) => GHC.Types.IO Backtraces displayBacktraces :: Backtraces -> GHC.Internal.Base.String getBacktraceMechanismState :: BacktraceMechanism -> GHC.Types.IO GHC.Types.Bool ===================================== testsuite/tests/interface-stability/base-exports.stdout-mingw32 ===================================== @@ -322,7 +322,7 @@ module Control.Exception.Backtrace where type BacktraceMechanism :: * data BacktraceMechanism = CostCentreBacktrace | HasCallStackBacktrace | ExecutionBacktrace | IPEBacktrace type Backtraces :: * - data Backtraces = Backtraces {btrCostCentre :: GHC.Internal.Maybe.Maybe (GHC.Internal.Ptr.Ptr GHC.Internal.Stack.CCS.CostCentreStack), btrHasCallStack :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.Types.CallStack, btrExecutionStack :: GHC.Internal.Maybe.Maybe [GHC.Internal.ExecutionStack.Internal.Location], btrIpe :: GHC.Internal.Maybe.Maybe [GHC.Internal.Stack.CloneStack.StackEntry]} + data Backtraces = Backtraces {btrCostCentre :: GHC.Internal.Maybe.Maybe (GHC.Internal.Ptr.Ptr GHC.Internal.Stack.CCS.CostCentreStack), btrHasCallStack :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.Types.CallStack, btrExecutionStack :: GHC.Internal.Maybe.Maybe GHC.Internal.ExecutionStack.Internal.StackTrace, btrIpe :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.CloneStack.StackSnapshot} collectBacktraces :: (?callStack::GHC.Internal.Stack.Types.CallStack) => GHC.Types.IO Backtraces displayBacktraces :: Backtraces -> GHC.Internal.Base.String getBacktraceMechanismState :: BacktraceMechanism -> GHC.Types.IO GHC.Types.Bool ===================================== testsuite/tests/interface-stability/base-exports.stdout-ws-32 ===================================== @@ -322,7 +322,7 @@ module Control.Exception.Backtrace where type BacktraceMechanism :: * data BacktraceMechanism = CostCentreBacktrace | HasCallStackBacktrace | ExecutionBacktrace | IPEBacktrace type Backtraces :: * - data Backtraces = Backtraces {btrCostCentre :: GHC.Internal.Maybe.Maybe (GHC.Internal.Ptr.Ptr GHC.Internal.Stack.CCS.CostCentreStack), btrHasCallStack :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.Types.CallStack, btrExecutionStack :: GHC.Internal.Maybe.Maybe [GHC.Internal.ExecutionStack.Internal.Location], btrIpe :: GHC.Internal.Maybe.Maybe [GHC.Internal.Stack.CloneStack.StackEntry]} + data Backtraces = Backtraces {btrCostCentre :: GHC.Internal.Maybe.Maybe (GHC.Internal.Ptr.Ptr GHC.Internal.Stack.CCS.CostCentreStack), btrHasCallStack :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.Types.CallStack, btrExecutionStack :: GHC.Internal.Maybe.Maybe GHC.Internal.ExecutionStack.Internal.StackTrace, btrIpe :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.CloneStack.StackSnapshot} collectBacktraces :: (?callStack::GHC.Internal.Stack.Types.CallStack) => GHC.Types.IO Backtraces displayBacktraces :: Backtraces -> GHC.Internal.Base.String getBacktraceMechanismState :: BacktraceMechanism -> GHC.Types.IO GHC.Types.Bool ===================================== testsuite/tests/interface-stability/ghc-experimental-exports.stdout-mingw32 ===================================== @@ -4324,13 +4324,13 @@ module GHC.Exception.Backtrace.Experimental where data Backtraces = Backtraces {btrCostCentre :: GHC.Internal.Maybe.Maybe (GHC.Internal.Ptr.Ptr GHC.Internal.Stack.CCS.CostCentreStack), btrHasCallStack :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.Types.CallStack, btrExecutionStack :: GHC.Internal.Maybe.Maybe GHC.Internal.ExecutionStack.Internal.StackTrace, btrIpe :: GHC.Internal.Maybe.Maybe GHC.Internal.Stack.CloneStack.StackSnapshot} type CollectExceptionAnnotationMechanism :: * data CollectExceptionAnnotationMechanism = ... - collectBacktraces :: (?callStack::GHC.Internal.Stack.Types.CallStack) => GHC.Internal.Types.IO Backtraces - collectExceptionAnnotation :: GHC.Internal.Stack.Types.HasCallStack => GHC.Internal.Types.IO GHC.Internal.Exception.Context.SomeExceptionAnnotation + collectBacktraces :: (?callStack::GHC.Internal.Stack.Types.CallStack) => GHC.Types.IO Backtraces + collectExceptionAnnotation :: GHC.Internal.Stack.Types.HasCallStack => GHC.Types.IO GHC.Internal.Exception.Context.SomeExceptionAnnotation displayBacktraces :: Backtraces -> GHC.Internal.Base.String - getBacktraceMechanismState :: BacktraceMechanism -> GHC.Internal.Types.IO GHC.Internal.Types.Bool - getCollectExceptionAnnotationMechanism :: GHC.Internal.Types.IO CollectExceptionAnnotationMechanism - setBacktraceMechanismState :: BacktraceMechanism -> GHC.Internal.Types.Bool -> GHC.Internal.Types.IO () - setCollectExceptionAnnotation :: forall a. GHC.Internal.Exception.Context.ExceptionAnnotation a => (GHC.Internal.Stack.Types.HasCallStack => GHC.Internal.Types.IO a) -> GHC.Internal.Types.IO () + getBacktraceMechanismState :: BacktraceMechanism -> GHC.Types.IO GHC.Types.Bool + getCollectExceptionAnnotationMechanism :: GHC.Types.IO CollectExceptionAnnotationMechanism + setBacktraceMechanismState :: BacktraceMechanism -> GHC.Types.Bool -> GHC.Types.IO () + setCollectExceptionAnnotation :: forall a. GHC.Internal.Exception.Context.ExceptionAnnotation a => (GHC.Internal.Stack.Types.HasCallStack => GHC.Types.IO a) -> GHC.Types.IO () module GHC.PrimOps where -- Safety: Unsafe View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a86f8f8d8a1f121bd0d49672efc6aaea... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a86f8f8d8a1f121bd0d49672efc6aaea... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Zubin (@wz1000)