1. 31 Aug, 2014 2 commits
    • Herbert Valerio Riedel's avatar
      Add `FiniteBits(count{Leading,Trailing}Zeros)` · a8a969ae
      Herbert Valerio Riedel authored
      This exposes the newly added CLZ/CTZ primops from
      e0c1767d (re #9340)
      via two new methods `countLeadingZeros` and `countTrailingZeros`
      in the `Data.Bits.FiniteBits` class.
      The original proposal can be found at
      Test Plan: successful validate
      Reviewers: ekmett, tibbe
      GHC Trac Issues: #9532
      Differential Revision: https://phabricator.haskell.org/D158
    • Herbert Valerio Riedel's avatar
      Re-export Word from Prelude (re #9531) · 393b8202
      Herbert Valerio Riedel authored
      The original proposal text can be found at
      The proposal passed with a clear majority, and was additionally
      confirmed by the core libraries committee.
      *Compatibility Note*
      Only code that imports `Data.Word` for the sole purpose of using `Word`
      *and* requires to be `-Werror`-clean (due to `-fwarn-unused-imports`)
      is affected by this change.
      In order to write warning-free forward/backward compatible against `base`,
      a variant of the following CPP-based snippet can be used:
        -- Starting with base>4.7.0 or GHC>7.8 Prelude re-exports 'Word'
        -- The following is needed, if 'Word' is the *only* entity needed from Data.Word
        #ifdef MIN_VERSION_base
        # if !MIN_VERSION_base(4,7,1)
        import Data.Word (Word)
        # endif
        -- no cabal_macros.h -- fallback to __GLASGOW_HASKELL__
        #elif __GLASGOW_HASKELL__ < 709
        import Data.Word (Word)
      This also updates the haddock submodule in order to avoid a compile warning
  2. 29 Aug, 2014 1 commit
    • Simon Peyton Jones's avatar
      In GHC.Real, specialise 'even' and 'odd' to Int and Integer · db5868cf
      Simon Peyton Jones authored
      This was previously happening by a fluke -- they were called with those types
      in GHC.Real itself -- but my recent changes to specialisation mean that auto
      specialisations like these are not necessarily exported.
      Losing those specialisations made a huge difference to two performance tests
  3. 28 Aug, 2014 5 commits
  4. 22 Aug, 2014 1 commit
  5. 20 Aug, 2014 1 commit
  6. 19 Aug, 2014 4 commits
    • AndreasVoellmy's avatar
      rts/base: Fix #9423 · f9f89b78
      AndreasVoellmy authored
      Fix #9423.
      The problem in #9423 is caused when code invoked by `hs_exit()` waits
      on all foreign calls to return, but some IO managers are in `safe` foreign
      calls and do not return. The previous design signaled to the timer manager
      (via its control pipe) that it should "die" and when the timer manager
      returned to Haskell-land, the Haskell code in timer manager then signalled
      to the IO manager threads that they should return from foreign calls and
      `die`. Unfortunately, in the shutdown sequence the timer manager is unable
      to return to Haskell-land fast enough and so the code that signals to the
      IO manager threads (via their control pipes) is never executed and the IO
      manager threads remain out in the foreign calls.
      This patch solves this problem by having the RTS signal to all the IO
      manager threads (via their control pipes; and in addition to signalling
      to the timer manager thread) that they should shutdown (in `ioManagerDie()`
      in `rts/Signals.c`. To do this, we arrange for each IO manager thread to
      register its control pipe with the RTS (in `GHC.Thread.startIOManagerThread`).
      In addition, `GHC.Thread.startTimerManagerThread` registers its control pipe.
      These are registered via C functions `setTimerManagerControlFd` (in
      `rts/Signals.c`) and `setIOManagerControlFd` (in `rts/Capability.c`). The IO
      manager control pipe file descriptors are stored in a new field of the
      `Capability_ struct`.
      Test Plan: See the notes on #9423 to recreate the problem and to verify that it no longer occurs with the fix.
      Auditors: simonmar
      Reviewers: simonmar, edsko, ezyang, austin
      Reviewed By: austin
      Subscribers: phaskell, simonmar, ezyang, carter, relrod
      Differential Revision: https://phabricator.haskell.org/D129
      GHC Trac Issues: #9423, #9284
    • bernalex's avatar
      Mention that `Data.Ix` uses row-major indexing · 2fc22949
      bernalex authored
      This addresses Trac #8712
       by simply mentioning row-major indexing,
      thereby removing any ambiguity.
      Signed-off-by: default avatarAustin Seipp <austin@well-typed.com>
    • bernalex's avatar
      Make Prelude.signum handle -0.0 correctly (#7858) · d9a20573
      bernalex authored
      Make the `Float` and `Double` implementations of `signum` handle -0.0
      correctly per IEEE-754.
      This, together with "Make Prelude.abs handle -0.0 correctly (#7858)",
      fixes Trac #7858
      Depends on D145
      Signed-off-by: bernalex's avatarAlexander Berntsen <alexander@plaimi.net>
      Test Plan:
      signum of (-0.0) should be (-0.0) not 0.0.
      Test program:
        main =
          putStrLn $ p ++ " " ++ n
            f = show . signum
            p = f (-0.0 :: Double)
          n = f (0.0 :: Double)
      Reviewers: ekmett, hvr, rwbarton, austin
      Reviewed By: austin
      Subscribers: phaskell, simonmar, relrod, ezyang, carter
      Differential Revision: https://phabricator.haskell.org/D148
      GHC Trac Issues: #7858
    • bernalex's avatar
      Make Prelude.abs handle -0.0 correctly (#7858) · 6f6ee6ea
      bernalex authored
      Make the `Float` and `Double` implementations of `abs` handle -0.0
      correctly per IEEE-754.
      abs (-0.0::Float) and abs (-0.0::Double) previously returned -0.0, when
      they should return 0.0. This patch fixes this.
      Signed-off-by: bernalex's avatarAlexander Berntsen <alexander@plaimi.net>
      Test Plan: abs (-0.0::Double) should = 0.0 instead of (-0.0)
      Reviewers: ekmett, hvr, austin, rwbarton
      Reviewed By: austin, rwbarton
      Subscribers: phaskell, trofi, simonmar, relrod, ezyang, carter
      Differential Revision: https://phabricator.haskell.org/D145
      GHC Trac Issues: #7858
  7. 18 Aug, 2014 1 commit
  8. 11 Aug, 2014 1 commit
  9. 10 Aug, 2014 2 commits
  10. 08 Aug, 2014 1 commit
    • Simon Peyton Jones's avatar
      Implement the final change to INCOHERENT from Trac #9242 · dff0623d
      Simon Peyton Jones authored
      The change here is to make INCOHERENT slightly more permissive:
        if the selected candidate is incoherent
        then ignore all unifying candidates
      This allows us to move the {-# INCOHERENT #-} pragma from
        from   instance Typeable (f a)
        to     Typeable (n:Nat) and Typable (s:Symbol)
      where it belongs, and where Trac #9242 said it should be.
      I don't think this will affect anyone.
      I've updated the user manual.
  11. 05 Aug, 2014 2 commits
    • Edward Z. Yang's avatar
      Filter out null bytes from trace, and warn accordingly, fixing #9395. · d360d440
      Edward Z. Yang authored
      Previously, if you ran trace "foo\0bar", the output was truncated so
      that everything after the null byte was omitted.  This was terrible.
      Now we filter out null bytes, and emit an extra trace saying that
      null bytes were filtered out.
      NB: we CANNOT fix debugBelch, because all printf variants *always*
      respect null bytes, even if you're using string precision such as
      %.*s.  The alternative would have been to introduce a new function
      debugRawBelch which did not use format strings and took an explicit
      string length, but I decided we generally should avoid putting null
      bytes in our trace messages, and warn the user.
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      Test Plan: validate
      Reviewers: hvr, austin
      Subscribers: simonmar, relrod, ezyang, carter
      Differential Revision: https://phabricator.haskell.org/D121
      GHC Trac Issues: #9395
    • Edward Z. Yang's avatar
      Package keys (for linking/type equality) separated from package IDs. · 66218d15
      Edward Z. Yang authored
      This patch set makes us no longer assume that a package key is a human
      readable string, leaving Cabal free to "do whatever it wants" to allocate
      keys; we'll look up the PackageId in the database to display to the user.
      This also means we have a new level of qualifier decisions to make at the
      package level, and rewriting some Safe Haskell error reporting code to DTRT.
      Additionally, we adjust the build system to use a new ghc-cabal output
      Make variable PACKAGE_KEY to determine library names and other things,
      rather than concatenating PACKAGE/VERSION as before.
      Adds a new `-this-package-key` flag to subsume the old, erroneously named
      `-package-name` flag, and `-package-key` to select packages by package key.
      RFC: The md5 hashes are pretty tough on the eye, as far as the file
      system is concerned :(
      ToDo: safePkg01 test had its output updated, but the fix is not really right:
      the rest of the dependencies are truncated due to the fact the we're only
      grepping a single line, but ghc-pkg is wrapping its output.
      ToDo: In a later commit, update all submodules to stop using -package-name
      and use -this-package-key.  For now, we don't do it to avoid submodule
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      Test Plan: validate
      Reviewers: simonpj, simonmar, hvr, austin
      Subscribers: simonmar, relrod, carter
      Differential Revision: https://phabricator.haskell.org/D80
  12. 04 Aug, 2014 3 commits
  13. 31 Jul, 2014 1 commit
  14. 28 Jul, 2014 5 commits
  15. 23 Jul, 2014 1 commit
  16. 22 Jul, 2014 1 commit
    • Joachim Breitner's avatar
      Make last a good consumer · b709f0a0
      Joachim Breitner authored
      Make last a good consumer simply by implementing it as foldl. This fixes Trac: #9339.
      Thanks to David Feuer for bringing it up.
      Test Plan: perf/should_run/T9339 + general validation
      Reviewers: austin
      Reviewed By: austin
      Subscribers: phaskell, simonmar, relrod, carter
      Differential Revision: https://phabricator.haskell.org/D86
      Trac Issues: #9339
  17. 20 Jul, 2014 2 commits
  18. 11 Jul, 2014 2 commits
  19. 10 Jul, 2014 1 commit
  20. 06 Jul, 2014 1 commit
  21. 02 Jul, 2014 1 commit
  22. 30 Jun, 2014 1 commit