Ben Gamari pushed to branch ghc-9.10 at Glasgow Haskell Compiler / GHC

Commits:

2 changed files:

Changes:

  • docs/users_guide/9.10.1-notes.rst
    ... ... @@ -244,6 +244,9 @@ Compiler
    244 244
       arguments. This may be preferred over :ghc-flag:`-fprof-late-overloaded` since
    
    245 245
       it may reveal whether imported functions are called overloaded.
    
    246 246
     
    
    247
    +- The :ghc-flag:`-fkeep-auto-rules` flag was introduced, forcing GHC to keep auto generated
    
    248
    +  specialization rules.
    
    249
    +
    
    247 250
     JavaScript backend
    
    248 251
     ~~~~~~~~~~~~~~~~~~
    
    249 252
     
    

  • docs/users_guide/9.10.2-notes.rst
    ... ... @@ -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