Skip to content
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

Design rudimentary delta (V2) #410

Open
ikeycode opened this issue Jan 18, 2025 · 0 comments
Open

Design rudimentary delta (V2) #410

ikeycode opened this issue Jan 18, 2025 · 0 comments

Comments

@ikeycode
Copy link
Member

Whilst we expect access patterns to improve (likely in V3) for random access patterns on the content store of a raw .stone, that isn't a blocker for implementing basic deltas in V2.

The type flag for Delta has been reserved in the container format for some time, and could quite trivially be implemented today. Of course, this format implementation is a separate issue to making delta packages visible in the index and usable by the client.

Long story short, a .delta.stone would be a regular stone with the header-type set to Delta, containing the Layout+Meta payloads of the input stone B. A new content payload (and associated index payload) are generated, containing only the addressable assets (xxh128) that exist only in stone B and not in stone A.

Given that we'll ensure stone A was already cached in the client install before allowing the delta to B to be used, we can rely on using stone B's layout references to stone A's addressable content in the local cache.

Thus: Delta C blobs = B ~ A

For implementation in the client side, we'll also need Meta Payload record(s) to describe the DeltaOrigin and DeltaTarget to assert the delta is valid for the two inputs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: No status
Development

No branches or pull requests

1 participant