ho scoperto questi due software (in realtà BSDiff c'è da un pezzo) che consentono di ridurre pesantemente la dimensione dei file di aggiornamento dei software.
Come funziona?
Se ho rilasciato una versione del mio software in forma binaria di 10MB (lo chiamiamo OLD) e la nuova versione è 10.2MB mi piacerebbe poter distribuire solo le differenze e non tutti e 10.2MB.
BSDiff è nato per questo!
Courgette fa anche di meglio!
Consideriamo che una piccola modifica al sorgente genera un numero elevato di modifiche a livello di byte.
Il codice compilato è pieno di riferimenti interni, dove qualche istruzione o dato contiene l'indirizzo (o offset) di un altro istruzione o dato.
Il codice sorgente non ha questo problema, perché tutte le entità nella sorgente sono simboliche.
Se avessimo modo di poter tornare indietro dal binario e ritornare ad avere i puntatori interni di nuovo link simbolici occuperemmo sicuramente molto meno.
Courgette utilizza un disassemblatore primitivo per trovare i puntatori interni.
Poi suddivide il programma in tre parti:
- un elenco di indirizzi destinazione del puntatore interno
- tutti i byte
- una sequenza di 'istruzioni' che determina come i semplici byte e i puntatori devono essere collegati e sistemati per riottenere l'input originale .