-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Parsley 5.0 #223
Draft
j-mie6
wants to merge
225
commits into
master
Choose a base branch
from
staging/5.0
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Parsley 5.0 #223
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
`CalleeSave` is a problematic instruction that has possible race-conditions, as well as being badly behaved for recursively bound `flatMap`s. This system was designed to allow for references to reuse slots in the array when necessary. However, it is much safer to think of all the references in the universe being independent; the problem, of course, is that not all of these references are visible at the top-level, so there is likely not enough space to accommodate them. This PR reworks things so that the `Context` feeds back information to a soon-to-be-generated `flatMap` body about the currently largest residency found for references. The `flatMap` will always allocate its references above this, and emit a new instruction that *just* resizes the refs array. It is possible that global references find themselves occupying the same slot as another if it was used across two parsers, and this is more explicitly checked now up-front in the allocator. Whereas before only if a reference was out of range would it crash, now it will crash immediately as soon as a clash for the references of a parser appear: this avoids the undefined behaviour where two references would write over each other. In all, a better system. Fixes #241
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Parsley
5.0.0
Staging PRThis is the PR encompassing all changes for version
5.0.0
. As this is substantial new functionality, it will be previewed incrementally starting with5.0.0-M1
. When the API is completed and seems reasonable,5.0.0-RC1
will be released to allow for testing of the release, full documentation, and ironing out of bugs. When the release is stable enough, it will be merged intomaster
and5.0.0
will be officially released.High-Level Changes
This release aims to consolidate the library ready for long-term stability. This will include adjusting the API to allow for more forwards-compatible evolution.
Low-Level Changes
Major Changes
None.
Minor Changes
None.
Patch Changes
None.
Internal Changes
None.
Release Checklist
5.0.0-M1
4.5.0
5.0.0-M2
5.0.0-M3
labelSymbolPunctuation
does nothing #227labelSymbol
to replace the sub-configurations (which are deprecated for future removal, but still hooked in for back-compat for next few weeks)5.0.0-M4
mapFilterMsg
combinator toparsley.errors.combinator
5.0.0-M5
Reason
s used forlabelConfig
result in no error labels5.0.0-M6
SpecializedFilter
atomicChoice
Failure
as a simple case classErrorBuilder.format
tobuild
ErrorBuilder.lineInfo
5.0.0-M7
- Anton's Milestoneparsley-debug
parsley-debug
.parsley.token
packages some more.parsley.syntax.all
andparsley.quickstart
objects to cut down on imports.5.0.0-M8
- native 0.55.0.0-M9
parsley.debug
made into a packageparsley-debug
'sdebuggable
->debug
debug.frontend.DebugFrontend
->debug.DebugView
, withReusableFrontend
->DebugView.Reusable
and similar forSingleUse
.attachDebugger
combinators, I think we'll go ahead with view-only debugging for now.PartialFunction[Any, Boolean]
for ergonomics.debug.util.Collector
, it's a shame we'll never be able to remove it completely because ofparsley.debuggable
's view on it.5.0.0-RC1
5.0.0
README.md
updated to reflect new versionprivate [parsley]
members orparsley.internal
.Milestone Migration Guide
As each milestone release may choose to make binary incompatible changes, any necessary migration required to get from one milestone to the next will be tracked here.
4.5.0
5.0.0-M1
5.0.0-M1
5.0.0-M2
5.0.0-M2
5.0.0-M3
ErrorConfig
for symbols are deprecated, uselabelSymbol
instead5.0.0-M3
5.0.0-M4
5.0.0-M4
5.0.0-M5
5.0.0-M5
5.0.0-M6
build
, notformat
forErrorBuilder
.ErrorBuilder.lineInfo
now has alineNum
argument.SpecialisedFilter
and its children are now spelt with az
. TheatomicChoice
combinator has been removed, reconsider your life choices if you're using it.5.0.0-M6
5.0.0-M7
token.predicate
package has been removed,token.descriptions
is now a flat package too.5.0.0-M7
5.0.0-M8
5.0.0-M8
5.0.0-M9
parsley.debug
is now a package,parsley-debug
'sdebugger
package has been merged into that. Various name changes withinparsley-debug
, which should hopefully make it a bit clearer how it should be used.