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. Dec 11, 2023
    • Arnaud Spiwack's avatar
      Linear let and where bindings · 8e0446df
      Arnaud Spiwack authored
      For expediency, the initial implementation of linear types in GHC
      made it so that let and where binders would always be considered
      unrestricted. This was rather unpleasant, and probably a big obstacle
      to adoption. At any rate, this was not how the proposal was designed.
      
      This patch fixes this infelicity. It was surprisingly difficult to
      build, which explains, in part, why it took so long to materialise.
      
      As of this patch, let or where bindings marked with %1 will be
      linear (respectively %p for an arbitrary multiplicity p). Unmarked let
      will infer their multiplicity.
      
      Here is a prototypical example of program that used to be rejected and
      is accepted with this patch:
      
      ```haskell
      f :: A %1 -> B
      g :: B %1 -> C
      
      h :: A %1 -> C
      h x = g y
        where
          y = f x
      ```
      
      Exceptions:
      - Recursive let are unrestricted, as there isn't a clear semantics of
        what a linear recursive binding would be.
      - Destructive lets with lazy bindings are unrestricted, as their
        desugaring isn't linear (see also #23461).
      - (Strict) destructive lets with inferred polymorphic type are
        unrestricted. Because the desugaring isn't linear (See #18461
        down-thread).
      
      Closes #18461 and #18739
      
      Co-authored-by: @jackohughes
      8e0446df
    • Arnaud Spiwack's avatar
      LinearTypes => MonoLocalBinds · 188b280d
      Arnaud Spiwack authored
      188b280d
    • Zubin's avatar
      compiler: Force IfGlobalRdrEnv in NFData instance. · 522c12a4
      Zubin authored and Marge Bot's avatar Marge Bot committed
      522c12a4
    • Zubin's avatar
      compiler: Add some strictness annotations to ImportSpec and related constructors · e822ff88
      Zubin authored and Marge Bot's avatar Marge Bot committed
      This prevents us from retaining entire HscEnvs.
      
      Force these ImportSpecs when forcing the GlobalRdrEltX
      
      Adds an NFData instance for Bag
      
      Fixes #24107
      e822ff88
    • Zubin's avatar
      testsuite: add test for #24118 and #24107 · 105c370c
      Zubin authored and Marge Bot's avatar Marge Bot committed
      MultiLayerModulesDefsGhci was not able to catch the leak because it uses
      :l which discards the previous environment.
      
      Using :r catches both of these leaks
      105c370c
    • Zubin's avatar
      driver: Ensure we force the lookup of old build artifacts before returning the build plan · 8e5745a0
      Zubin authored and Marge Bot's avatar Marge Bot committed
      This prevents us from retaining all previous build artifacts in memory until a
      recompile finishes, instead only retaining the exact artifacts we need.
      
      Fixes #24118
      8e5745a0
    • Zubin's avatar
      driver: Ensure we actually clear the interactive context before reloading · 58d56644
      Zubin authored and Marge Bot's avatar Marge Bot committed
      Previously we called discardIC, but immediately after set the session
      back to an old HscEnv that still contained the IC
      
      Partially addresses #24107
      Fixes #23405
      58d56644
    • Vladislav Zavialov's avatar
      Make forall a keyword (#23719) · d9e4c597
      Vladislav Zavialov authored and Marge Bot's avatar Marge Bot committed
      Before this change, GHC used to accept `forall` as a term-level
      identifier:
      
      	-- from constraints-0.13
      	forall :: forall p. (forall a. Dict (p a)) -> Dict (Forall p)
      	forall d = ...
      
      Now it is a parse error.
      
      The -Wforall-identifier warning has served its purpose and is now
      a deprecated no-op.
      d9e4c597
  2. Dec 08, 2023
  3. Dec 06, 2023
  4. Dec 03, 2023
  5. Nov 30, 2023
    • Krzysztof Gogolewski's avatar
      Kind-check body of a required forall · bd8acc0c
      Krzysztof Gogolewski authored and Marge Bot's avatar Marge Bot committed
      We now require that in 'forall a -> ty', ty has kind TYPE r for some r.
      Fixes #24176
      bd8acc0c
    • Alan Zimmerman's avatar
      EPA: EpaDelta for comment has no comments · c7623b22
      Alan Zimmerman authored and Marge Bot's avatar Marge Bot committed
      EpaLocation is used to position things. It has two constructors,
      EpaSpan holding a SrcSpan, and EpaDelta with a delta position and a
      possible list of comments.  The comment list is needed because the
      location in EpaDelta has no absolute information to decide which
      comments should be emitted before them when printing.
      
      But it is also used for specifying the position of a comment.  To
      prevent the absurdity of a comment position having a list of comments
      in it, we make EpaLocation parameterisable, using comments for the
      normal case and a constant for within comments.
      
      Updates haddock submodule.
      
      aarch64-darwin
      Metric Decrease:
          MultiLayerModulesTH_OneShot
      c7623b22
    • Sebastian Graf's avatar
      perf tests: Move comments into new `Note [Sensitivity to unique increment]` (#19414) · cbc03fa0
      Sebastian Graf authored and Marge Bot's avatar Marge Bot committed
      And additionally to T12545, link from T8095, T13386 to this new Note.
      cbc03fa0
Loading