Courgette
Created on 2022-08-21T17:46:23-05:00
Algorithm for Executables
- Tear apart an executable.
- Create a table of all internal pointers.
- Create a tape of instructions for how the table of pointers and the bytes of the file need to be interleaved.
More specifically diffing is performed on the disassembled output where all internal pointers are replaced with references to the pointer table.
Heuristics are then used to re-organize the pointer table to minimize the amount of instructions needed to diff that between versions.
Algorithm for General Data
- Server produces a "hint" to inform the client where to look for the original file.
- Client then attempts to predict the update and sends prediction data.
- Server responds with the correction against the client's guess.
Quinn: in a way this is similar zsync; you present or download a chunk manifest and then receive instructions on which chunks to download and what order to reassemble them in.