Releases · purerl/purerl

v0.0.24

v0.0.23

0.0.22

Merge pull request #38 from MonoidMusician/purs-15-14

Update for purs 0.15.14

0.0.21

Limit inlining by a heuristic.

Inlining is performed because of hoisting of synthesised applications (i.e. typeclass dictionaries) frustrating rewrites in the optimisation phase. Sometimes this was triggering on some very large definitions leading to an explosion in code size.

v0.0.20

v0.0.19

v0.0.18

v0.0.17

Updates for PureScript 0.15.3 compatibility

  • Updating to PureScript 0.15.3 library & new GHC version

  • Memoization annotations together with PureScript change to float synthetic function applications (purescript/purescript#3915) and the optimiser parse transform (https://github.com/id3as/purerl-optimiser/) should provide a performance improvement

  • Implement PureScript lazy runtime

    This concerns changes made in PureScript 0.15.0 (https://github.com/purescript/purescript/releases/tag/v0.15.0), details of which can be found in PureScript release notes. The existing erlang implementation would have behaved differently with no changes, rather than observing an undefined equivalent we would see infinite recursion in cases where there is a bad runtime reference in a recursive binding group; this change means that as in the JS backend, an exception is thrown in this case. The laziness transform referenced in the PureScript release notes is used here, so this overhead is not incurred most of the time.

v0.0.16

What's Changed

  • Comment out -file lines to get erlang stack traces by @drathier in #25

  • Fix nested do blocks with shadowed identifiers #26

  • Fix pattern match codegen for arrays nested under records, and multiple levels of nested arrays #28

  • Generate type annotations correctly for foreign imports where the implementation is (at least partly) curried

Full Changelog: v0.0.15...v0.0.16

Quash pedantic output check

The output check for stale modules has been converted to a warning, files in output/ whose corresponding sources are not found will now be ignored with a warning. This should mean that deleting modules, switching branches without nuking output will not halt builds, and should still give correct results (because those stale modules were not used anyway).