@paf31 paf31 released this Jan 31, 2016 · 936 commits to master since this release

Assets 8

A massive thanks to everyone involved in this release!

Breaking Changes

None, but there are lots of new warnings related to upcoming breaking changes in 0.9:

  • Operators as aliases will become mandatory, and regular operators (as functions) will now generate warnings.
  • Non-exhaustive functions will get a Partial constraint in 0.9, so the exhaustivity checker will now attempt to generate warnings by looking for Partial constraints in scope.
  • The qualified import syntax has been deprecated.
  • Class imports will use the new class syntax in 0.9 and the alternative syntax is deprecated.

Enhancements

  • Add native Partial constraint (@garyb)
  • Reduce backtracking in parser to hopefully improve quality of parsing error messages (@paf31)
  • Drop requirement to parenthesize single constraints in instance contexts (@garyb)
  • Case expressions can now match multiple values (@natefaubion)
  • Add operator aliases (@garyb)
  • Show identifiers correctly in ctags (@nwolverson)
  • Fix #1523, add --json-errors flag for editor integrations (@paf31)
  • Error and warning corrections are now available to editors via --json-errors (@nwolverson)
  • Check integer values are within range in codegen (@garyb)
  • Support for unicode operators (@paf31)
  • The parser now supports unicode symbols for forall and function arrows (@DavidLindbom)
  • Module Imports
    • Use class keyword for class references in imports (@garyb)
    • Type imports no longer require () (@garyb)
    • Allow import hiding with qualified imports (@garyb)
    • Naming conflicts are now resolved at the use site (@garyb)
  • Error Messages
    • Fix #1662, display extra type info in instance errors (@paf31)
    • Add information about skolem constants to type errors (@paf31)
    • Sort rows in unification errors (@paf31)
  • Warnings
    • Warn on unspecified imports (@garyb)
    • Warn when import X hiding (..) imports nothing (@garyb)
    • Warn on duplicate imports and exports (@garyb)
    • Warn about unused class imports (@garyb)

Bug Fixes

  • Renamer updates, fixes naming bug in some unlikely situations (@garyb)
  • Fix #1645, implement new indentation rules for types to avoid very wide errors (@paf31)
  • Fix "resource exhausted" issue on MacOS (@mgmeier)
  • Fix #1664, check kind before expanding wildcards. (@paf31)
  • Fix up shadowed module names in JS codegen (@garyb)
  • Fix #1185, fix #1369, add everythingWithScope traversal to correct some scoping issues. (@paf31)
  • Fix two cases where errors were missing context (@garyb)
  • Fix #1636, instantiate polytypes fully, even under constraints. (@paf31)
  • Fix missing data constructors in re-exports (@garyb)
  • Fix codegen error with instance for re-exported class (@garyb)
  • Fix #1479, encode .js files as UTF8. (@paf31)
  • Fix a bug related to redundancy checking in cases (#1853, @nicodelpiano)
  • Fix a TCO/composition inlining bug (@garyb, @hdgarrood)
  • Fix renaming for nested constructor binders (#1839, @sharkdp)
  • Fix generic deriving bug with >1 type argument (@hdgarrood)
  • Fix generate fresh binder names unless all names in case are equal (#1825, @paf31)
  • Fix external require expressions when minifying (#1794, @paf31)
  • Rename foreign argument to fix compiling issue (@anttih)
  • Allow use of bottom integer (@garyb)

Other