1. 18 Jun, 2012 1 commit
  2. 14 Jun, 2012 2 commits
  3. 12 Jun, 2012 1 commit
    • Simon Peyton Jones's avatar
      Revive 'mdo' expressions, per discussion in Trac #4148 · 4f8e86b4
      Simon Peyton Jones authored
      Summary:
        - mdo expressions are enabled by RecursiveDo pragma
      
        - mdo expressions perform full segmentation
      
        - 'rec' groups inside 'do' are changed so they do *not*
          perform any segmentation.
      
        - Both 'mdo' and 'rec' are enabled by 'RecursiveDo'
          'DoRec' is deprecated in favour of 'RecursiveDo'
          (The 'rec' keyword is also enabled by 'Arrows', as now.)
      
      Thanks to Levent for doing all the work
      4f8e86b4
  4. 07 Jun, 2012 1 commit
    • Simon Peyton Jones's avatar
      Support polymorphic kind recursion · c9117200
      Simon Peyton Jones authored
      This is (I hope) the last major patch for kind polymorphism.
      The big new feature is polymorphic kind recursion when you
      supply a complete kind signature for a type constructor.
      (I've documented it in the user manual too.)
      
      This fixes Trac #6137, #6093, #6049.
      
      The patch also makes type/data families less polymorphic by default.
         data family T a
      now defaults to T :: * -> *
      If you want T :: forall k. k -> *, use
         data family T (a :: k)
      
      This defaulting to * is done whenever there is a
      "complete, user-specified kind signature", something that is
      carefully defined in the user manual.
      
      Hurrah!
      c9117200
  5. 15 May, 2012 2 commits
    • pcapriotti's avatar
      Simplify the behavior of package db flags. · ba409e30
      pcapriotti authored
      Previously, the `-no-user-package` and `-no-global-package` flags
      affected the "initial" stack only, while `user-package` and
      `global-packages` appended to the end of the stack.
      
      This commit changes the behavior of those flags, so that they are always
      applied to the stack as a whole.
      
      The effect of the GHC_PACKAGE_PATH environment variable has also been
      changed: terminating it with a separator now adds the default package
      dbs (user and global) instead of the initial stack.
      ba409e30
    • pcapriotti's avatar
      Update documentation of the package db flags. · 2fe15464
      pcapriotti authored
      2fe15464
  6. 12 Apr, 2012 1 commit
  7. 11 Apr, 2012 2 commits
  8. 31 Mar, 2012 1 commit
  9. 23 Mar, 2012 1 commit
    • chak@cse.unsw.edu.au.'s avatar
      Add -favoid-vect · 009058b2
      chak@cse.unsw.edu.au. authored
      * Enables vectorisation avoidance
      
      (This commit only adds the flag, not the actual vectorisation avoidance transformation.)
      009058b2
  10. 10 Feb, 2012 1 commit
  11. 27 Jan, 2012 1 commit
  12. 13 Jan, 2012 5 commits
  13. 12 Jan, 2012 1 commit
    • Simon Peyton Jones's avatar
      Implememt -fdefer-type-errors (Trac #5624) · 5508ada4
      Simon Peyton Jones authored
      This patch implements the idea of deferring (most) type errors to
      runtime, instead emitting only a warning at compile time.  The
      basic idea is very simple:
      
       * The on-the-fly unifier in TcUnify never fails; instead if it
         gets stuck it emits a constraint.
      
       * The constraint solver tries to solve the constraints (and is
         entirely unchanged, hooray).
      
       * The remaining, unsolved constraints (if any) are passed to
         TcErrors.reportUnsolved.  With -fdefer-type-errors, instead of
         emitting an error message, TcErrors emits a warning, AND emits
         a binding for the constraint witness, binding it
         to (error "the error message"), via the new form of evidence
         TcEvidence.EvDelayedError.  So, when the program is run,
         when (and only when) that witness is needed, the program will
         crash with the exact same error message that would have been
         given at compile time.
      
      Simple really.  But, needless to say, the exercise forced me
      into some major refactoring.
      
       * TcErrors is almost entirely rewritten
      
       * EvVarX and WantedEvVar have gone away entirely
      
       * ErrUtils is changed a bit:
           * New Severity field in ErrMsg
           * Renamed the type Message to MsgDoc (this change
             touches a lot of files trivially)
      
       * One minor change is that in the constraint solver we try
         NOT to combine insoluble constraints, like Int~Bool, else
         all such type errors get combined together and result in
         only one error message!
      
       * I moved some definitions from TcSMonad to TcRnTypes,
         where they seem to belong more
      5508ada4
  14. 27 Nov, 2011 1 commit
  15. 25 Nov, 2011 1 commit
  16. 22 Nov, 2011 1 commit
  17. 21 Nov, 2011 1 commit
  18. 18 Nov, 2011 1 commit
  19. 16 Nov, 2011 1 commit
  20. 02 Nov, 2011 1 commit
    • Simon Marlow's avatar
      Overhaul of infrastructure for profiling, coverage (HPC) and breakpoints · 7bb0447d
      Simon Marlow authored
      User visible changes
      ====================
      
      Profilng
      --------
      
      Flags renamed (the old ones are still accepted for now):
      
        OLD            NEW
        ---------      ------------
        -auto-all      -fprof-auto
        -auto          -fprof-exported
        -caf-all       -fprof-cafs
      
      New flags:
      
        -fprof-auto              Annotates all bindings (not just top-level
                                 ones) with SCCs
      
        -fprof-top               Annotates just top-level bindings with SCCs
      
        -fprof-exported          Annotates just exported bindings with SCCs
      
        -fprof-no-count-entries  Do not maintain entry counts when profiling
                                 (can make profiled code go faster; useful with
                                 heap profiling where entry counts are not used)
      
      Cost-centre stacks have a new semantics, which should in most cases
      result in more useful and intuitive profiles.  If you find this not to
      be the case, please let me know.  This is the area where I have been
      experimenting most, and the current solution is probably not the
      final version, however it does address all the outstanding bugs and
      seems to be better than GHC 7.2.
      
      Stack traces
      ------------
      
      +RTS -xc now gives more information.  If the exception originates from
      a CAF (as is common, because GHC tends to lift exceptions out to the
      top-level), then the RTS walks up the stack and reports the stack in
      the enclosing update frame(s).
      
      Result: +RTS -xc is much more useful now - but you still have to
      compile for profiling to get it.  I've played around a little with
      adding 'head []' to GHC itself, and +RTS -xc does pinpoint the problem
      quite accurately.
      
      I plan to add more facilities for stack tracing (e.g. in GHCi) in the
      future.
      
      Coverage (HPC)
      --------------
      
       * derived instances are now coloured yellow if they weren't used
       * likewise record field names
       * entry counts are more accurate (hpc --fun-entry-count)
       * tab width is now correct (markup was previously off in source with
         tabs)
      
      Internal changes
      ================
      
      In Core, the Note constructor has been replaced by
      
              Tick (Tickish b) (Expr b)
      
      which is used to represent all the kinds of source annotation we
      support: profiling SCCs, HPC ticks, and GHCi breakpoints.
      
      Depending on the properties of the Tickish, different transformations
      apply to Tick.  See CoreUtils.mkTick for details.
      
      Tickets
      =======
      
      This commit closes the following tickets, test cases to follow:
      
        - Close #2552: not a bug, but the behaviour is now more intuitive
          (test is T2552)
      
        - Close #680 (test is T680)
      
        - Close #1531 (test is result001)
      
        - Close #949 (test is T949)
      
        - Close #2466: test case has bitrotted (doesn't compile against current
          version of vector-space package)
      7bb0447d
  21. 22 Oct, 2011 1 commit
  22. 04 Oct, 2011 1 commit
  23. 29 Sep, 2011 1 commit
  24. 27 Sep, 2011 1 commit
  25. 06 Sep, 2011 1 commit
    • batterseapower's avatar
      Implement -XConstraintKind · 9729fe7c
      batterseapower authored
      Basically as documented in http://hackage.haskell.org/trac/ghc/wiki/KindFact,
      this patch adds a new kind Constraint such that:
      
        Show :: * -> Constraint
        (?x::Int) :: Constraint
        (Int ~ a) :: Constraint
      
      And you can write *any* type with kind Constraint to the left of (=>):
      even if that type is a type synonym, type variable, indexed type or so on.
      
      The following (somewhat related) changes are also made:
       1. We now box equality evidence. This is required because we want
          to give (Int ~ a) the *lifted* kind Constraint
       2. For similar reasons, implicit parameters can now only be of
          a lifted kind. (?x::Int#) => ty is now ruled out
       3. Implicit parameter constraints are now allowed in superclasses
          and instance contexts (this just falls out as OK with the new
          constraint solver)
      
      Internally the following major changes were made:
       1. There is now no PredTy in the Type data type. Instead
          GHC checks the kind of a type to figure out if it is a predicate
       2. There is now no AClass TyThing: we represent classes as TyThings
          just as a ATyCon (classes had TyCons anyway)
       3. What used to be (~) is now pretty-printed as (~#). The box
          constructor EqBox :: (a ~# b) -> (a ~ b)
       4. The type LCoercion is used internally in the constraint solver
          and type checker to represent coercions with free variables
          of type (a ~ b) rather than (a ~# b)
      9729fe7c
  26. 01 Sep, 2011 1 commit
  27. 11 Jul, 2011 1 commit
  28. 08 Jul, 2011 1 commit
  29. 06 Jul, 2011 1 commit
  30. 26 Jun, 2011 1 commit
  31. 18 Jun, 2011 1 commit
  32. 31 May, 2011 2 commits