* Multi-parameter type classes are fully implemented. There is more sharing of dictionaries than in 2.10, so there's a chance that efficiency will increase a little too. * Error messages from the type checker should be noticeably improved * Warnings for unused bindings (-fwarn-unused-names) [I havn't updated the driver to deal with this; can you pls?] In general, are warnings properly documented, since that's something GHC does much better now? * The "boing" example works, and many other minor bug fixes. Internally there are the following changes * Can only be built with 2.10 or later; committed to Haskell 1.4 module system and libraries. Much cruft removed as a result. * Dramatic clean-up of the PprStyle stuff. No explicit "sty" parameters now; it's all handled under the hood in Outputable.lhs * The type Type has been substantially changed. Usage types have gone away entirely. Type is parameterised wrt the "flexi" slot in type variables, rather than wrt the type variable itself. That means that many instance decls become much simpler, because they are polymorphic in the "flexi" slot rather than needing (say) Outputable on the type variable. * The dictionary for each class is represented by a new data type for that purpose, rather than by a tuple. That in turn means that Type can be a straightforward instance of Eq and Ord. No need for eqSimpleTy, eqTy. * The resulting compiler is just slightly (2%) shorter than the old one in terms of source code size.