Courgette
# Courgette

Courgette (französisch für Zucchini) ist ein Datenkompressionssystem für ausführbare Dateien. Es wurde von Google Inc. zur Reduzierung der auszuliefernden Datenmenge bei Softwareaktualisierungen für seinen Browser Chrome entwickelt. Die Referenzimplementierung ist als Teil des Chromium-Projektes, das die Grundlage für Chrome darstellt, als freie Software unter BSD-Lizenz veröffentlicht.

Courgette nutzt das Datenkompressionsverfahren der Delta-Kodierung mittels Colin Percivals bsdiff, um nur noch die Differenz zwischen zwei ausführbaren Dateien zur Ausgangsdatei in Form von Patches speichern bzw. übertragen zu müssen. Vor der Anwendung von bsdiff wird der Maschinencode transformiert, indem unter anderem mittels eines Disassemblers enthaltene Querverweise extrahiert werden. Dies steigert die Kompressionseffizienz um ein Vielfaches.

Das System kann bislang nur ausführbare Dateien im PE-Format (für Win32- sowie Win64) und ELF für die ARM- oder x86-Architektur verarbeiten. Die Patches werden mit LZMA aus Igor Pavlovs 7-Zip komprimiert.

