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
      
        http://www.haskell.org/pipermail/libraries/2014-August/023567.html
      
      Test Plan: successful validate
      
      Reviewers: ekmett, tibbe
      
      GHC Trac Issues: #9532
      
      Differential Revision: https://phabricator.haskell.org/D158
      a8a969ae
    • 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
      
        http://www.haskell.org/pipermail/libraries/2014-August/023491.html
      
      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)
        #endif
      
      This also updates the haddock submodule in order to avoid a compile warning
      393b8202
  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
         perf/should_run/MethSharing
         perf/should_run/T9339
      db5868cf
  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
      Summary:
      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
      f9f89b78
    • 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>
      2fc22949
    • bernalex's avatar
      Make Prelude.signum handle -0.0 correctly (#7858) · d9a20573
      bernalex authored
      Summary:
      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
          where
            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
      d9a20573
    • bernalex's avatar
      Make Prelude.abs handle -0.0 correctly (#7858) · 6f6ee6ea
      bernalex authored
      
      
      Summary:
      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
      6f6ee6ea
  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.
      dff0623d
  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
      
      
      Summary:
      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
      d360d440
    • 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
      explosion.
      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
      66218d15
  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
      Summary:
      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
      b709f0a0
  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