Boost logo

Boost :

Subject: Re: [boost] Fwd: Binary Region Differentials
From: Kenneth Adam Miller (kennethadammiller_at_[hidden])
Date: 2015-05-21 18:24:53


I don't care about intermediate changes, so I'm not keeping track. I don't
need to know the difference between two huge binaries, just start with a
large one, keep track of changes that are small, then applicate those
changes to derive a resulting binary region. It does indeed sound much like
version control. Here's my use case:

I have an original binary region. I make a small change to it, but I want
to save only that change. I could make many of these changes, and if I
applicate them in a forward direction, I should have confidence that I can
produce an identical binary region as from which these differentials were
derived. I could branch from a common parent and have many different
differentials. So long as my application path from parent to child is sane,
it produces regions.

> On 21 May 2015, at 21:20, Kenneth Adam Miller <kennethadammiller_at_[hidden]>
wrote:
>
> Suppose I have a rather huge binary region. Transferring it by any means
is
> an expensive operation. But changes to it will only be some fraction at
> worst case as large as the binary region itself, but in practice will
> typically be regional byte blobs, mostly not more than a single kilobyte
> long.. Is there any data structure that already handles this, where I
could
> say, have every instance start off from the original binary region, and
> calculate what any other instance of that data structure has by
> "applicating the deltas"?
>

Do you keep track of changes, or do you need to calculate what the
difference between two given huge binaries are?

You might be able to efficiently compare binaries without transferring them
by computing hashes of chunks of the binaries and transfer those hashes so
that you can compare those. It's not an exact comparison because you have a
risk of hash collisions, but that risk is typically extremely small.

Once you have a list or regions that differ then you can simply send those
regions and patch the binary at the other end.

What you have sounds a bit like a version control system?

_______________________________________________
Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk