差分符号化について
いわゆるバイナリdiffってやつだね。気になったので簡単にサーベイしてみる。性能やらなんやらはがっつり比較検討していない。
概要を知るには
規格
成文化された規格は次の通り。
- RFC 3284 - The VCDIFF Generic Differencing and Compression Data Format
関連規格
- RFC 3229 - Delta Encoding in HTTP
既存の実装
- libxdiff - PHPなどで使われている感じ
- bsdiff/bspatch - 圧縮率高めっぽい
- bdelta - deltupの一部
- xdelta - VCDIFFを実装、rsyncから発生
- open-vcdiff - もうひとつのVCDIFF実装。Google Chromeで使われているHTTPレスポンスの圧縮技法、SDCHを実現するために使われている
VCSとの関連性
Gitなどの実装が参考になる。実際上は、以下の様な実装を見るほうが簡単そうだ。
また、独自に差分符号化を実装する場合でも、皮を被せることでさまざまなVCSに見せることもできるかもしれない。