github purescript/purescript v0.15.3

latest releases: v0.15.16-1, v0.15.16-0, v0.15.15...
22 months ago

New features:

  • Float compiler-synthesized function applications (#3915 by @rhendric)

    This is a limited implementation of common subexpression elimination for
    expressions created by the compiler in the process of creating and using
    typeclass dictionaries. Users can expect code that heavily uses typeclasses
    to produce JavaScript that is shorter, simpler, and faster.

    Common subexpression elimination is not applied to any expressions explicitly
    written by users. If you want those floated to a higher scope, you have to do
    so manually.

  • Add support for optional shebang lines (#4214 by @colinwahl and @JordanMartinez)

    One or more shebang line are only allowed as the first lines of a file

    #! a shebang line
    #! another shebang line
    -- | module doc comment
    -- other comment
    module MyModule where
    
    #! Using a shebang here will fail to parse
    foo :: String
    foo = ""

Bugfixes:

Internal:

  • Accommodate internally-generated identifiers that start with digits (#4334 by @rhendric)

  • Enable -Wincomplete-uni-patterns and -Wincomplete-record-updates by default (#4336 by @hdgarrood)

    Update purescript.cabal so that the PureScript compiler is built with the
    flags -Wincomplete-uni-patterns and -Wincomplete-record-updates
    enabled by default.

  • Setup infrastructure for testing source maps (#4335 by @JordanMartinez)

  • Removed a couple of unused SimpleErrorMessage constructors (#4344 by @hdgarrood)

  • Compare json files through aeson in tests (#4354 by @purefunctor)

    This fixes the tests for the graph and source map outputs, as the
    ordering is inconsistent between stack test and cabal test.

  • Add version bounds to the test suite's build-depends. (#4354 by @purefunctor)

  • Update GHC to 9.2.3 (#4351 by @hdgarrood and @JordanMartinez)

  • Add qualification for locally-bound names (#4293 by @purefunctor)

    This change makes it so that Qualified names can now be qualified by either
    a ModuleName for module-level declarations or the starting SourcePos for
    bindings introduced locally. This makes disambiguation between references to
    local bindings much easier in AST-driven analysis.

Don't miss a new purescript release

NewReleases is sending notifications on new releases.