-
Notifications
You must be signed in to change notification settings - Fork 6
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
Pushdown automaton Decoder
and Decode*
traits; log
feature
#117
Merged
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
Codecov Report
@@ Coverage Diff @@
## develop #117 +/- ##
===========================================
- Coverage 72.22% 69.00% -3.22%
===========================================
Files 17 19 +2
Lines 738 842 +104
===========================================
+ Hits 533 581 +48
- Misses 205 261 +56
Continue to review full report at Codecov.
|
tony-iqlusion
changed the title
[WIP] New
Pushdown automaton decoder and Apr 22, 2020
Decode*
traits and Decoder
typeDecode*
traits
tony-iqlusion
changed the title
Pushdown automaton decoder and
Pushdown automaton Apr 22, 2020
Decode*
traitsDecoder
and Decode*
traits
tarcieri
force-pushed
the
new-decoder
branch
2 times, most recently
from
April 22, 2020 21:37
0873411
to
a685d8a
Compare
Adds a new `veriform::decoder::Decoder` type implemented as a proper stack-driven pushdown automaton which keeps state across nested messages. The primary use case of a stateful decoder automaton is computing content hashes of messages even in the presence of unknown fields. Additionally adds a new set of `Decode*` traits which: - Are generic around their return type and use it to infer the wire type - Accept a stateful `Decoder` type which exists for the duration of processing a message structure, allowing it to compute content hashes of messages as they're decoded Finally, this commit also adds a `log` feature with some basic tracing of how messages are decoded, which can help assist in debugging the decoder. Mea culpa for not splitting these things into separate domain-specific commits, but this PR in particular has been difficult to wrangle.
tony-iqlusion
changed the title
Pushdown automaton
Pushdown automaton Apr 22, 2020
Decoder
and Decode*
traitsDecoder
and Decode*
traits; log
feature
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
tarcieri
pushed a commit
to iqlusioninc/armistice
that referenced
this pull request
Apr 22, 2020
Updates the handwritten decoder fields to use the new pushdown automaton-based `Decoder` API which landed in: iqlusioninc/veriform#117
4 tasks
Merged
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.
Adds a new
veriform::decoder::Decoder
type implemented as a proper stack-driven pushdown automaton which keeps state across nested messages.The primary use case of a stateful decoder automaton is computing content hashes of messages even in the presence of unknown fields.
Additionally adds a new set of
Decode*
traits which:Decoder
type which exists for the duration of processing a message structure, allowing it to compute content hashes of messages as they're decodedFinally, this commit also adds a
log
feature with some basic tracing of how messages are decoded, which can help assist in debugging the decoder.Mea culpa for not splitting these things into separate domain-specific commits, but this PR in particular has been difficult to wrangle.