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:
-
Stop requiring
bower.json
devDependencies
when publishing (#4332 by @JordanMartinez) -
Stop emitting source spans with negative line/column numbers (#4343 by @j-nava and @JordanMartinez)
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 betweenstack test
andcabal 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
aModuleName
for module-level declarations or the startingSourcePos
for
bindings introduced locally. This makes disambiguation between references to
local bindings much easier in AST-driven analysis.