All Versions
Latest Version
Avg Release Cycle
56 days
Latest Release

Changelog History
Page 8

  • v0.6.9.3 Changes

    March 18, 2015

    ๐Ÿ’ฅ Breaking Changes

    • refEq and refIneq are no longer exported from the Prelude.

    ๐Ÿ› Bug Fixes

    • Instances can now be defined before the corresponding class declaration (@paf31)
    • ๐Ÿ›  A bug related to imports in psci was fixed. (@paf31)
    • ๐Ÿ›  A typechecker bug related to type class dictionaries was fixed. (@garyb)
    • ๐Ÿ›  A bug related to operator precedence in codegen was fixed. (@garyb)

    โœจ Enhancements

    • ๐Ÿ‘ psci now supports long-form directives (@mrhania)
    • Syntax for imports and other declaration types in psci was improved. (@hdgarrood)
    • Markdown comments can now be included at the module level (@joneshf)
    • ๐Ÿ–จ Error messages are now represented internally as an algebraic data type, and pretty printing has been improved by using the boxes library. Errors now link to the wiki. (@paf31)
    • ๐Ÿ“„ psc-docs can now generate tags files for Vim and Emacs (@jacereda)
    • ๐Ÿ‘ psci now supports a --node-opts flag for passing options to the Node executable. (@MichaelXavier)
    • Code gen now preserves names of more function arguments in case statements (@andyarvanitis)
    • There is now a Semigroup instance for Ordering (@pseudonom)

    ๐Ÿ“š Documentation

    • ๐Ÿ“š The Prelude now has Markdown documentation (various contributors - thank you!)
    • ๐Ÿ“š The Pursuit website has been updated with new versions of libraries, including Markdown documentation (@hdgarrood)


    • The following libraries are now core libraries:
      • purescript-tailrec - A type class for monadic tail recursion
      • purescript-monad-eff - A type class for monads supporting native effects
      • purescript-integers - Integer numeric type
      • purescript-invariant - Invariant functors
      • purescript-parallel - An applicative functor for parallel composition of asynchronous computations


    • There is an experimental C++11 backend for PureScript called pure11.
  • v0.6.8 Changes

    February 21, 2015

    ๐Ÿ’ฅ Breaking Changes

    • The Num type class has been refined to allow more interesting instances. The Semiring, ModuloSemiring, Ring and DivisionRing classes have been introduced. Most code should continue to compile, since Number was one of only a handful of instances, but library developers will need to break up their Num instances.

    โœจ Enhancements

    • ๐Ÿ“„ @garyb has improved the readability of psc-docs output.


    • ๐Ÿ—„ All uses of the deprecated ErrorT have been replaced with ExceptT and the transformers and mtl dependencies bumped accordingly.
  • v0.6.7 Changes

    February 12, 2015

    โœจ Enhancements

    Scoped Type Variables

    (#347, @paf31)

    This feature allows type variables which are bound by a forall keyword to be used inside type annotations in the body of the function. For example, suppose we want to define a map function on a List type:

    data List a = Nil | Cons a (List a)
    map :: forall a b. (a -> b) -> List a -> List b
    map f = go
      go Nil = Nil
      go (Cons x xs) = Cons (f x) (map f xs)

    To give a type to go, we could previously use type wildcards:

    go :: List _ -> List _

    Now, we can refer to the types a and b inside the type of go, giving a more precise type:

    go :: List a -> List b

    Rows In Instance Contexts

    (@paf31, @apsk)

    This feature allows rows to appear on the left of a => in a type signature. For example, given a MonadEff class:

    class MonadEff eff m where
      liftEff :: forall a. Eff eff a -> m a

    ๐Ÿ‘ we can now write the following function which works in any Monad supporting Trace actions:

    logging :: forall m a eff. (Monad m, MonadEff (trace :: Trace | eff) m) => String -> m a -> m a
    logging s action = do
      liftEff $ trace $ "Starting: " <> s
      a <- action
      liftEff $ trace $ "Done: " <> s
      return a

    ๐Ÿ‘Œ Improved let bindings in psci

    (#782, @paf31)

    Any declaration can now be used inside a let binding in psci. For example, we can define data types or foreign imports:

    > let data Foo = Foo | Bar | Baz
    > let foreign import foo :: Foo -> String

    The general form of a let statement in psci now contains one or more declarations of any type, and these declarations simply get added to the current module.

    As a bonus, polymorphic functions bound using let now work at multiple type instantiations in psci:

    > let f x = x
    > if f true then f "true" else f "False"

    ๐Ÿ“„ Markdown Support in psc-docs

    (#802, @paf31)

    ๐Ÿ“š Markdown can now be used for documentation purposes by using pipe characters to align content. For example:

    -- | Create a copy of the array without its first element.
    -- |
    -- | Running time: `O(n)`, where `n` is the length of the array.
    -- |
    -- | This function is partial. Specifically, `tail []` is undefined.
    tail :: forall a. [a] -> [a]

    ๐Ÿ“š psc-docs will insert this markdown content verbatim into your generated documentation.

    ๐Ÿ› Bug Fixes

    • Modules are rebuilt before a command is executed in psci, to avoid situations where compiled code becomes out-of-date (@paf31)
    • @ is a valid operator name again (#815, @paf31)
    • Reserved module names are now properly escaped (@garyb)
  • v0.6.7.1 Changes

    February 14, 2015

    ๐Ÿ› Bug Fixes

    • A fix for a bug in the type class instance resolution code (#870, @paf31)
  • v0.6.6 Changes

    February 09, 2015

    ๐Ÿ’ฅ Breaking Changes

    • The syntax of record getters was changed to _.prop (@garyb)

    โœจ Enhancements

    • โšก๏ธ The record part of a record updater can now be made into a wildcard, e.g. _ { foo = 1 } (@garyb)
    • ๐Ÿ‘ Extended infix expressions are now supported, (@paf31) e.g.
      [1, 2, 3] `zipWith (+)` [4, 5, 6]

    ๐Ÿ› Bug Fixes

    • ๐Ÿ†• Newline issues were fixed in executables (@michaelficarra)
  • v0.6.5 Changes

    February 08, 2015

    โœจ Enhancements

    • ๐Ÿ‘ Lightweight record constructors are now supported (@garyb):
      person :: Maybe String -> Maybe Number -> Maybe Address -> Maybe Person
      person = { name: _, age: _, location: _ } <$> name <*> age <*> location
    • ๐Ÿ‘ Field accessor sections are now supported (@garyb):
      getPersonName :: Maybe String
      getPersonName = (.name) <$> getPersonInfo
    • โšก๏ธ Syntactic sugar has been introduced for object update functions:
      updateName :: Person -> String -> Person
      updateName person = person { name = _ }
    • ๐Ÿ‘ Operator sections are now supported (@garyb)

    ๐Ÿ› Bug Fixes

    • ๐Ÿ›  Some command line options were fixed in psc-make (@paulyoung)
    • ๐Ÿ›  Some module import errors were fixed (@garyb)
    • ๐Ÿ›  A typechecker bug related to row synonyms was fixed (#795, @paf31)
  • v0.6.4 Changes

    January 23, 2015
    • ๐Ÿ›  Fix some precedence issues in the code generator.
    • Tighten the bounds on utf8-string.
    • ๐Ÿ›  Fixed a bug in the typechecker.
  • v0.6.4.1 Changes

    February 03, 2015

    ๐Ÿ›  Various small bug fixes.

  • v0.6.3 Changes

    January 08, 2015

    ๐Ÿ’ฅ Breaking Changes

    ๐Ÿ› Bug Fixes

    • Case statement at end of Eff block not being executed. (#759, @paf31)
    • ๐Ÿ›  A bug related to dead code elimination was fixed. (@garyb)
    • Wildcards can now appear in row endings. (@RossMeikleham)

    โœจ Enhancements

    • There is a new "core functional representation", which will enable certain optimizations, and new features such as rewrite rules. (#710, @garyb)
    • Record pattern matches now allow field names to be separated from binders using : instead of =, to match record construction (#760, @leighman)
    • Some improvements needed for the Pursuit tool (@hdgarrood)
    • ๐Ÿ“š The lexer was separated from the parser, and now supports explicit comments in the AST. Documentation generated by psc-docs now contains any inline comments which precede the corresponding declaration, and generated code preserves the same comments. (@paf31)
    • ๐Ÿ— PureScript now builds on GHC 7.6.* again. (@dylex)
    • Proper names can now contain underscores. (@dylex)
    • ๐Ÿ›  Several auto-completion improvements and fixes in PSCI. (@vkorablin)


    • The Prelude now contains a pureST function to run ST computations in a pure context. (@KMahoney)


    • The Pursuit tool now runs on the community server, and integrates with Bower. Libraries can be added by submitting a pull request. (@hdgarrood)
  • v0.6.2 Changes

    November 28, 2014

    ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿ’ป Command line options with multiplicity 1 now require an equals symbol, e.g.
      psc --main=Main --browser-namespace=PS

    The Grunt and Gulp plugins already support this format.

    โœจ Enhancements

    • ๐Ÿ“œ Use optparse-applicative instead of cmdtheline (@anthoq88)


    • ๐Ÿšš Move STArray out of Prelude. (@paf31)