1. 16 Jan, 2011 6 commits
  2. 15 Jan, 2011 3 commits
    • Ian Lynagh's avatar
      Build system improvements · a3be88fd
      Ian Lynagh authored
      We no longer use dummy-ghc; instead we don't configure most packages
      until the stage1 compiler is available.
        
      We also now use Cabal for building the ghc-bin package.
      
      There are a couple more sanity checks too.
      a3be88fd
    • Ian Lynagh's avatar
      Whitespace tweak · 18fe16c9
      Ian Lynagh authored
      18fe16c9
    • 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
      eb675b52
  3. 14 Jan, 2011 5 commits
  4. 13 Jan, 2011 7 commits
  5. 12 Jan, 2011 2 commits
  6. 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
      c5dbacba
  7. 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
         untagging.
      
       * 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
         variables.
      
       * 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.
      27310213
  8. 11 Jan, 2011 1 commit
  9. 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.
      6ea06bbf
    • simonpj@microsoft.com's avatar
      338cac01
  10. 07 Jan, 2011 1 commit
  11. 05 Jan, 2011 1 commit
  12. 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
      cygpath).
      e8a42ae2
  13. 08 Jan, 2011 3 commits
  14. 30 Nov, 2010 1 commit
  15. 27 Nov, 2010 1 commit
  16. 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).
      8625c675
    • Simon Marlow's avatar
      comment updates · 62db6241
      Simon Marlow authored
      62db6241
  17. 06 Jan, 2011 2 commits
    • Ian Lynagh's avatar
      On Cygwin, use a Cygwin-style path for /bin/install's destination · 57e2a81c
      Ian Lynagh authored
      cygwin's /bin/install doesn't set file modes correctly if the
      destination path is a C: style path:
      
      $ /bin/install -c -m 644 foo /cygdrive/c/cygwin/home/ian/foo2
      $ /bin/install -c -m 644 foo c:/cygwin/home/ian/foo3
      $ ls -l foo*
      -rw-r--r-- 1 ian None 0 2011-01-06 18:28 foo
      -rw-r--r-- 1 ian None 0 2011-01-06 18:29 foo2
      -rwxrwxrwx 1 ian None 0 2011-01-06 18:29 foo3
      
      This causes problems for bindisttest/checkBinaries.sh which then
      thinks that e.g. the userguide HTML files are binaries.
      
      We therefore use a /cygdrive path if we are on cygwin
      57e2a81c
    • Ian Lynagh's avatar
      Fix mkUserGuidePart program name on Windows · af6b7e5d
      Ian Lynagh authored
      af6b7e5d