1. 15 Jan, 2011 2 commits
    • Ian Lynagh's avatar
      Whitespace tweak · 18fe16c9
      Ian Lynagh authored
    • Ian Lynagh's avatar
      Fix libffi build rules · eb675b52
      Ian Lynagh authored
      Fixes a rare race when both libHSffi.a and libHSffi_p.a were being built
      at the same time:
      "cp" libffi/dist-install/build/libffi.a libffi/dist-install/build/libHSffi.a
      "cp" libffi/dist-install/build/libffi.a libffi/dist-install/build/libHSffi.a
      "cp" libffi/dist-install/build/libffi.so libffi/dist-install/build/libHSffi-ghc7.1.20110115.so
      cp: cannot create regular file `libffi/dist-install/build/libHSffi.a': File exists
  2. 14 Jan, 2011 5 commits
  3. 13 Jan, 2011 7 commits
  4. 12 Jan, 2011 2 commits
  5. 07 Jan, 2011 1 commit
    • Simon Marlow's avatar
      In configure, test that GHC generates code for the correct platform (#4819) · c5dbacba
      Simon Marlow authored
      Patch supplied by the bug reporter, tidied up by me.
      $ ./configure --with-ghc=$HOME/fp/bin/i386-unknown-linux/ghc --build=x86_64-unknown-linux
      checking for gfind... no
      checking for find... /usr/bin/find
      checking for sort... /usr/bin/sort
      checking for GHC version date... inferred 7.1.20110107
      checking version of ghc... 7.0.1
      checking build system type... x86_64-unknown-linux-gnu
      checking host system type... x86_64-unknown-linux-gnu
      checking target system type... x86_64-unknown-linux-gnu
      Host platform inferred as: i386-unknown-linux
      Target platform inferred as: i386-unknown-linux
      This GHC (/home/simonmar/fp/bin/i386-unknown-linux/ghc) does not generate code for the build platform
         GHC target platform    : i386-unknown-linux
         Desired build platform : x86_64-unknown-linux
  6. 12 Jan, 2011 1 commit
    • simonpj@microsoft.com's avatar
      Major refactoring of the type inference engine · 27310213
      simonpj@microsoft.com authored
      This patch embodies many, many changes to the contraint solver, which
      make it simpler, more robust, and more beautiful.  But it has taken
      me ages to get right. The forcing issue was some obscure programs
      involving recursive dictionaries, but these eventually led to a
      massive refactoring sweep.
      Main changes are:
       * No more "frozen errors" in the monad.  Instead "insoluble
         constraints" are now part of the WantedConstraints type.
       * The WantedConstraint type is a product of bags, instead of (as
         before) a bag of sums.  This eliminates a good deal of tagging and
       * This same WantedConstraints data type is used
           - As the way that constraints are gathered
           - As a field of an implication constraint
           - As both argument and result of solveWanted
           - As the argument to reportUnsolved
       * We do not generate any evidence for Derived constraints. They are
         purely there to allow "impovement" by unifying unification
       * In consequence, nothing is ever *rewritten* by a Derived
         constraint.  This removes, by construction, all the horrible
         potential recursive-dictionary loops that were making us tear our
         hair out.  No more isGoodRecEv search either. Hurrah!
       * We add the superclass Derived constraints during canonicalisation,
         after checking for duplicates.  So fewer superclass constraints
         are generated than before.
       * Skolem tc-tyvars no longer carry SkolemInfo.  Instead, the
         SkolemInfo lives in the GivenLoc of the Implication, where it
         can be tidied, zonked, and substituted nicely.  This alone is
         a major improvement.
       * Tidying is improved, so that we tend to get t1, t2, t3, rather
         than t1, t11, t111, etc
         Moreover, unification variables are always printed with a digit
         (thus a0, a1, etc), so that plain 'a' is available for a skolem
         arising from a type signature etc. In this way,
           (a) We quietly say which variables are unification variables,
               for those who know and care
           (b) Types tend to get printed as the user expects.  If he writes
                   f :: a -> a
                   f = ...blah...
               then types involving 'a' get printed with 'a', rather than
               some tidied variant.
       * There are significant improvements in error messages, notably
         in the "Cannot deduce X from Y" messages.
  7. 11 Jan, 2011 1 commit
  8. 10 Jan, 2011 2 commits
    • simonpj@microsoft.com's avatar
      Do dependency analysis when kind-checking type declarations · 6ea06bbf
      simonpj@microsoft.com authored
      This patch fixes Trac #4875.  The main point is to do dependency
      analysis on type and class declarations, and kind-check them in
      dependency order, so as to improve error messages.
      This patch means that a few programs that would typecheck before won't
      typecheck any more; but before we were (naughtily) going beyond
      Haskell 98 without any language-extension flags, and Trac #4875
      convinces me that doing so is a Bad Idea.
      Here's an example that won't typecheck any more
             data T a b = MkT (a b)
             type F k = T k Maybe
      If you look at T on its own you'd default 'a' to kind *->*;
      and then kind-checking would fail on F.
      But GHC currently accepts this program beause it looks at
      the *occurrences* of T.
    • simonpj@microsoft.com's avatar
  9. 07 Jan, 2011 1 commit
  10. 05 Jan, 2011 1 commit
  11. 09 Jan, 2011 1 commit
    • Ian Lynagh's avatar
      Rejig the includes/ installation rules · e8a42ae2
      Ian Lynagh authored
      They're a little nicer now, and a regression in the cygwin build is
      fixed (the $i in the destination wasn't surviving being passed through
  12. 08 Jan, 2011 3 commits
  13. 30 Nov, 2010 1 commit
  14. 27 Nov, 2010 1 commit
  15. 07 Jan, 2011 2 commits
    • Simon Marlow's avatar
      catch SIGTSTP and save/restore terminal settings (#4460) · 8625c675
      Simon Marlow authored
      As far as I can tell, it is the responsibility of the program to save
      and restore its own terminal settings across a suspend/foreground, the
      shell doesn't do it (which seems odd).  So I've added a signal handler
      for SIGTSTP to the RTS which will save and restore the terminal
      settings iff we modified them with hSetBuffering or hSetEcho (we
      already restore them at exit time in these cases).
    • Simon Marlow's avatar
      comment updates · 62db6241
      Simon Marlow authored
  16. 06 Jan, 2011 6 commits
  17. 05 Jan, 2011 1 commit
  18. 05 Nov, 2010 1 commit
    • vivian's avatar
      multiline commands in GHCi #4316 · 4edbeb14
      vivian authored
      This patch adds support for multiline commands in GHCi.
      The first line of input is lexed.  If there is an active
      layout context once the lexer reaches the end of file, the
      user is prompted for more input.
      Multiline input is exited by an empty line and can be escaped 
      with a user interrupt.
      Multiline mode is toggled with `:set +m`
  19. 05 Jan, 2011 1 commit