|
|
1
|
+.. _release-9-12-4:
|
|
|
2
|
+
|
|
|
3
|
+Version 9.12.4
|
|
|
4
|
+==============
|
|
|
5
|
+
|
|
|
6
|
+The significant changes to the various parts of the compiler are listed in the
|
|
|
7
|
+following sections. See the `migration guide
|
|
|
8
|
+<https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.12>`_ on the GHC Wiki
|
|
|
9
|
+for specific guidance on migrating programs to this release.
|
|
|
10
|
+
|
|
|
11
|
+Compiler
|
|
|
12
|
+~~~~~~~~
|
|
|
13
|
+
|
|
|
14
|
+- Fixed a bug in CSE where the in-scope set was not properly maintained (:ghc-ticket:`25468`)
|
|
|
15
|
+- Fixed ``matchExpectedFunTys`` to use ``tcMkScaledFunTys`` (:ghc-ticket:`26277`)
|
|
|
16
|
+- Fixed ``parenBreakableList`` usage in ``ppHsContext`` for better pretty-printing of contexts
|
|
|
17
|
+- Improved error messages for bad record updates to allow out-of-scope data constructors (:ghc-ticket:`26391`)
|
|
|
18
|
+- Fixed a missing InVar->OutVar lookup in ``SetLevels`` (:ghc-ticket:`26681`)
|
|
|
19
|
+- Fixed split sections on Windows (:ghc-ticket:`26696`, :ghc-ticket:`26494`)
|
|
|
20
|
+- Fixed split sections for the LLVM backend (:ghc-ticket:`26770`)
|
|
|
21
|
+- Don't re-use stack slots for growing registers (:ghc-ticket:`26668`)
|
|
|
22
|
+- Fixed a subtle bug in cast worker/wrapper (:ghc-ticket:`26903`)
|
|
|
23
|
+- Fixed non-determinism in ``TyLitMap`` by using deterministic maps for strings (:ghc-ticket:`26846`)
|
|
|
24
|
+- Fixed non-determinism in ``WithHsDocIdentifiers`` binary instance by using a stable sort (:ghc-ticket:`26858`)
|
|
|
25
|
+- Added ``-mcmodel=medium`` module flag to generated LLVM IR on LoongArch
|
|
|
26
|
+- Pass the ``mcmodel=medium`` parameter to CC via GHC on LoongArch
|
|
|
27
|
+- Pass the ``+evex512`` attribute to LLVM 18+ when ``-mavx512f`` is set (:ghc-ticket:`26410`)
|
|
|
28
|
+- Improved error handling in ``getPackageArchives`` (:ghc-ticket:`26383`)
|
|
|
29
|
+- Report solid equality errors before custom type errors (:ghc-ticket:`26255`)
|
|
|
30
|
+- Fixed a shadowing bug in implicit parameters (:ghc-ticket:`26451`)
|
|
|
31
|
+- Fixed a subtle bug in ``GHC.Core.Utils.mkTick`` (:ghc-ticket:`26772`)
|
|
|
32
|
+- Fixed a long-standing interaction between ticks and casts in ``Eliminate Identity Cases``
|
|
|
33
|
+- ``NamedDefaults``: require the class to be standard or have an in-scope default declaration (:ghc-ticket:`25775`, :ghc-ticket:`25778`)
|
|
|
34
|
+
|
|
|
35
|
+Runtime System
|
|
|
36
|
+~~~~~~~~~~~~~~
|
|
|
37
|
+
|
|
|
38
|
+- Fixed a deadlock with eventlog flush interval and RTS shutdown (:ghc-ticket:`26573`)
|
|
|
39
|
+- Fixed eager black holes: record mutated closure and fix assertion (:ghc-ticket:`26495`)
|
|
|
40
|
+- Fixed object file format detection in ``loadArchive`` (:ghc-ticket:`26630`)
|
|
|
41
|
+- Use ``INFO_TABLE_CONSTR`` for ``stg_dummy_ret_closure`` (:ghc-ticket:`26745`)
|
|
|
42
|
+- Fixed lost wakeups in ``threadPaused`` for threads blocked on black holes (:ghc-ticket:`26324`)
|
|
|
43
|
+- Fixed ``stg_AP_STACK`` to push the correct update frame (:ghc-ticket:`26324`)
|
|
|
44
|
+- Enforce iteration limit on heap reservation logic (:ghc-ticket:`26151`)
|
|
|
45
|
+- Don't use CAS without ``PARALLEL_GC`` on
|
|
|
46
|
+- Switch prim to use modern atomic compiler builtins (:ghc-ticket:`26729`)
|
|
|
47
|
+- Removed obsolete ``CC_SUPPORTS_TLS``, ``HAS_VISIBILITY_HIDDEN``, ``COMPILING_WINDOWS_DLL``,
|
|
|
48
|
+ and ``__GNUC__``-related logic
|
|
|
49
|
+- Removed the ``-O3`` pragma hack in ``Hash.c``
|
|
|
50
|
+- Removed unnecessary Cabal flags
|
|
|
51
|
+
|
|
|
52
|
+Code Generation
|
|
|
53
|
+~~~~~~~~~~~~~~~
|
|
|
54
|
+
|
|
|
55
|
+- NCG for PPC: add pattern for ``CmmRegOff`` to ``iselExpr64`` (:ghc-ticket:`26828`)
|
|
|
56
|
+- PPC NCG: Use libcall for 64-bit ``cmpxchg`` on 32-bit PowerPC (:ghc-ticket:`23969`)
|
|
|
57
|
+
|
|
|
58
|
+Bytecode Compiler
|
|
|
59
|
+~~~~~~~~~~~~~~~~~
|
|
|
60
|
+
|
|
|
61
|
+- Use 32 bits for breakpoint index (:ghc-ticket:`26325`)
|
|
|
62
|
+
|
|
|
63
|
+``base`` library
|
|
|
64
|
+~~~~~~~~~~~~~~~~
|
|
|
65
|
+
|
|
|
66
|
+- Expose ``Backtraces`` constructor and fields (:ghc-ticket:`26049`)
|
|
|
67
|
+- Store ``StackTrace`` and ``StackSnapshot`` in ``Backtraces``, deferring decoding until display
|
|
|
68
|
+- Evaluate backtraces for ``error`` exceptions at the moment they are thrown
|
|
|
69
|
+ (`CLC proposal #383 <https://github.com/haskell/core-libraries-committee/issues/383>`__,
|
|
|
70
|
+ :ghc-ticket:`26751`)
|
|
|
71
|
+
|
|
|
72
|
+``ghc-experimental`` library
|
|
|
73
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
74
|
+
|
|
|
75
|
+- Fixed ``GHC.Exception.Backtrace.Experimental`` module
|
|
|
76
|
+- Added ability to customise the collection of exception annotations
|
|
|
77
|
+
|
|
|
78
|
+``ghc-pkg``
|
|
|
79
|
+~~~~~~~~~~~~
|
|
|
80
|
+
|
|
|
81
|
+- Removed ``traceId`` from ``ghc-pkg`` executable
|
|
|
82
|
+
|
|
|
83
|
+``ghc-toolchain``
|
|
|
84
|
+~~~~~~~~~~~~~~~~~
|
|
|
85
|
+
|
|
|
86
|
+- Dropped ``ld.gold`` from merge object command
|
|
|
87
|
+
|
|
|
88
|
+Build System
|
|
|
89
|
+~~~~~~~~~~~~
|
|
|
90
|
+
|
|
|
91
|
+- Added ``hpc`` to release script
|
|
|
92
|
+- Use a response file to invoke GHC when analysing dependencies
|
|
|
93
|
+- Fixed ``GHC.Platform.Host`` generation for cross stage1 (:ghc-ticket:`26449`)
|
|
|
94
|
+- Fixed runtime error during ``users_guide`` build with Sphinx 9.1.0 (:ghc-ticket:`26810`)
|
|
|
95
|
+- Added ``ghc-{experimental,internal}.cabal`` to the list of dependencies of the doc target (:ghc-ticket:`26738`)
|
|
|
96
|
+
|
|
|
97
|
+Wasm Backend
|
|
|
98
|
+~~~~~~~~~~~~
|
|
|
99
|
+
|
|
|
100
|
+- Fixed dyld handling for forward declared ``GOT.func`` items (:ghc-ticket:`26430`)
|
|
|
101
|
+- Ensure ``setKeepCAFs()`` is called in GHCi (:ghc-ticket:`26106`)
|
|
|
102
|
+- Prevent bundlers from resolving ``import("node:timers")``
|
|
|
103
|
+- Use ``import.meta.main`` for proper distinction of Node.js main modules (:ghc-ticket:`26916`)
|
|
|
104
|
+
|
|
|
105
|
+Included libraries
|
|
|
106
|
+~~~~~~~~~~~~~~~~~~
|
|
|
107
|
+
|
|
|
108
|
+The package database provided with this distribution also contains a number of
|
|
|
109
|
+packages other than GHC itself. See the changelogs provided with these packages
|
|
|
110
|
+for further change information.
|
|
|
111
|
+
|
|
|
112
|
+.. ghc-package-list::
|
|
|
113
|
+
|
|
|
114
|
+ compiler/ghc.cabal: The compiler itself
|
|
|
115
|
+ libraries/array/array.cabal: Dependency of ``ghc`` library
|
|
|
116
|
+ libraries/base/base.cabal: Core library
|
|
|
117
|
+ libraries/binary/binary.cabal: Dependency of ``ghc`` library
|
|
|
118
|
+ libraries/bytestring/bytestring.cabal: Dependency of ``ghc`` library
|
|
|
119
|
+ libraries/Cabal/Cabal/Cabal.cabal: Dependency of ``ghc-pkg`` utility
|
|
|
120
|
+ libraries/Cabal/Cabal-syntax/Cabal-syntax.cabal: Dependency of ``ghc-pkg`` utility
|
|
|
121
|
+ libraries/containers/containers/containers.cabal: Dependency of ``ghc`` library
|
|
|
122
|
+ libraries/deepseq/deepseq.cabal: Dependency of ``ghc`` library
|
|
|
123
|
+ libraries/directory/directory.cabal: Dependency of ``ghc`` library
|
|
|
124
|
+ libraries/exceptions/exceptions.cabal: Dependency of ``ghc`` and ``haskeline`` library
|
|
|
125
|
+ libraries/file-io/file-io.cabal: Dependency of ``directory`` library
|
|
|
126
|
+ libraries/filepath/filepath.cabal: Dependency of ``ghc`` library
|
|
|
127
|
+ libraries/ghc-boot/ghc-boot.cabal: Internal compiler library
|
|
|
128
|
+ libraries/ghc-boot-th/ghc-boot-th.cabal: Internal compiler library
|
|
|
129
|
+ libraries/ghc-compact/ghc-compact.cabal: Core library
|
|
|
130
|
+ libraries/ghc-experimental/ghc-experimental.cabal: Core library
|
|
|
131
|
+ libraries/ghc-heap/ghc-heap.cabal: GHC heap-walking library
|
|
|
132
|
+ libraries/ghci/ghci.cabal: The REPL interface
|
|
|
133
|
+ libraries/ghc-internal/ghc-internal.cabal: Core library
|
|
|
134
|
+ libraries/ghc-platform/ghc-platform.cabal: Internal library
|
|
|
135
|
+ libraries/ghc-prim/ghc-prim.cabal: Core library
|
|
|
136
|
+ libraries/haskeline/haskeline.cabal: Dependency of ``ghci`` executable
|
|
|
137
|
+ libraries/hpc/hpc.cabal: Dependency of ``hpc`` executable
|
|
|
138
|
+ libraries/integer-gmp/integer-gmp.cabal: Core library
|
|
|
139
|
+ libraries/mtl/mtl.cabal: Dependency of ``Cabal`` library
|
|
|
140
|
+ libraries/os-string/os-string.cabal: Dependency of ``filepath`` library
|
|
|
141
|
+ libraries/parsec/parsec.cabal: Dependency of ``Cabal`` library
|
|
|
142
|
+ libraries/pretty/pretty.cabal: Dependency of ``ghc`` library
|
|
|
143
|
+ libraries/process/process.cabal: Dependency of ``ghc`` library
|
|
|
144
|
+ libraries/semaphore-compat/semaphore-compat.cabal: Dependency of ``ghc`` library
|
|
|
145
|
+ libraries/stm/stm.cabal: Dependency of ``haskeline`` library
|
|
|
146
|
+ libraries/template-haskell/template-haskell.cabal: Core library
|
|
|
147
|
+ libraries/terminfo/terminfo.cabal: Dependency of ``haskeline`` library
|
|
|
148
|
+ libraries/text/text.cabal: Dependency of ``Cabal`` library
|
|
|
149
|
+ libraries/time/time.cabal: Dependency of ``ghc`` library
|
|
|
150
|
+ libraries/transformers/transformers.cabal: Dependency of ``ghc`` library
|
|
|
151
|
+ libraries/unix/unix.cabal: Dependency of ``ghc`` library
|
|
|
152
|
+ libraries/Win32/Win32.cabal: Dependency of ``ghc`` library
|
|
|
153
|
+ libraries/xhtml/xhtml.cabal: Dependency of ``haddock`` executable
|
|
|
154
|
+ utils/haddock/haddock-api/haddock-api.cabal: Dependency of ``haddock`` executable
|
|
|
155
|
+ utils/haddock/haddock-library/haddock-library.cabal: Dependency of ``haddock`` executable |