Пушыстый (_winnie) wrote,
Пушыстый
_winnie

Вроде не существует такого исправления библиотек, которое гарантированно не испортит произвольный говнокод.

Если мы провели оптимизацию нашей библиотеки без изменения поведения, то из-за наших оптимизаций какие-то потоки будут работать быстрее, и в неправильном многопоточном коде возникнут новые race conditions и дедлоки.

Если мы добавили какие-то функции в интерфейс, то поедет карта памяти, какие-то указатели будут указывать в другие места. Раньше адрес функции делился на 64, а теперь нет.

Мы добавили новую функцию, и какой-то код про reflection выдаёт другой список методов.

Значит, при любом изменении библиотеки нужно увеличивать её major version, так как можно придумать код который падает от таких изменений?

Поскольку в теории и на практике (см. memcpy-срач) такой код существует, то получается всегда-всегда надо увеличивать мажорную версию библиотеки. А минорных просто не существует. Ну или считать их просто вероятностным признаком, типа "мы не знаем что может сломаться, если пользователь либы не слишком хакер и не слишком обезьяна".
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 23 comments