Совместимость с ошибками или багосовместимость () — свойство программных или аппаратных систем, при котором они намеренно воспроизводят известные ошибки и некорректное поведение предыдущих версий для обеспечения обратной совместимости. Данное явление упоминается в Jargon File и признаётся значимой проблемой в индустрии программного обеспечения.

Механизм и причины Багосовместимость возникает, когда: Ошибка в предыдущей версии системы становится частью неявного контракта Приложения начинают зависеть от ошибочного поведения Исправление ошибки ломает существующие решения Разработчики вынуждены сохранять дефектное поведение в новых версиях

Как отмечает Марк Руссинович (Microsoft), «обратная совместимость часто требует воспроизведения даже багов, на которых успели построить зависимости». Это создает парадоксальную ситуацию, когда исправление дефекта становится breaking change.

Исторические примеры Windows API: Реализация функций WinAPI в Windows 10 эмулирует поведение Windows 95, включая ошибочную обработку переполнения буфера в некоторых API-вызовах. x86-процессоры: Современные процессоры Intel сохраняют поведение инструкций F00F (Pentium) и POP SS (80286), признанных ошибками проектирования. JavaScript: Браузеры сохраняют некорректную обработку сравнения `null >= 0` из оригинальной реализации Netscape.

Критика и проблемы Основные недостатки практики: Technical debt — накопление устаревшего кода Риски безопасности — сохранение уязвимостей (CVE-2014-1761 в Windows) Снижение производительности — дополнительные проверки совместимости Парадокс тестирования — необходимость проверять как правильное, так и ошибочное поведение

Эрик Синк (Microsoft) отмечает: «Багосовместимость — это налог, который платят пользователи за стабильность».

Альтернативные подходы Современные стратегии минимизации: Слои совместимости: Изоляция устаревшего кода (Windows: CompatTelRunner.exe) Виртуализация: Запуск старых версий в Docker-контейнерах Эмуляция API: Промежуточные слои типа Wine Поэтапное устаревание: Четкие сроки прекращения поддержки

См. также Обратная совместимость Режим совместимости Технический долг Закон сохранения знакомого интерфейса Эмуляция (информатика)

Примечания

Литература

Примечания

Категория:Программное обеспечение