Проект elfshaker развивает систему контроля версий для ELF-файлов

Опубликован первый выпуск проекта elfshaker, развивающего систему управления версий для двоичных файлов, оптимизированную для отслеживания изменений в исполняемых файлах в формате ELF. Система хранит бинарные патчи между файлами, позволяет извлекать нужную версию по ключу, что значительно ускоряет выполнение операции “git bisect” и сильно сокращает размер используемого дискового пространства. Код проекта распространяется под лицензией Apache-2.0.

Программа примечательна высокой эффективностью хранения бинарных изменений в большом числе похожих бинарных файлов, например, полученных в процессе инкрементальных сборок одного проекта. В частности, результаты двух тысяч пересборок компилятора Clang (каждая пересборка отражает изменение после каждого коммита) могут быть сохранены в одном pack-файле, размером 100 МБ, что в 4000 раз меньше, чем потребовалось бы при раздельном хранении.

Извлечение любого состояния из данного файла занимает 2-4 секунды (в 60 раз быстрее операции “git bisect” над кодом LLVM), что позволяет быстро извлечь нужную версию исполняемых файлов проекта без пересборки из исходных текстов или хранения копии каждой версии ранее собранного исполняемого файла.

Release. Ссылка here.