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.
When the only specimens you store are those that match a pattern, store only the information which is not literally the same as the pattern.
Added to the store module
compress(specimen, pattern)
- returns bindings array, orundefined
to indicate match failuremustCompress(specimen, pattern, label)
- indicates failure with diagnostic includinglabel
decompress(bindings, pattern)
- undoes the others.Modified SwingSet's virtual mapStores so that if they have a
valueShape
option, they also use it for compression.Modified ERTP's paymentLedger to provide the
amountShape
as thevalueShape
option for the durable ledger mapStore.Verified in the debugger that we now only store a singleton array around the value itself, dropping the enclosing amount structure and the brand which is always the same for a given ledger mapStore. IOW, instead of storing the serialization of
for every live payment, with this PR we store the serialization of
for every live payment. This is not just a savings because it is smaller. We also avoid needing to adjust the refcount of their common
moolaBrand
.Once we've switched to smallcaps, the serialization of
[2n]
is tiny.