... |
... |
@@ -11,11 +11,9 @@ for specific guidance on migrating programs to this release. |
11
|
11
|
Compiler
|
12
|
12
|
~~~~~~~~
|
13
|
13
|
|
14
|
|
-- Optimized lowering of BigNat# literals. ((:ghc-ticket:`23942`), !12179)
|
|
14
|
+- Optimized lowering of ``BigNat#`` literals. (:ghc-ticket:`23942`)
|
15
|
15
|
|
16
|
|
-- Fixed a bug where the jump shortcutting optimization could lead to unsoundness in pattern matching. ((:ghc-ticket:`24507`))
|
17
|
|
-
|
18
|
|
-- Look for haskell symbols only in relevant libraries. ((:ghc-ticket:`23415`))
|
|
16
|
+- Look for Haskell symbols only in relevant libraries. (:ghc-ticket:`23415`)
|
19
|
17
|
|
20
|
18
|
When dynamically loading a Haskell symbol (typical when running a splice or
|
21
|
19
|
GHCi expression), before this change we would search for the symbol in
|
... |
... |
@@ -24,100 +22,104 @@ Compiler |
24
|
22
|
many package dependencies) because the time to lookup the would be
|
25
|
23
|
linear in the number of packages loaded.
|
26
|
24
|
|
27
|
|
- In one measurement, this improved performance for executing a GHCi expression
|
|
25
|
+ In one measurement this improved performance for executing a GHCi expression
|
28
|
26
|
from ~38 seconds down to ~2s.
|
29
|
27
|
|
30
|
|
-- Fixed a bug that could cause a linker error when `TypeData` and `StrictData`
|
31
|
|
- where used in combination. ((:ghc-ticket:`24620`))
|
|
28
|
+- Fixed a bug that could cause a linker error when ``TypeData`` and ``StrictData``
|
|
29
|
+ where used in combination. (:ghc-ticket:`24620`)
|
32
|
30
|
|
33
|
|
-- The flag :ghc-flag:`-fprof-late` when combined with `-prof` will no longer prevent top level
|
34
|
|
- constructors from being statically allocated.
|
|
31
|
+- Fixed an issue where :ghc-flag:`-Wmissing-home-modules` caused quadratic compile time increases. (:ghc-ticket:`24778`)
|
35
|
32
|
|
36
|
|
- It used to be the case that we would add a cost centre for bindings like `foo = Just bar`.
|
37
|
|
- This turned the binding into a caf that would allocate the constructor on first evaluation.
|
|
33
|
+- Better type inference in certain situations. (:ghc-ticket:`24810`)
|
38
|
34
|
|
39
|
|
- However without the cost centre `foo` can be allocated at compile time. This reduces code-bloat and
|
40
|
|
- reduces overhead for short-running applications.
|
|
35
|
+- Fixed a bug where the magic ``GHC.Magic.inline`` function sometimes failed to inline functions
|
|
36
|
+ if there were coercions involved. (:ghc-ticket:`24808`)
|
41
|
37
|
|
42
|
|
- The tradeoff is that calling `whoCreated` on top level value definitions like `foo` will be less informative.
|
|
38
|
+- Fixed a bug where the simplifier sometimes destroyed join points during float out. (:ghc-ticket:`24768`)
|
43
|
39
|
|
44
|
|
-- IPE profiling - optimize the representation of some internal representations. Leading to smaller executables. ((:ghc-ticket:`24504`))
|
|
40
|
+- Fixed inability to re-export the ``Data.Tuple.MkSolo`` constructor (:ghc-ticket:`25182`)
|
45
|
41
|
|
46
|
|
-- Fixed an issue where `-Wmissing-home-modules` caused quadratic compile time increases. ((:ghc-ticket:`24778`))
|
|
42
|
+- Fixed ``Language.Haskell.TH.mkName "FUN"`` (:ghc-ticket:`25174`)
|
47
|
43
|
|
48
|
|
-- Fixed a crash when using `-prof` with `-forig-thunk-info`. ((:ghc-ticket:`24809`))
|
|
44
|
+- Fixed a bug that could case segfaults in GHCi when :ghc-flag:`-fworker-wrapper-cbv` was enabled. (:ghc-ticket:`24870`)
|
49
|
45
|
|
50
|
|
-- Better type inference in certain situations. ((:ghc-ticket:`24810`))
|
|
46
|
+- Fixed a bug where the use of ``throw`` caused a loss of strictness (:ghc-ticket:`25066`).
|
51
|
47
|
|
52
|
|
-- Fixed a bug where the magic `inline` function sometimes failed to inline functions
|
53
|
|
- if there were coercions involved. ((:ghc-ticket:`24808`))
|
|
48
|
+- Fixed incorrect behaviour that could occur when using ``control0#/prompt#`` (:ghc-ticket:`25439`) by making `prompt#` lazy.
|
54
|
49
|
|
55
|
|
-- Fixed a bug where the simplifier sometimes destroyed join points during float out. ((:ghc-ticket:`24768`))
|
|
50
|
+- Fixed a bug where GHC panicked during type checking. (:ghc-ticket:`25325`)
|
56
|
51
|
|
57
|
|
-- PPC NCG: Fix sign hints in C calls. This bug caused segfaults when using FFI under some
|
58
|
|
- circumstances. ((:ghc-ticket:`23034`))
|
|
52
|
+- Fix linearity for strict unit patterns in a local ``let`` bindings. (:ghc-ticket:`25428`)
|
59
|
53
|
|
60
|
|
-- Fixed a bug that caused GHC to panic when using the aarch64 ncg and -fregs-graph
|
61
|
|
- on certain programs. ((:ghc-ticket:`24941`))
|
|
54
|
+- Improve the performance of type family consistency checks. ((:ghc-ticket:`25554`))
|
62
|
55
|
|
63
|
|
-- The flag :ghc-flag:`-fkeep-auto-rules` that forces GHC to keep auto generated
|
64
|
|
- specialization rules was added. It was actually added ghc-9.10.1 already but
|
65
|
|
- mistakenly not mentioned in the 9.10.1 changelog.
|
|
56
|
+- Fixed a bug where type checking failed to terminate. (:ghc-ticket:`25597`)
|
66
|
57
|
|
67
|
|
-- Fixed re-exports of ``MkSolo`` (:ghc-ticket:`25182`)
|
|
58
|
+- Added flags to control speculative evaluation: :ghc-flag:`-fspec-eval` and :ghc-flag:`-fspec-eval-dictfun`. This allows
|
|
59
|
+ users to work around cases where recent changes to speculative evaluation caused performance regressions. (:ghc-ticket:`25606`)
|
68
|
60
|
|
69
|
|
-- Fixed the behavior of ``Language.Haskell.TH.mkName "FUN"`` (:ghc-ticket:`25174`)
|
|
61
|
+Profiling
|
|
62
|
+~~~~~~~~~
|
70
|
63
|
|
71
|
|
-- Various code generation improvements to the ARM backend.
|
|
64
|
+- The flag :ghc-flag:`-fprof-late` when combined with :ghc-flag:`-prof` will no longer prevent top level
|
|
65
|
+ constructors from being statically allocated.
|
72
|
66
|
|
73
|
|
-- Fixed a bug that could case segfaults in GHCi when `-fworker-wrapper-cbv` was enabled. ((:ghc-ticket:`24870`))
|
|
67
|
+ It used to be the case that we would add a cost centre for bindings like ``foo = Just bar``.
|
|
68
|
+ This turned the binding into a constant applicative form that would allocate
|
|
69
|
+ the constructor on first evaluation.
|
74
|
70
|
|
75
|
|
-- Fixed a correctness issues for Int64/Word64 on 32bit backends ((:ghc-ticket:`24893`))
|
|
71
|
+ However without the cost-centre ``foo`` can be allocated at compile time. This reduces code-bloat and
|
|
72
|
+ reduces overhead for short-running applications.
|
76
|
73
|
|
77
|
|
-- Various rts linker improvements:
|
78
|
|
- - R_X86_64_PC64 relocation support on windows
|
79
|
|
- - Use m32 allocator for sections when NEED_PLT - works around ((:ghc-ticket:`24432`))
|
80
|
|
- - AArch64 - Skip NONE relocations
|
|
74
|
+ The tradeoff is that calling ``GHC.Stack.whoCreated`` on top level value definitions like ``foo`` will be less informative.
|
81
|
75
|
|
82
|
|
-- AArch64 ncg: Multiway branches are now lowered to jump tables for better performance. ((:ghc-ticket:`19912`))
|
|
76
|
+- Fixed a crash when using :ghc-flag:`-prof` with :ghc-flag:`-forig-thunk-info`. (:ghc-ticket:`24809`)
|
83
|
77
|
|
84
|
|
-- Fixes related to better use of sse4 when using the llvm backend:
|
85
|
|
- - Use +sse4.2 rather than +sse42, fixing ((:ghc-ticket:`25019`)),
|
86
|
|
- - make SSE4.2 imply +popcnt, fixing ((:ghc-ticket:`25353`)).
|
|
78
|
+- Optimize the representation of :ghc-flag:`info table provenance maps <-finfo-table-map>`, significantly reducing code size when this feature is in use. (:ghc-ticket:`24504`)
|
87
|
79
|
|
88
|
|
-- Fixed a bug where the use of ``throw`` caused a loss of strictness ((:ghc-ticket:`25066`)).
|
|
80
|
+Native code generator backend
|
|
81
|
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
89
|
82
|
|
90
|
|
-- Fixed incorrect behaviour that could occur when using ``control0#/prompt#`` ((:ghc-ticket:`25439`)) by making `prompt#` lazy.
|
|
83
|
+- Fixed a bug where the jump shortcutting optimization could lead to unsoundness in pattern matching. (:ghc-ticket:`24507`)
|
91
|
84
|
|
92
|
|
-- Fixed a bug where ghc paniced during type checking. ((:ghc-ticket:`25325`))
|
|
85
|
+- PowerPC: Fix sign hints in C calls. This bug caused segfaults when using FFI under some
|
|
86
|
+ circumstances. (:ghc-ticket:`23034`)
|
93
|
87
|
|
94
|
|
-- Fix linearity for strict unit patterns in a local let bindings. ((:ghc-ticket:`25428`))
|
|
88
|
+- AArch64: Various code generation performance improvements
|
95
|
89
|
|
96
|
|
-- Improve the performance of type family consistency checks. ((:ghc-ticket:`25554`))
|
|
90
|
+- AArch64: Fixed a bug that caused GHC to panic when using :ghc-flag:`-fregs-graph`
|
|
91
|
+ on certain programs. (:ghc-ticket:`24941`)
|
97
|
92
|
|
98
|
|
-- Fixed a bug where type checking failed to terminate. ((:ghc-ticket:`25597`))
|
|
93
|
+- AArch64: Multiway branches are now lowered to jump tables for better performance. (:ghc-ticket:`19912`)
|
99
|
94
|
|
100
|
|
-- Fixed a bug where ``__GLASGOW_HASKELL_LLVM__`` was not defined even if `-fllvm` was set. ((:ghc-ticket:`25606`))
|
|
95
|
+- Fixed a correctness issues for ``Int64``/``Word64`` on 32-bit backends (:ghc-ticket:`24893`)
|
|
96
|
+
|
|
97
|
+LLVM backend
|
|
98
|
+~~~~~~~~~~~~
|
|
99
|
+
|
|
100
|
+- Fixes related to better use of SSE4:
|
|
101
|
+ - Use ``+sse4.2`` rather than ``+sse42``, fixing (:ghc-ticket:`25019`),
|
|
102
|
+ - make SSE4.2 imply ``+popcnt``, fixing (:ghc-ticket:`25353`).
|
|
103
|
+
|
|
104
|
+- Fixed a bug where ``__GLASGOW_HASKELL_LLVM__`` was not defined even if :ghc-flag:`-fllvm` was set. (:ghc-ticket:`25606`)
|
101
|
105
|
|
102
|
|
-- Added flags to control speculative evaluation: ``-fspec-eval`` and ``-fspec-eval-dictfun``. This allows
|
103
|
|
- users to work around cases where recent changes to speculative evaluation caused performance regressions. ((:ghc-ticket:`25606`))
|
104
|
106
|
|
105
|
107
|
JavaScript backend
|
106
|
108
|
~~~~~~~~~~~~~~~~~~
|
107
|
109
|
|
108
|
|
-- Changes for better support of the Google Closure Compiler ((:ghc-ticket:`24602`), !12330)
|
|
110
|
+- Changes for better support of the Google Closure Compiler (:ghc-ticket:`24602`)
|
109
|
111
|
|
110
|
|
-- JS Backend: support rubbish static literals
|
|
112
|
+- Add support for rubbish static literals
|
111
|
113
|
|
112
|
|
-- Fix h$withCStringOnHeap helper ((:ghc-ticket:`25288`))
|
|
114
|
+- Fix ``h$withCStringOnHeap`` helper (:ghc-ticket:`25288`)
|
113
|
115
|
|
114
|
116
|
WebAssembly backend
|
115
|
117
|
~~~~~~~~~~~~~~~~~~~
|
116
|
118
|
|
117
|
|
-- wasm: use scheduler.postTask() for context switch when available
|
|
119
|
+- Use ``scheduler.postTask()`` for context switch when available
|
118
|
120
|
|
119
|
|
-- The in tree gmp library now is configured to produce faster and smaller code given
|
120
|
|
- the current constraints of the wasm backend. (!12592)
|
|
121
|
+- The in-tree gmp library now is configured to produce faster and smaller code given
|
|
122
|
+ the current constraints of the wasm backend.
|
121
|
123
|
|
122
|
124
|
GHCi
|
123
|
125
|
~~~~
|
... |
... |
@@ -144,20 +146,29 @@ Runtime system |
144
|
146
|
Users who have fine-tuned the :rts-flag:`-F ⟨factor⟩`, :rts-flag:`-Fd ⟨factor⟩`, or :rts-flag:`-O ⟨size⟩` flags,
|
145
|
147
|
and use the non-moving GC, should see if adjustments are needed in light of this change.
|
146
|
148
|
|
147
|
|
-- Reduce fragmentation incurred by the nonmoving GC's segment allocator. In one application this reduced resident set size by 26%. See :ghc-ticket:`24150`.
|
|
149
|
+- Reduce fragmentation incurred by the non-moving GC's segment allocator. In one application this reduced resident
|
|
150
|
+ set size by 26%. See :ghc-ticket:`24150`.
|
148
|
151
|
|
149
|
|
-- Emit warning when -M < -H.
|
|
152
|
+- Emit warning when :ghc-flag:`-M` is less than :ghc-flag:`-H`.
|
150
|
153
|
|
151
|
154
|
- Fix a bug ((:ghc-ticket:`24672`)) causing programms on FreeBSD to occasionally terminate with the error:
|
152
|
155
|
``internal error: Ticker: read(timerfd) failed with Operation not supported and returned -1``
|
153
|
156
|
|
154
|
|
-- Fixed a bug ((:ghc-ticket:`25503`)) that sometimes caused the rts to terminate with ``internal error: alloc_adjustor_chunk: failed to allocate`` on windows.
|
|
157
|
+- Fixed a bug ((:ghc-ticket:`25503`)) that sometimes caused the runtime to terminate with
|
|
158
|
+ ``internal error: alloc_adjustor_chunk: failed to allocate`` on windows.
|
155
|
159
|
This primarily affect programs making use of the ``foreign import "wrapper"`` functionality.
|
156
|
160
|
|
157
|
|
-- Fixed a bug in compacting gc that could result in program termination with ``update_fwd_large: unknown/strange object 38`` ((:ghc-ticket:`24791`)).
|
|
161
|
+- Fixed a bug in compacting gc that could result in program termination with
|
|
162
|
+ ``update_fwd_large: unknown/strange object 38`` (:ghc-ticket:`24791`).
|
158
|
163
|
|
159
|
164
|
- Fixed a bug where calling ``setNumCapabilities`` with a argument larger than 256 caused crashes. (:ghc-ticket:`25560`)
|
160
|
165
|
|
|
166
|
+- Various runtime system linker improvements:
|
|
167
|
+ - ``R_X86_64_PC64`` relocation support on windows
|
|
168
|
+ - Use m32 allocator for sections when ``NEED_PLT`` - works around ((:ghc-ticket:`24432`))
|
|
169
|
+ - AArch64 - Skip ``NONE`` relocations
|
|
170
|
+
|
|
171
|
+
|
161
|
172
|
Build system and packaging
|
162
|
173
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
163
|
174
|
|
... |
... |
@@ -167,9 +178,9 @@ Build system and packaging |
167
|
178
|
(From https://git.savannah.gnu.org/cgit/config.git/)
|
168
|
179
|
|
169
|
180
|
- GHC now distinguishes more between the Cmm and C preprocessor. The new flags
|
170
|
|
- `-pgmCmmP` and `-optCmmP` can be used to control
|
|
181
|
+ :ghc-flag:`-pgmCmmP` and :ghc-flag:`-optCmmP` can be used to control
|
171
|
182
|
the Cmm preprocessor. C preprocessor flags will still be passed to the Cmm
|
172
|
|
- preprocessor, expect for -g flags which have special handling. Fixes (:ghc-ticket:`24474`)
|
|
183
|
+ preprocessor, expect for :ghc-flag:`-g` flags which have special handling. Fixes (:ghc-ticket:`24474`)
|
173
|
184
|
|
174
|
185
|
- Bindists: Fixed a bug in the Makefile which caused windows installs to duplicate files. ((:ghc-ticket:`24800`))
|
175
|
186
|
|
... |
... |
@@ -177,12 +188,12 @@ Build system and packaging |
177
|
188
|
|
178
|
189
|
- Fixed a bug where running ``Xelatex`` concurrently failed. (:ghc-ticket:`25564`)
|
179
|
190
|
|
180
|
|
-- Fixed a bug where building ghc from source using ghc-9.8.4 failed with an error mentioning ``ghc_unique_counter64``. (:ghc-ticket:`25576`)
|
|
191
|
+- Fixed a bug where building ghc from source using GHC 9.8.4 failed with an error mentioning ``ghc_unique_counter64`` (:ghc-ticket:`25576`)
|
181
|
192
|
|
182
|
193
|
``ghc`` library
|
183
|
194
|
~~~~~~~~~~~~~~~
|
184
|
195
|
|
185
|
|
-- Added some utility functions to `GHC.Data.SmallArray`
|
|
196
|
+- Added some utility functions to ``GHC.Data.SmallArray``
|
186
|
197
|
|
187
|
198
|
``ghc-heap`` library
|
188
|
199
|
~~~~~~~~~~~~~~~~~~~~
|
... |
... |
@@ -192,8 +203,9 @@ Build system and packaging |
192
|
203
|
``ghc-experimental`` library
|
193
|
204
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
194
|
205
|
|
195
|
|
-* Primops and other ghc extensions are now exported via ``GHC.PrimOps``
|
196
|
|
-* The library is now versioned according to the ghc version it shipped with.
|
|
206
|
+- Primops and other GHC extensions are now exported via ``GHC.PrimOps``
|
|
207
|
+
|
|
208
|
+- The library is now versioned according to the ghc version it shipped with.
|
197
|
209
|
|
198
|
210
|
|
199
|
211
|
Included libraries
|
... |
... |
@@ -202,3 +214,40 @@ Included libraries |
202
|
214
|
The package database provided with this distribution also contains a number of
|
203
|
215
|
packages other than GHC itself. See the changelogs provided with these packages
|
204
|
216
|
for further change information.
|
|
217
|
+
|
|
218
|
+.. ghc-package-list::
|
|
219
|
+
|
|
220
|
+ libraries/array/array.cabal: Dependency of ``ghc`` library
|
|
221
|
+ libraries/base/base.cabal: Core library
|
|
222
|
+ libraries/binary/binary.cabal: Dependency of ``ghc`` library
|
|
223
|
+ libraries/bytestring/bytestring.cabal: Dependency of ``ghc`` library
|
|
224
|
+ libraries/Cabal/Cabal/Cabal.cabal: Dependency of ``ghc-pkg`` utility
|
|
225
|
+ libraries/Cabal/Cabal-syntax/Cabal-syntax.cabal: Dependency of ``ghc-pkg`` utility
|
|
226
|
+ libraries/containers/containers/containers.cabal: Dependency of ``ghc`` library
|
|
227
|
+ libraries/deepseq/deepseq.cabal: Dependency of ``ghc`` library
|
|
228
|
+ libraries/directory/directory.cabal: Dependency of ``ghc`` library
|
|
229
|
+ libraries/exceptions/exceptions.cabal: Dependency of ``ghc`` and ``haskeline`` library
|
|
230
|
+ libraries/filepath/filepath.cabal: Dependency of ``ghc`` library
|
|
231
|
+ compiler/ghc.cabal: The compiler itself
|
|
232
|
+ libraries/ghci/ghci.cabal: The REPL interface
|
|
233
|
+ libraries/ghc-boot/ghc-boot.cabal: Internal compiler library
|
|
234
|
+ libraries/ghc-boot-th/ghc-boot-th.cabal: Internal compiler library
|
|
235
|
+ libraries/ghc-compact/ghc-compact.cabal: Core library
|
|
236
|
+ libraries/ghc-heap/ghc-heap.cabal: GHC heap-walking library
|
|
237
|
+ libraries/ghc-prim/ghc-prim.cabal: Core library
|
|
238
|
+ libraries/haskeline/haskeline.cabal: Dependency of ``ghci`` executable
|
|
239
|
+ libraries/hpc/hpc.cabal: Dependency of ``hpc`` executable
|
|
240
|
+ libraries/integer-gmp/integer-gmp.cabal: Core library
|
|
241
|
+ libraries/mtl/mtl.cabal: Dependency of ``Cabal`` library
|
|
242
|
+ libraries/parsec/parsec.cabal: Dependency of ``Cabal`` library
|
|
243
|
+ libraries/pretty/pretty.cabal: Dependency of ``ghc`` library
|
|
244
|
+ libraries/process/process.cabal: Dependency of ``ghc`` library
|
|
245
|
+ libraries/stm/stm.cabal: Dependency of ``haskeline`` library
|
|
246
|
+ libraries/template-haskell/template-haskell.cabal: Core library
|
|
247
|
+ libraries/terminfo/terminfo.cabal: Dependency of ``haskeline`` library
|
|
248
|
+ libraries/text/text.cabal: Dependency of ``Cabal`` library
|
|
249
|
+ libraries/time/time.cabal: Dependency of ``ghc`` library
|
|
250
|
+ libraries/transformers/transformers.cabal: Dependency of ``ghc`` library
|
|
251
|
+ libraries/unix/unix.cabal: Dependency of ``ghc`` library
|
|
252
|
+ libraries/Win32/Win32.cabal: Dependency of ``ghc`` library
|
|
253
|
+ libraries/xhtml/xhtml.cabal: Dependency of ``haddock`` executable |