Teo Camarasu pushed to branch wip/T26707 at Glasgow Haskell Compiler / GHC

Commits:

2 changed files:

Changes:

  • docs/users_guide/9.16.1-notes.rst
    ... ... @@ -2,168 +2,59 @@
    2 2
     
    
    3 3
     Version 9.16.1
    
    4 4
     ==============
    
    5
    -
    
    6 5
     The significant changes to the various parts of the compiler are listed in the
    
    7 6
     following sections. See the `migration guide
    
    8 7
     <https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.16>`_ on the GHC Wiki
    
    9 8
     for specific guidance on migrating programs to this release.
    
    10 9
     
    
    11
    -Language
    
    12
    -~~~~~~~~
    
    13
    -
    
    14
    -- Fix a bug introduced in GHC 9.10 where GHC would erroneously accept infix uses
    
    15
    -  of promoted data constructors without enabling :extension:`DataKinds`. As a
    
    16
    -  result, you may need to enable :extension:`DataKinds` in code that did not
    
    17
    -  previously require it.
    
    18 10
     
    
    19
    -- ``Type`` and ``Constraint`` are now (at last) completely distinct types, just as much
    
    20
    -  as ``Int`` and ``Bool``.  For example, you can now
    
    21
    -  write::
    
    11
    +Compiler
    
    12
    +~~~~~~~~
    
    22 13
     
    
    23
    -    type family F a
    
    24 14
     
    
    25
    -    type instance F Type = Int
    
    26
    -    type instance F Constraint = Bool
    
    15
    +Profiling
    
    16
    +~~~~~~~~~
    
    27 17
     
    
    28
    -  which was previously rejected with "Conflicting family instance declarations".
    
    29 18
     
    
    30
    -- The extension :extension:`ExplicitNamespaces` now allows namespace-specified
    
    31
    -  wildcards ``type ..`` and ``data ..`` in import and export lists.
    
    19
    +Native code generator backend
    
    20
    +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    32 21
     
    
    33
    -Compiler
    
    34
    -~~~~~~~~
    
    35 22
     
    
    36
    -- Code coverage's (:ghc-flag:`-fhpc`) treatment of record fields now extends
    
    37
    -  beyond record fields accessed via :extension:`RecordWildCards` and
    
    38
    -  :extension:`NamedFieldPuns`, and also handles access to nested record fields.
    
    39
    -  That is, in a pattern such as ``Foo{bar = Bar{baz = b}}`` both ``bar`` and
    
    40
    -  ``baz`` will now be marked as covered if ``b`` is evaluated. Note that this
    
    41
    -  currently only works when record fields (or values contained within them) are
    
    42
    -  bound to variables. The very similar pattern ``Foo{bar = Bar{baz = 42}}``
    
    43
    -  will will not yet mark ``bar`` or ``baz`` as covered.
    
    23
    +LLVM backend
    
    24
    +~~~~~~~~~~~~
    
    44 25
     
    
    45
    -- Pattern synonyms can now be suggested as valid hole fits (except, of course,
    
    46
    -  if they are unidirectional).
    
    47 26
     
    
    48
    -- GHC uses the information from the definition of a *closed* type family to
    
    49
    -  generate some extra functional dependencies for type equalities involving
    
    50
    -  that type family. As a consequence:
    
    51 27
     
    
    52
    -  * typechecking will succeed a bit more often (see :ghc-ticket:`23162`)
    
    53
    -  * pattern-match incompleteness checking is a bit smarter, giving fewer false warnings (see :ghc-ticket:`#22652`)
    
    28
    +JavaScript backend
    
    29
    +~~~~~~~~~~~~~~~~~~
    
    54 30
     
    
    55
    -- When multiple ``-msse*`` flags are given, the maximum version takes effect.
    
    56
    -  For example, ``-msse4.2 -msse2`` is now equivalent to ``-msse4.2``.
    
    57
    -  Previously, only the last flag took effect.
    
    58 31
     
    
    59
    -- Some x86 architecture flags now imply other flags.
    
    60
    -  For example, :ghc-flag:`-mavx` now implies :ghc-flag:`-msse4.2`,
    
    61
    -  and :ghc-flag:`-mavx512f` now implies :ghc-flag:`-mfma`
    
    62
    -  in addition to :ghc-flag:`-mavx2`.
    
    63
    -  Refer to the users' guide for more details about each individual flag.
    
    32
    +WebAssembly backend
    
    33
    +~~~~~~~~~~~~~~~~~~~
    
    64 34
     
    
    65 35
     
    
    66 36
     GHCi
    
    67 37
     ~~~~
    
    68 38
     
    
    39
    +
    
    69 40
     Runtime system
    
    70 41
     ~~~~~~~~~~~~~~
    
    71 42
     
    
    72
    -- Add a new `poll` I/O manager, based on the classic unix `poll()` API. It is
    
    73
    -  available in the single-threaded RTS on posix platforms. The `select` I/O
    
    74
    -  manager remains the default for this combination for now, but this default
    
    75
    -  may change in future releases. The new I/O manager can be selected via the
    
    76
    -  runtime flag :rts-flag:`--io-manager=(name)`.
    
    77
    -
    
    78
    -  Compared to the `select` I/O manager, this one has slightly less severe
    
    79
    -  restrictions on the number of sockets/pipes that can be waited on, though
    
    80
    -  it still scales poorly for waiting on socket/pipe readiness. It does however
    
    81
    -  scale much better for thread timers (such as `threadDelay`), and improves
    
    82
    -  timer precision on 32bit Linux and 32bit FreeBSD from milliseconds to
    
    83
    -  microseconds.
    
    84
    -
    
    85
    -  This I/O manager introduces new infrastructure for I/O managers that is
    
    86
    -  intended to be used in future for a new generation of in-RTS I/O managers,
    
    87
    -  using more scalable platform-specific APIs (such as epoll, io_uring and
    
    88
    -  kqueue). This first one, based on `poll()`, is merely intended to be
    
    89
    -  portable.
    
    90
    -
    
    43
    +- The default for :rts-flag:`--eventlog-flush-interval=⟨seconds⟩` has changed from being disabled to being enabled with a flush inverval of 5 seconds.
    
    91 44
     
    
    92
    -Cmm
    
    93
    -~~~
    
    94
    -
    
    95
    -``base`` library
    
    96
    -~~~~~~~~~~~~~~~~
    
    97
    -
    
    98
    -- Updated to `Unicode 17.0.0
    
    99
    -  <https://www.unicode.org/versions/Unicode17.0.0>`_.
    
    100
    -
    
    101
    -``ghc-prim`` library
    
    102
    -~~~~~~~~~~~~~~~~~~~~
    
    45
    +Build system and packaging
    
    46
    +~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    103 47
     
    
    104 48
     ``ghc`` library
    
    105 49
     ~~~~~~~~~~~~~~~
    
    106 50
     
    
    51
    +
    
    107 52
     ``ghc-heap`` library
    
    108 53
     ~~~~~~~~~~~~~~~~~~~~
    
    109 54
     
    
    110
    -``ghc-experimental`` library
    
    111
    -~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    112
    -
    
    113
    -- New SIMD primops for bitwise logical operations on 128-wide vectors.
    
    114 55
     
    
    115
    -``template-haskell`` library
    
    56
    +``ghc-experimental`` library
    
    116 57
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    117 58
     
    
    118
    -- We have added the ``addDependentDirectory`` function to match
    
    119
    -  ``addDependentFile``, which adds a directory to the list of dependencies that
    
    120
    -  the recompilation checker will look at to determine if a module needs to be
    
    121
    -  recompiled.
    
    122
    -
    
    123 59
     Included libraries
    
    124 60
     ~~~~~~~~~~~~~~~~~~
    125
    -
    
    126
    -The package database provided with this distribution also contains a number of
    
    127
    -packages other than GHC itself. See the changelogs provided with these packages
    
    128
    -for further change information.
    
    129
    -
    
    130
    -.. ghc-package-list::
    
    131
    -
    
    132
    -    libraries/array/array.cabal:                         Dependency of ``ghc`` library
    
    133
    -    libraries/base/base.cabal:                           Core library
    
    134
    -    libraries/binary/binary.cabal:                       Dependency of ``ghc`` library
    
    135
    -    libraries/bytestring/bytestring.cabal:               Dependency of ``ghc`` library
    
    136
    -    libraries/Cabal/Cabal/Cabal.cabal:                   Dependency of ``ghc-pkg`` utility
    
    137
    -    libraries/Cabal/Cabal-syntax/Cabal-syntax.cabal:     Dependency of ``ghc-pkg`` utility
    
    138
    -    libraries/containers/containers/containers.cabal:    Dependency of ``ghc`` library
    
    139
    -    libraries/deepseq/deepseq.cabal:                     Dependency of ``ghc`` library
    
    140
    -    libraries/directory/directory.cabal:                 Dependency of ``ghc`` library
    
    141
    -    libraries/exceptions/exceptions.cabal:               Dependency of ``ghc`` and ``haskeline`` library
    
    142
    -    libraries/filepath/filepath.cabal:                   Dependency of ``ghc`` library
    
    143
    -    compiler/ghc.cabal:                                  The compiler itself
    
    144
    -    libraries/ghci/ghci.cabal:                           The REPL interface
    
    145
    -    libraries/ghc-boot/ghc-boot.cabal:                   Internal compiler library
    
    146
    -    libraries/ghc-boot-th/ghc-boot-th.cabal:             Internal compiler library
    
    147
    -    libraries/ghc-compact/ghc-compact.cabal:             Core library
    
    148
    -    libraries/ghc-heap/ghc-heap.cabal:                   GHC heap-walking library
    
    149
    -    libraries/ghc-prim/ghc-prim.cabal:                   Core library
    
    150
    -    utils/haddock/haddock-api/haddock-api.cabal:         Dependency of ``haddock`` executable
    
    151
    -    utils/haddock/haddock-library/haddock-library.cabal: Dependency of ``haddock`` executable
    
    152
    -    libraries/haskeline/haskeline.cabal:                 Dependency of ``ghci`` executable
    
    153
    -    libraries/hpc/hpc.cabal:                             Dependency of ``hpc`` executable
    
    154
    -    libraries/integer-gmp/integer-gmp.cabal:             Core library
    
    155
    -    libraries/mtl/mtl.cabal:                             Dependency of ``Cabal`` library
    
    156
    -    libraries/parsec/parsec.cabal:                       Dependency of ``Cabal`` library
    
    157
    -    libraries/pretty/pretty.cabal:                       Dependency of ``ghc`` library
    
    158
    -    libraries/process/process.cabal:                     Dependency of ``ghc`` library
    
    159
    -    libraries/stm/stm.cabal:                             Dependency of ``haskeline`` library
    
    160
    -    libraries/template-haskell/template-haskell.cabal:   Core library
    
    161
    -    libraries/terminfo/terminfo.cabal:                   Dependency of ``haskeline`` library
    
    162
    -    libraries/text/text.cabal:                           Dependency of ``Cabal`` library
    
    163
    -    libraries/time/time.cabal:                           Dependency of ``ghc`` library
    
    164
    -    libraries/transformers/transformers.cabal:           Dependency of ``ghc`` library
    
    165
    -    libraries/unix/unix.cabal:                           Dependency of ``ghc`` library
    
    166
    -    libraries/Win32/Win32.cabal:                         Dependency of ``ghc`` library
    
    167
    -    libraries/xhtml/xhtml.cabal:                         Dependency of ``haddock`` executable
    
    168
    -    libraries/os-string/os-string.cabal:                 Dependency of ``filepath`` library
    
    169
    -    libraries/file-io/file-io.cabal:                     Dependency of ``directory`` library

  • rts/RtsFlags.c
    ... ... @@ -250,7 +250,7 @@ void initRtsFlagsDefaults(void)
    250 250
         RtsFlags.TraceFlags.ticky         = false;
    
    251 251
         RtsFlags.TraceFlags.trace_output  = NULL;
    
    252 252
     #  if defined(THREADED_RTS)
    
    253
    -    RtsFlags.TraceFlags.eventlogFlushTime = 0;
    
    253
    +    RtsFlags.TraceFlags.eventlogFlushTime = SecondsToTime(5); // 5s
    
    254 254
     #  endif
    
    255 255
         RtsFlags.TraceFlags.nullWriter = false;
    
    256 256
     #endif