Changelog for parsley-core-2.3.0.0
Revision history for parsley-core
2.3.0.0 -- 2023-08-20
- Added internal support for optimisation flags, not exposed into public facing API yet.
- These are threaded through many places and functions via an implicit parameter.
 
 - Deprecated 
Text16, since it is flawed with UTF-8. - Distinguished between static and dynamic input representations (
DynRepvsStaRep). - Improved static binding of input changing the signature of 
eval. - Reworked input consumption and fixed several bugs.
 - Moved to an 
unconsmodel, adjusted several of theInputOps. - Removed 
array-backedStringimplementation. - Stored 
Offsetin the rewind queue, notInput. - Unpacking and unboxing of internal structures, improving compile-time performance?
 - Removed 
Jumpinstruction, it's not needed. 
2.2.0.1 -- 2023-04-26
- Improved the free register analysis by reimplementing in terms of lambda-lifting algorithms.
 
2.2.0.0 -- 2022-08-03
- Removed 
RangeSet, as this now resides inrangeset. 
2.1.0.1 -- 2022-06-01
- Added normalisation rule for lets in 
Lam. - Added GHC 9.2 support.
 
2.1.0.0 -- 2022-01-12
- Added 
RangeSetdatastructure. - Added 
Posmodule for static manipulation of position information. - Added 
CharPredas a specialised defunctionalisation ofChar -> Boolfunctions. - Moved 
InputCharacteristicto its own module. - Use 
CharPredforSatandSatisfy. - Simplified the interface for 
Ops.sat. - Simplified 
buildYesHandlerand allowed it to capture a statically annotated offset. - Introduced 
buildIterYesHandlerwhich can capture static offet. - Changed types of 
bindSameHandlerandbindIterSame. - Added 
StaYesHandlertype toOps. - Renamed 
updatePostoupdatePosQ. - Added many methods for manipulating positions to 
PosOps. - Made 
initPosfully static. - Changed the type of 
readChar. - Hid some internals of 
Input. - Exposed some new methods for 
Input. - Added 
INPUTto 8.6+ backend forDefunc. - Added a 
pokemethod toQueueLike. - Added a 
charPredconverter toDefunc. 
2.0.0.0 -- 2021-11-24
- Removed 
compile,eval,codeGenfrom the API. - Removed 
chainPreandchainPostfrom the API. - Added 
Typeableconstraint toLIFTED. - Removed 
lamTermBoolanduserBoolfrom the API:Typeablesubsumes them. - Added 
RANGESto theDefuncAPI. 
1.8.0.0 -- 2021-11-13
- Reversed order of arguments on 
Subroutine#, offset comes last. - Added 
Postype, and threaded it through - Added 
Input oandInput# o, which package anOffset oorCode (Rep o)withPosinformation. - Added cabal flag to control the packed or unpacked representation of positions
 - Added 
PosSelector - Added 
lineandcolto primitives andPositionto Combinator AST, as well asSelectPosto instructions. - Changed 
OFFSETtoINPUTinDefunc 
1.7.2.0 -- 2021-10-31
- Added 
reclaimableto backend analysis, this allowslookAheadto calculate reclaim ignoringBlockCoins - Fixed small bug in coin analysis that meant that 
lookAheadalways contributes0coins (min 0vsmax 0). 
1.7.1.1 -- 2021-10-30
- Improved eta-reduction to handle multiple arguments.
 - Added eta-reduction to constructed return continutations.
 
1.7.1.0 -- 2021-10-29
- Moved 
parseinto core API, this will reduce the area of incompatibility. - Added 
loopcombinator. 
1.7.0.0 -- 2021-10-28
- Added fields to the handlers to signify if they should generate a binding or not.
 - Added two 
Inlinermodules to handle inlining in front- and back-ends. - Removed field from 
Letwhich contains the body, it was a wart. - Refactored the internal representation of static handlers, making them more uniform.
 - Added basic eta-reduction capabilities to the low-level generators: this can be improved and expanded!
 - Renamed 
