Описание тега binary-reproducibility
Двоичная воспроизводимость - это цель или качество последовательного воспроизведения идентичных выходных данных сборки при идентичных исходных входных данных, или, более конкретно, цель побайтовых идентичных исполняемых файлов (или идентичных контрольных сумм, хэшей или других дайджестов этих файлов) при многократном построении, возможно, на разных машинах или в разное время. Процесс, с помощью которого это достигается, часто называют детерминированной сборкой или воспроизводимой сборкой.
Для программного обеспечения, в отношении которого требуется возможность определить, является ли произвольный исполняемый файл результатом создания определенного набора источников, воспроизводимость двоичных файлов обеспечивает простой и легко объяснимый ответ на это требование. Это требование часто применяется к программному обеспечению, которое зависит от безопасности (например, Bitcoin Core, Tor) или используется на жестко регулируемом рынке (например, авионика, медицинское оборудование, лицензированные азартные игры).
Ряд инструментов или элементов, задействованных в сборках, могут препятствовать достижению этой цели по разным причинам. Включение информации об окружающей среде, такой как временные метки, версии компилятора, имена пользователей и компьютеров и абсолютные пути, является обычным, как и включение случайного UUID при каждом запуске, чтобы упростить сопоставление исполняемого файла со связанными файлами, такими как отдельные символы отладки или специфичные для платформы собственные изображений. Многие компиляторы создают недетерминированные имена символов, генерируемые компилятором, либо для конструкций, явно определенных, но не названных в исходном коде, либо в качестве артефакта детали реализации, вообще не отображаемой в исходном коде. Наконец, высокооптимизирующие компиляторы могут использоватьметоды недетерминированной оптимизации, такие как оптимизация с использованием моделирования Монте-Карло или оптимизация по профилю.