1. 01 Oct, 2020 1 commit
  2. 26 Sep, 2020 1 commit
  3. 23 Jul, 2020 1 commit
  4. 07 Jul, 2020 1 commit
    • Sylvain Henry's avatar
      BigNum: rename BigNat types · d3bd6897
      Sylvain Henry authored
      Before this patch BigNat names were confusing because we had:
      
      * GHC.Num.BigNat.BigNat: unlifted type used everywhere else
      * GHC.Num.BigNat.BigNatW: lifted type only used to share static constants
      * GHC.Natural.BigNat: lifted type only used for backward compatibility
      
      After this patch we have:
      
      * GHC.Num.BigNat.BigNat#: unlifted type
      * GHC.Num.BigNat.BigNat: lifted type (reexported from GHC.Natural)
      
      Thanks to @RyanGlScott for spotting this.
      d3bd6897
  5. 27 Jun, 2020 1 commit
    • Sylvain Henry's avatar
      Fix ghc-bignum exceptions · 1b3d13b6
      Sylvain Henry authored
      We must ensure that exceptions are not simplified. Previously we used:
      
         case raiseDivZero of
            _ -> 0## -- dummyValue
      
      But it was wrong because the evaluation of `raiseDivZero` was removed and
      the dummy value was directly returned. See new Note [ghc-bignum exceptions].
      
      I've also removed the exception triggering primops which were fragile.
      We don't need them to be primops, we can have them exported by ghc-prim.
      
      I've also added a test for #18359 which triggered this patch.
      1b3d13b6
  6. 24 Jun, 2020 1 commit
  7. 17 Jun, 2020 1 commit
    • Sylvain Henry's avatar
      ghc-bignum library · 9f96bc12
      Sylvain Henry authored
      ghc-bignum is a newer package that aims to replace the legacy
      integer-simple and integer-gmp packages.
      
      * it supports several backends. In particular GMP is still supported and
        most of the code from integer-gmp has been merged in the "gmp"
        backend.
      
      * the pure Haskell "native" backend is new and is much faster than the
        previous pure Haskell implementation provided by integer-simple
      
      * new backends are easier to write because they only have to provide a
        few well defined functions. All the other code is common to all
        backends. In particular they all share the efficient small/big number
        distinction previously used only in integer-gmp.
      
      * backends can all be tested against the "native" backend with a simple
        Cabal flag. Backends are only allowed to differ in performance, their
        results should be the same.
      
      * Add `integer-gmp` compat package: provide some pattern synonyms and
        function aliases for those in `ghc-bignum`. It is intended to avoid
        breaking packages that depend o...
      9f96bc12