buildIterAlwaysandbuildIterSametobindIterAlwaysandbindIterSame. - Renamed 
StaHandlertoAugmentedStaHandler. 
1.6.0.0 -- 2021-08-13
Fix for issue #27
- Added 
BlockCoinsinstruction andCutImmunenode. - Changed how cut compliance is determined, and stopped some incorrect factoring.
 - Removed unneeded flags for analysis.
 
1.5.0.0 -- 2021-08-12
Infrastructure for improved handler analysis:
- Refactored 
LetBindingto include more generic metadata. - Added metadata to 
StaSubroutineand introducedStaSubroutine#and associated functions. - Fed metadata through 
letRec'sgenBindingand intobuildRec. - Added an 
AmounttoOffset, which also takes into account a multiplicity, used to track unknown but non-zero quantities. - Added 
callCCand modified the API forsuspendto allow for abstractedOffsetcreation. ThecallCCoperation promises to utilise static input consumption from the subroutine to refine the input to the return continuation (making use of the multiplicity above). - Refactored the 
CombinatorAnalyserinto anAnalysis.Cutmodule (and movedDependenciesthere too) - Refactored the 
InstructionAnalyserinto anAnalysis.CoinsandAnalysis.Relevancymodules - More documentation
 
Input Reclamation:
- Added 
Machine.Types.Coins, which separates coins for length checks from input reclamation. Analysis.Coinsnow deals wiith theCoinstype, as do the instructions.- Added 
Common.RewindQueueto handle rewindable input caching. - Added 
Common.QueueLiketo abstract both queue's common operations. - Moved the implementation of 
Queueinto aQueue.Implsubmodule, forRewindQueueand testing. - Added 
GiveBursaryinstruction to implement a variant ofRefundCoins. - Added 
PrefetchCharinstruction for future prefetching on branches. - Added 
canAffordtoContextand removed the brokenliquidate. - Improved the input factoring for join points.
 
Misc:
- Removed the unneeded 
genDefuncXoperations inCore.Defunc, andap, hid others. - Added type to 
nextinCharList. - Added auxilliary information parameter to 
sat. - Added 
fetchand broke it out ofsat. 
1.4.0.0 -- 2021-07-22
NOTE: The API exposed to parsley has changed, however, the changed types match up
and the underlying types are not exposed. This means that parsley cannot write
the type down to begin with, so the API change does not actually result in any
backward incompatiblity unless the Parsley.Internal.* modules are imported:
this meets requirements for internal major change.
- Removed an 
unsafeCoercefrom register creation, using more existentials. - Changed 
CharList'smorecheck to test for[]and not length (faster!) - Added static information to offset in the machine
 - Leveraged static information to refine handlers at compile time, offering up to 20% performance improvement
 - Code restructuring and refactoring
 - Added copious amounts of documentation
 
1.3.0.0 -- 2021-07-03
- Improved the 
Lamreduction algorithm - Preliminary support for 
if truereduction fromitemandconst True - Introduced 
_ifandapinMachine.Defunc, removedgenDefunc1 
1.2.0.1 -- 2021-07-03
- Added Jump-Elision optimisation to the code generator.
 
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, 
fatalnow generates better code - Return continuations are also static functions, reducing beta-reduction required by GHC, 
haltgenerates better code - Recursive calls are also static functions, removing a lot of junk with the conversion from iterators to recursion
 
 - Handlers are now static functions, reducing the beta-reduction required by GHC, 
 - 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
 
1.1.0.0 -- 2021-07-01
- Switched both backends to make use of 
Laminstead ofCore.Defunc, reducing burden on GHC - Added duplication avoidance optimisation when value to be duplicated is 
Lam.Var True 
1.0.1.1 -- 2021-06-27
- Added input factoring to 
try p <|> qand also forms withf <$> try p <|> qandtry p $> x <|> q 
1.0.1.0 -- 2021-06-26
- Introduced 
Lamto the API and conversion functions forCore.Defunc - Extra type ascriptions added to generated code
 
1.0.0.0 -- 2021-06-12
- First version. Released on an unsuspecting world.
 - Core factored out of the main 
parsleypackage