Приветствую, коллективное сознательное ЛОРа. Часто приходилось в новостях про релизы всяческих библиотек читать про двоичную совместимость новой версии со старыми версиями. В то же время очевидно, что некие изменения в библиотеке произошли.
Прочтение статей в википедии к пониманию вопроса не приблизили. Где-то увидел, что добавление виртуальной функции в класс приводит к потере двоичной совместимости, так ли это? Т.е. если в библиотеке изначально метод был не виртуальным, а затем стал виртуальным, то можно сказать, что был изменен abi библиотеки.
Так ли это? Что еще можно менять в ходе развития библиотеки, а что - нельзя? Интересует для языков C и C++.