Skip to content
Snippets Groups Projects
This project is mirrored from https://*****:*****@gitlab.haskell.org/ghc/ghc.git. Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer or owner.
Last successful update .
  1. Jun 06, 2023
  2. Jun 03, 2023
  3. Jun 02, 2023
  4. Jun 01, 2023
  5. May 31, 2023
    • mimi.vx's avatar
      Update rdt-theme to latest upstream version · 70526f5b
      mimi.vx authored and Marge Bot's avatar Marge Bot committed
      Fixes #23444
      70526f5b
    • sheaf's avatar
      Restructure the zonker · f62d8195
      sheaf authored and Marge Bot's avatar Marge Bot committed
      This commit splits up the zonker into a few separate components, described
      in Note [The structure of the zonker] in `GHC.Tc.Zonk.Type`.
      
      1. `GHC.Tc.Zonk.Monad` introduces a pared-down `TcM` monad, `ZonkM`,
           which has enough information for zonking types.
           This allows us to refactor `ErrCtxt` to use `ZonkM` instead of `TcM`,
           which guarantees we don't throw an error while reporting an error.
      
      2. `GHC.Tc.Zonk.Env` is the new home of `ZonkEnv`, and also defines
          two zonking monad transformers, `ZonkT` and `ZonkBndrT`.
          `ZonkT` is a reader monad transformer over `ZonkEnv`.
          `ZonkBndrT m` is the codensity monad over `ZonkT m`.
      
           `ZonkBndrT` is used for computations that accumulate binders
           in the `ZonkEnv`.
      
      3. `GHC.Tc.Zonk.TcType` contains the code for zonking types, for use
          in the typechecker. It uses the `ZonkM` monad.
      
      4. `GHC.Tc.Zonk.Type` contains the code for final zonking to `Type`,
          which has been refactored to use `ZonkTcM = ZonkT TcM` and
          `ZonkBndrTcM = ZonkBndrT TcM`.
      
      Allocations slightly decrease on the whole due to using
      continuation-passing style instead of manual state passing of ZonkEnv
      in the final zonking to Type.
      
      -------------------------
      Metric Decrease:
          T4029
          T8095
          T14766
          T15304
          hard_hole_fits
          RecordUpdPerf
      Metric Increase:
          T10421
      -------------------------
      f62d8195
    • sheaf's avatar
      Introduce Codensity monad · 88cc19b3
      sheaf authored and Marge Bot's avatar Marge Bot committed
      The Codensity monad is useful to write state-passing computations in
      continuation-passing style, e.g. to implement a State monad as
      continuation-passing style over a Reader monad.
      88cc19b3
    • sheaf's avatar
      Split off TcRef into its own module · 09d4d307
      sheaf authored and Marge Bot's avatar Marge Bot committed
      This helps avoid pull in the full TcM monad when we just want access
      to mutable references in the typechecker. This facilitates later patches
      which introduce a slimmed down TcM monad for zonking.
      09d4d307
    • sheaf's avatar
      Split off TcBinderStack into its own module · 5366cd35
      sheaf authored and Marge Bot's avatar Marge Bot committed
      This commit splits off TcBinderStack into its own module,
      to avoid module cycles: we might want to refer to it without also
      pulling in the TcM monad.
      5366cd35
    • sheaf's avatar
      Data.Bag: add INLINEABLE to polymorphic functions · d56dd695
      sheaf authored and Marge Bot's avatar Marge Bot committed
      This commit allows polymorphic methods in GHC.Data.Bag to be
      specialised, avoiding having to pass explicit dictionaries when they
      are instantiated with e.g. a known monad.
      d56dd695
    • Arnaud Spiwack's avatar
      Push coercions across multiplicity boundaries · bf9344d2
      Arnaud Spiwack authored and Marge Bot's avatar Marge Bot committed
      Per the new `Note [Linting linearity]`, we want optimisations over
      trying to preserve linearity. This will avoid preventing inlinings and
      reductions and make linear programs more efficient.
      bf9344d2
    • Arnaud Spiwack's avatar
      Allow CPR on unrestricted constructors · 981e5e11
      Arnaud Spiwack authored and Marge Bot's avatar Marge Bot committed
      Per the new `Note [Linting linearity]`, we want optimisations over
      trying to preserve linearity. This will allow CPR to handle `Ur`, in
      particular.
      981e5e11
  6. May 30, 2023
    • Ben Gamari's avatar
      Move via-C flags into GHC · 6629f1c5
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      These were previously hardcoded in configure (with no option for
      overriding them) and simply passed onto ghc through the settings file.
      
      Since configure already guarantees gcc supports those flags, we simply
      move them into GHC.
      6629f1c5
    • Matthew Pickering's avatar
      testsuite: Pass -kb16k -kc128k for performance tests · b4816919
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      Setting a larger stack chunk size gives a greater protection
      from stack thrashing (where the repeated overflow/underflow allocates a lot of
      stack chunks which sigificantly impact allocations). This
      stabilises some tests against differences cause by more things being
      pushed onto the stack.
      
      The performance tests are generally testing work done by the compiler,
      using allocation as a proxy, so removing/stabilising the allocations due
      to the stack gives us more stable tests which are also more sensitive
      to actual changes in compiler performance.
      
      The tests which increase are ones where we compile a lot of modules, and
      for each module we spawn a thread to compile the module in. Therefore
      increasing these numbers has a multiplying effect on these tests because
      there are many more stacks which we can increase in size.
      
      The most significant improvements though are cases such as T8095 which
      reduce significantly in allocations (30%). This isn't a performance
      improvement really but just helps stabilise the test against this
      threshold set by the defaults.
      
      Fixes #23439
      
      -------------------------
      Metric Decrease:
          InstanceMatching
          T14683
          T8095
          T9872b_defer
          T9872d
          T9961
          hie002
          T19695
          T3064
      Metric Increase:
          MultiLayerModules
          T13701
          T14697
      -------------------------
      b4816919
  7. May 29, 2023
  8. May 27, 2023
    • Alan Zimmerman's avatar
      EPA: Better fix for #22919 · 69fdbece
      Alan Zimmerman authored and Marge Bot's avatar Marge Bot committed
      The original fix for #22919 simply removed the ability to match up
      prior comments with the first declaration in the file.
      
      Restore it, but add a check that the comment is on a single line, by
      ensuring that it comes immediately prior to the next thing (comment or
      start of declaration), and that the token preceding it is not on the
      same line.
      
      closes #22919
      69fdbece
    • Oleg Grenrus's avatar
      Change GHC.Driver.Session import to .DynFlags · fad9d092
      Oleg Grenrus authored and Marge Bot's avatar Marge Bot committed
      Also move targetPlatform selector
      
      Plenty of GHC needs just DynFlags.
      Even more can be made to use .DynFlags if more selectors is migrated.
      This is a low hanging fruit.
      fad9d092
  9. May 26, 2023
Loading