purescript v0.6.0 Release Notes

Release Date: 2014-11-06 // over 9 years ago
  • ๐Ÿ‘€ For more information on PureScript, see the purescript.org website.

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ”จ The Alternative type class hierarchy was refactored. See here.
    • ๐Ÿšš --runtime-type-checks has been removed. The recommended approach is to use purescript-foreign. (@garyb)
    • The Unit type is now used in the Prelude and core libraries to represent values containing no data. (@garyb)
    • The Prelude is no longer distributed as a separate file, but is embedded in the compiler executables. (@paf31)
    • ๐Ÿ“„ docgen is now called psc-docs.

    ๐Ÿ†• New Features

    • ๐Ÿ†• Newtypes are now supported using the newtype keyword. The runtime representation of a newtype is identical to that of the contained type. (@garyb)
    • ๐Ÿ‘ Multiline string literals are now supported via triple-quote syntax, making FFI declarations much neater. (@phadej)
    • ๐Ÿ‘ Kind signatures on types and type constructor arguments are now supported. (@paf31)

    โœจ Enhancements

    • โšก๏ธ The runFnN and mkFnN families of functions are now inlined by the optimizer, making interop with JavaScript functions of multiple arguments much simpler. (@paf31)
    • Tail call optimization has been improved for functions using case expressions. (@paf31)
    • โšก๏ธ Saturated calls to data constructors are now optimized. (@garyb)
    • A new Renamer module now renames identifiers which shadow other names in scope, which greatly simplies code generation. (@garyb)
    • psci now provides the following new options:
      • :b to browse a module (@ardumont)
      • :s to show current imports or modules (@ardumont)
      • :k to find the kind of a type constructor (@5outh)
    • The approach to checking whether a name is initialized in the generated JavaScript was simplified (@paf31)
    • ๐Ÿšš The dependency on the PureScript_paths module has been removed, which makes distribution via binaries simpler. (@paf31)
    • โšก๏ธ Nested if blocks now get optimized. (@garyb)
    • Generated code for type class dictionaries was simplified. (@garyb, @dylex)
    • The code generator now inserts the version of psc into the file as a comment. (@co-dh)
    • () is now valid syntax, referring to the empty row. (@paf31)
    • The type checker will now display multiple errors for type errors in the same binding group. (@paf31)
    • Imports can now specify hidden names using import ... hiding ( ... ) (@andreypopp)

    ๐Ÿ› Bug Fixes

    • Binding group errors in type class members are now caught at compile time. (@dylex)
    • ๐Ÿ›  Some errors related to type checking rows with duplicate labels were fixed. (@paf31)
    • ๐Ÿ›  Some issues with the calculation of binding groups were fixed. (@paf31)
    • Error messages for invalid case declarations are now generated. (@natefaubion)
    • ๐Ÿ›  Some issues related to module exports were fixed. (@garyb)
    • psci now checks imports for validity. (@Bogdanp)

    Libraries

    • ๐Ÿ”จ The Alternative type class hierarchy was refactored (@joneshf, @garyb)
    • ๐Ÿ‘ The exceptions library no longer supports throwing exceptions of any type.
    • ๐Ÿšš The following libraries have been moved to the core PureScript organisation: (@garyb)
      • purescript-transformers
      • purescript-free
      • purescript-const
      • purescript-identity
      • purescript-lazy
      • purescript-distributive
      • purescript-bifunctors
      • purescript-contravariant
      • purescript-profunctors
      • purescript-maps

    ๐Ÿ“š Documentation