Releases: bigeasy/packet
Packet v1.0.0-alpha.4
- Upgrade
arguable
to13.0.0-alpha.7
. - Update
LICENSE
for current year. - Upgrade
mqtt-packet
to7.1.2
. - Upgrade
programmatic
to2.0.0-alpha.12
. - Upgrade
staccato
to13.0.0-alpha.13
. - Upgrade
extant
to^2.0.0-alpha.5
. - Remove auto test counting. Closes #619.
- More thoughts on literals.
- Elided the header field in MQTT. See #400. Closes #588.
- Rewrite
vivify.structure
for elision. See #588. - Add elision test with no elision. See #588.
- Elided packet and structure. See #588.
- Notes on arguments to functions in language.
- Start a design document. See #471.
- Add outline to bottom of
README.md
. See #471. - Final
make
of last documentation commit. See #471. - Survey of remaining documentation tasks. See #471.
- Create a fixture for elided structures. See #588.
- JavaScript file with all the language in it. Closes #618
- Parse or serialize conditionals. Closes #616.
- Update to diary entry.
- Remove unknown fixed array AST node property.
- Remove a TODO I changed into a comment. See #616.
- Thoughts on the order of the split conditional.
- Tidy diary relocation info.
- Replace old diary.
- Going to move
redux.md
overdiary.md
. - Diary update.
- Publish packet. See #400.
- Publish packet. See #400.
- Tidy Living
README.md
and into section. make
README.md
and test.- MQTT
connack
packet. See #400. - Update generated tests for arity fix. See #615.
- Spell check.
- Include parsing in MQTT test. See #400.
- Fix parenthesisless arrow functions. Closes #615.
- Notes on parameterized partials, limits.
- Complete MQTT connection packet. See #400.
- Fix
$$
stack counting in serialize packed. - Fix sip test, MQTT connect username. See #400.
- MQTT to version 3.1.1, basic connect packet. See #400.
- Fix inlines around single bit packed field. Closes #612.
- Packed field inlines language as it exists. See #612.
- Wrap const declaration in a block. Closes #611.
- Remove debugging messages. See #606. See #610.
- Remove partials checks from
language.js
. Closes #610. - Start of variable header, use partials. See #400.
- send debugging output to standard error. See #610.
- Run includes prior to interpretation. See #610.
- Start of MQTT protocol. See #400.
- Fix 'undefined' absent field name in switch. Closes #609.
- Allow nested sips in conditional length encodings. Closes #606.
- Restore missing array tests. See #606.
- Transforms for variable length fields in sizeof. Closes #601.
- Suppose I could have commented it before too. See #601.
- Revert "Revert "Checking in broken sizeof test.""
- Add inlined code to sizeof. See #601.
- No inlines on sizeof if fixed length. See #601.
- Notes on byte by byte encoded integers. See #604.
- More thoughts on
sizeof
. See #601. - Transforms now defined by the field presence. See #601.
- Revert "Checking in broken sizeof test." See #601.
- Notes on
offsetof
. See #498. - Notes on
sizeof
. See #601. - Checking in broken sizeof test. See #601.
- Upgrade
arguable
to13.0.0-alpha.6
. - Upgrade
programmatic
to2.0.0-alpha.11
. - Upgrade
staccato
to13.0.0-alpha.12
. - Upgrade
extant
to^2.0.0-alpha.4
. - Correctly serializes zero length arrays. Closes #590.
- Pull parameters into Edify. See #471.
- Example of an accumulator. See #471.
- Include partials example. See #471.
- Switch example. See #471.
- Example of conditional. See #471.
- Example of doubles. See #471.
- Revert lookup argument to sync generators. See #471.
- Specify lookup in
packetizer.js
. See #471. - Need to normalize the
$lookup
injection. See #471. - Remove unused
assert
require. See #471. - Multi-byte terminator example. See #471.
- Terminated array example. See #471.
- Build parameter reuse example. See #471.
- Fixed arguments to functions. See #471.
- Named assertion parameters. See #471.
- Different file names for assertion tests. See #471.
- Example of assertions the hard way. See #471.
- Example of assertion. See #471.
- Bring in assertion documentation. See #471.
- Sketch of require documentation. See #471.
- Spell check. See #471.
- Verbiage for calculated arrays. See #471.
- Working fixed and cacluated array examples. See #471.
- Documentation for inline functions. See #471.
- Interface section should come soon.
- Draft of length-encoded arrays. See #471.
- Edify documentation for constants. See #471.
- Add newly generated literal tests. See #471.
- Remove an early exit from literals tests. See #471.
- Document packed integeres. See #471.
make
Edified generatedreadme.t.js
. See #471.- Document nested structures. See #471.
- Upgrade
arguable
to13.0.0-alpha.5
. - Upgrade
staccato
to13.0.0-alpha.11
. - Upgrade
extant
to^2.0.0-alpha.3
. - Document
BitInt
little-endian integers. See #471. - Document endianess. See #471.
- Start to convert draft of new readme to Edify. See #471.
- Sketch of
README.md
language example test. See #471. - Synchornous parser. Closes #264. Closes #596.
- Unit test for generator progam. See #597.
- Sketch of Edify based documentation. See #471.
- Implement a synchornous interface. Closes #595.
- The serialzer we created is really
sync
. Closes #595. - Separate mqtt test generation targets.
- Debug GitHub Actions.
- Upgrade
arguable
to13.0.0-alpha.4
. - Upgrade
staccato
to13.0.0-alpha.10
. - Upgrade
extant
to^2.0.0-alpha.2
. - Upgrade
arguable
to13.0.0-alpha.3
. - Upgrade
programmatic
to2.0.0-alpha.10
. - Build with Node.js 16 on GitHub Actions.
- Upgrade
staccato
to13.0.0-alpha.9
. - Slight edit to
README.md
. - Sketch of interfaces. See #404. See #595.
- Build with Node.js 16 on Travis CI.
- Pick at MQTT. Reorient. See #400.
Closes #620.
Packet v1.0.0-alpha.3
- Add
/notes
to.npmignore
.
Closes #594.
Packet v1.0.0-alpha.2
- Add
/benchmark
to.npmignore
.
Closes #593.
Packet v1.0.0-alpha.1
- Add
/generated
to.npmignore
.
Closes #592.
Packet v1.0.0-alpha.0
- Upgrade
extant
to^2.0.0-alpha.0
. - Upgrade
programmatic
to2.0.0-alpha.9
. - Caret pin Proof.
- Update
LICENSE
for 2021. - Build with Node.js 12, 14 and 15 on CI/CD.
- Add
.npmignore
. - Implement inferred spread integers. Closes #589.
- Parse packed byte of MQTT header. See #400.
- Documentation for references to partials. See #471.
- Generate new Locket parsers.
- The
$i
is not neccesary for buffer parse. Closes #587. - The
$i
is not necessary for buffer serialize. Closes #586. - Generate tests for a Locket key parser.
- Allow inlines around packed fields. Closes #566.
- Implement conditional length encodings. Closes #570.
- Implement spread and conditional length encodings. Closes #569. See #570.
- Update unit tests broken by unvivified literals. See #585.
- Implement unvivified literals. Closes #585.
- Documentation of integers.
- Add a variable for unpacked two's compliment.
- No
$_
register or$bite
if not used. - Restore commented out length-encoded unit tests.
- Lookups for packed integer fields. Closes #576.
- Add some space between read and two's compliment.
- Add space between parse switch and return.
- Remove extra space after integer serialization.
- Unsigned right shift fixup only for 32-bits.
- Set step on early return. Closes #578.
- Set step on early return of incremental serialize. See #578.
- Set step on return form serialize integer. See #578.
- Return short-circuited unit tests.
- Do not set step on serialize absent. See #578.
- Remove unneeded vivify step from length encoded. Closes #562.
- Fix best-foot-forward step for terminated arrays. Closes #582.
- Remove object-based switch. Closes #581.
- Use array for multiple switch values and default. Closes #580.
- Pass parameter value from best-foot-forward. Closes #564.
- Generate module as an object literal. Closes #575.
- Implement nested sips. Closes #568.
- Implement best-foot-forward parse of nested sips. See #568.
- Incremental parse of nested sips. See #568.
- Regenerate tests for single byte reads. See #577.
- Use bitwise operations in whole parse integers. Closes #577.
- Remove unnecessary parens from generated code. Closes #574.
- Set top bits of spread integers. Closes #572.
- Remove unused
require
. - Functions to decide when to unroll integer loops. Closes #573.
- Use
test
generator with packed integers. See #563. - Uncomment out unit tests remove for debugging.
- Reimplemnet explicit
bigint
. Closes #560. - Remove islolated integer language test.
- Move integer shift definition into AST. See #571. See #572.
- Heterogeneous spread integers, top bits. See #571. See #572.
- Clear out ambiguities with subsequent sips. See #568.
- Implement spread integers. Closes #567.
- Use shift to define parse integer. See #567.
- Tidy integer cycle test.
- Lookups are now shared across parsers. See #521.
- Remove underbar from reimplemented function. Closes #563.
- Rename
inline_.js
toinline.js
. See #563. - User function generation all in a single object. See #563.
- Move
inliner
into common inline manager. See #563. - Corral all function generation into two functions. See #563.
- Make inliner more functiony. See #563.
- Fix name overload in inliner. See #563.
- Fixed named parameters. See #563.
- Create separate
test
function. See #563. - Only invoke accumulators as necessary in packed. See #563.
- Use common inliner in
sizeof.js
. See #563. - Create common inliner object. See #563.
- Move packing logic into single function. See #563.
- Tidy buffered declarations. Closes #552.
- Test inline around a variable length structure. Closes #497.
- Remove unused vivify step from fixed, terminated. Closes #516.
- Order all the functions named for fields by field.
- Replace blocks of similar code with interpolation.
- Use consistent variable for length in parsing.
- Increment lengths index for calculated length.
- Remove unnceccessary remaining length calculation.
- Implement serializer and parser parameters. Closes #491. Closes #493.
- Won't do calculated terminators. Closes #490.
- Literals, inlines, snippets for encoded lengths. Closes #489.
- Whole serializers do not take end, return cursor. Closes #486.
- Constantly use
map
helper function. Closes #485. - Add little-endian ability to literals. Closes #477.
- Implement includes. Closes #473.
- Implement calculated length encodings. Closes #554.
- Calculated unpadded buffers. See #544.
- Restore commented out (early return) tests. See #544.
- Reorganize generated fixed array test. See #544.
- Implement calculated nested arrays. See #544.
- Un-nest
checkpoints
function inparse.all.js
. Closes #559. - Fix tests broken by calculated lengths. See #544.
- Calcuated length arrays with padding. See #554.
- Fix length encoded length tracking in checkpoints. Closes #520. Closes #557.
- Benchmark to check cost of cases.
- Add nudge field to length-encoded and fixed tests. Closes #558.
- Restore commented out unit tests. See #510.
- Common copy for fixed and terminated buffers. Closes #553.
- Remove old crufty Programmatic indent hack. Closes #556.
- Remove terminated rewind debug printing. See #510.
- Add generated code to test coverage. Closes #555.
- Implement terminated rewind. Closes #510.
- Implement terminated buffers. Closes #508. Closes #509.
- Implement common lookup constants. Closes #447. Closes #475. Closes #521. Closes #548.
- Rename
conditional
parameter tofield
. - Move split to condition note of AST. Closes #549.
- Arguments parser builds own
vargs
. Closes #551. - Exclude language specific inlines from NYC.
- Organize switch generation into two functions.
- Fix formatting of
literal.t.js
. Closes #550. - Rename
simplified.t.js
tolanguage.t.js
. - Tidy language parser.
- Tidy for a major cleanup of
simplified.js
. - Add
$
toparse
andserialize
function names. Closes #515. - Require generator was not returning
null
. Closes #505. - Reorgainzed conditional generated tests for pack. See #545.
- Implement named parameters in packed conditionals. Closes #544. Closes #545.
- Fix switch generated test organization. Closes #547.
- Remove
snuggle.js
. Closes #541. - Cleanup generated tests.
- Use Programmatic snuggle or packed switch. See #542.
- Buffered functions before switch. Closes #523. Closes #542.
- Implement revised variant switch. Closes #543.
- Upgrade
programmatic
to2.0.0-alpha.8
. Closes #539. - Upgrade
proof
to9.0.2
. Closes #540. - Implement named arguments to arrays. Closes #495.
- Remove functions from conditionals. Closes #538.
- Remove default value to incremental parser object. Closes #522.
- Implement doubles using new
Buffer
type. Closes #512. - Vivify switch conditions. Closes #534.
- Uncomment commented out unit tests. See #524.
- Vivify conditionals. Closes #524.
- Inkling of limits based on packet values.
- Vivify using vivification type. Closes #533.
- Further notes on double jumping. See #535.
- Add an initial field to array test. Closes #536.
- Remove stray
stopAt
s from unit tests. Closes #537. - Further notes on terminal parse double jump. See #535.
- Notes on the terminal in conditional double jump. Seee #535.
- Splice buffer on incremental fixed array parse. Closes #532.
- Merge
skip.t.js
intoliteral.t.js
. Closes #525. - Fix Docco breakage due to division in strings. Closes #530.
- Generate a checkpoint at every field for testing. Closes #531.
- Implement rewinding sips. Closes #528.
- Remove unused endian test, rename integer test. Closes #527.
- Thought on running sips. See #528.
- Implement absent fields. Closes #529.
- Resolve conditional/switch amgiguity. Closes #526.
- Describe three element conditional ambiguity. See #526.
- Use
copy
for length-encodedBuffers
. Closes #507. Closes #518. - Serialize and parse fixed byte arrays as buffers. Closes #517. Closes #513. Closes #506.
- Looping over arrays to looping over buffers.
- Benchmark
indexOf
. It is faster than a loop. See #513. - Implement fixed size for fixed elements. Closes #519.
- Tighened of incremenal parse of fixed arrays. See #506. See #517.
- Remove old padded test. See #514.
- Merge padded test into fixed test. Closes #514.
- Restore commented out accumulator test. See #501.
- Remove
ethereal
property from language. Closes #487. - Implement
Buffer
based arrays. Closes #511. - Wrote some words about accumulators. See #471.
- Notes on
Buffer
based inlines. See #499. - Assert that we're staying out of hashtable mode. Closes #363.
- Implement accumulators. Closes #376.
- Use buffer slices in cycle tests. Closes #504.
- Remove fixed array assert. Closes #492.
- Call conditional functions with named arguments. Closes #496.
- Create an object to track accumulation. See #376.
- Notes on API. See #404. See #405.
- Implement assertions. Closes #476.
- Differentiate inlines and buffer accumulation. See #376.
- Notes on accumulators. See #376.
- Implement function accumulator constructors. Closes #503. See #376.
- Implement regex accumulators. Closes #502. See #376.
- Fix broken accumulator language test. See #501. See #376.
- Implement object accumulators. Closes #501. See #376.
- Recursive determination of vivify type. Closes #494.
- Sketch of accumulators in
language.md
. See #377. - Implement user specified
require
of modules. Closes #375. - Implmenet named function arguments. Closes #470.
- Implement mirrored inlines. Closes #484.
- Move generated inline tests to
inline
directory. Closes #483. See #470. - Removed
trim
too soon. Closes #482. See #470. - Remove unused functions from interpreter. See #470.
- Require three arguments to define inline. Closes #481. See #470.
- Resolve conditionals and inlines ambiguity. Closes #480.
- Notes conditional/inline ambiguity. See #480.
- Remove dead labeled statement. Closes #479.
- Updat...
Packet 0.0.6
Never too early to learn how to punch cards. by Marcin Wichary, Code for America Fellow.
Installing Packet 0.0.6
npm install packet
Create Packet Inspectors with offsetsOf
Now, in addition to paring binary data into JSON and serializing JSON data into binary, Packet will also show you it's work, generating a report on which parts of a binary pattern matched which regions in a binary stream. This is the new offsetsOf
function. With it, you can create a binary inspection program.
Coverage with Istanbul and Coveralls
Packet's test coverage is now verified with Istanbul. The detailed LCOV reports can be found on the GitHub Pages side for Packet.
Also, with the help of cnainus/node-coveralls, tests are run during Travis CI builds and published at Coveralls.
Development Diary
Packet now has a development diary where I record my half-backed thoughts.
Issue By Issue
- Implement
Serializer.offsetsOf
. #87. #85. #86. #63. - Objects primary, positional arguments secondary. #84.
- Reset namedness of
Parser
. #83. - Serialize and parsed a named length encoded array. #82.
- Increase test coverage. #77. #69. #68. #67. #66.
- Test text to float conversion. #66.
- Remove
n
syntax from README. @jryans. #64. - Remove detection of
n
synonym forb
. - Remove asterisk to indicate wildcard condition. #33.
Parser.parse
returns bytes read. #60.- Report coverage to Coveralls. #61.
- Rename
pattern
tofield
. #57. - Massive tidy after change in enclosed objects.
Contributors
Thank you to @jryans for keeping the documentation up to date with the implementation in #64.
Next Steps / Packet 0.0.7
First time using GitHub Releases. Is it imprudent to talk about one's grand plans for the next release so soon? Probably. Here it goes.
Packet 0.0.7 will first achieve 100% test coverage. Then both parse
and write
it will be refactored into a composed strategy pattern using pre-compiled best-foot-forward packet parsers that fall back to a composition general purpose parsing functions.
It will be hard to write a parser or serializer that's faster than the pre-compiled once generated by Packet, and certainly more tedious to maintain.