Revision history for parsley-core
1.0.0.0 -- 2021-06-12
- First version. Released on an unsuspecting world.
- Core factored out of the main
parsley
package
1.0.1.0 -- 2021-06-26
- Introduced
Lam
to the API and conversion functions for Core.Defunc
- Extra type ascriptions added to generated code
1.0.1.1 -- 2021-06-27
- Added input factoring to
try p <|> q
and also forms with f <$> try p <|> q
and try p $> x <|> q
1.1.0.0 -- 2021-07-01
- Switched both backends to make use of
Lam
instead of Core.Defunc
, reducing burden on GHC
- Added duplication avoidance optimisation when value to be duplicated is
Lam.Var True
1.2.0.0 -- 2021-07-01
- For GHC 8.10+, leveraged the static structure of functions:
- Handlers are now static functions, reducing the beta-reduction required by GHC,
fatal
now generates better code
- Return continuations are also static functions, reducing beta-reduction required by GHC,
halt
generates better code
- Recursive calls are also static functions, removing a lot of junk with the conversion from iterators to recursion
- Registers are now bound once for recursive parsers, which close over their free-registers
- Strictness has been updated to reflect the reduced burden on GHC to optimise: now strictness is for performance, and
not to coax GHC to optimise at the cost of performance
- Removed the "bad" binding for
Sat
, handlers are always bound on creation, so the binding is basically meaningless
- Performance on 8.10+ is anywhere from 10-20% faster than 1.1.0.0