Chromium の差分更新について (2010-02-16)
正誤情報を差分として扱う Errata をより便利にすることに関連して、興味深い記事を見つけました: Software Updates: Courgette (The Chromium Projects)
これは Google Chromium の設計に関する文書の1つです。
デスクトップアプリケーションとして避けて通れないのがソフトウェアの更新です。特にセキュリティに関する更新を速やかかつ確実に届けるために、Chromium は差分圧縮アルゴリズムを利用していることが説明されています。わざわざ新しいアルゴリズムを用意しており、バイナリファイルの差分のためのツール bsdiff と比較しても相当なパフォーマンスの向上があるとのことです。
肝心なのは
- 更新前と更新後のバイナリをそのまま比較するより、それぞれディスアセンブルして比較した方が差分が小さい
- 差分更新を予測/補正型の推定問題と見なす
というアイディアです。
詳細はソースコードから見てとることができます:
- http://src.chromium.org/viewvc/chrome/trunk/src/courgette/ensemble.h
- struct CourgettePatchFile のコメントにパッチファイルの概要が書かれている。
- http://src.chromium.org/viewvc/chrome/trunk/src/courgette/assembly_program.h
- AssemblyProgram はディスアセンブルされたバイナリプログラムを表す。
- http://src.chromium.org/viewvc/chrome/trunk/src/courgette/encoded_program.h
- EncodedProgram はシリアライズ/デシリアライズされて元のバイナリプログラムに戻せる。
- http://src.chromium.org/viewvc/chrome/trunk/src/courgette/courgette_tool.cc
- courgette というコマンドを提供している。
参考
© 2006-2023 fixedpoint.jp