Эта функциональность не запрещена, просто она не очень распространена из-за того, как работает нумерация большинства библиотек, и из-за неудобств, связанных с изменениями имени пакета.
Если используется точечная схема номеров версий XYZ. «Микро» версия Z часто изменяется на исправлениях, «младший» номер Y изменяется на обратно совместимых изменениях, а «основной» номер версии X должен меняться на изменения API (а иногда и на основной дополнительный функционал).
Никогда не должно быть причины, по которой вы не хотите исправлять последние ошибки, и изменения, совместимые с предыдущими версиями, также не должны сломать ваше программное обеспечение.
Если библиотека разработана таким образом, вы всегда должны иметь возможность заменить XYZ на X. (Y + m). (Z + n). для любых заданных м и н. Т.е. вы всегда должны иметь возможность заменить свою библиотеку последней в той же серии старших номеров. И если разработчики библиотеки осторожны и следующий основной номер совместим (например, посредством объявления об устаревших вещах, но не удалять их), вы можете даже использовать следующий основной номер.
Для разработчиков пакетов это означает, что они могут использовать имя только с одним или даже без номера, чтобы предоставить вам последнюю версию, просто обновив пакет. Если они отправляют библиотеку в пакете , abc2
то они должны пройти через обручи , чтобы переместить их собственное программное обеспечение , которое опиралось на abc2
обновление до использования abc3
, иногда с переходными пакетами. Удобнее не указывать основной номер версии в библиотеке, если это работает для большинства зависимых пакетов. Таким образом, даже если оба abc2
и abc3
должны быть доступны в какой-то момент, доступный в дистрибутиве, abc3
часто вызывается abc
(точно так же, как abc2
был вызван, когда еще не abc3
было), и как только пакеты не зависят от abc2
дистрибутива, становится возможным отброситьabc2
в целом.
Схема нумерации не соблюдается единообразно, но я могу только представить, что с появлением в Интернете информации о том, как использовать такую схему, и давлением со стороны пользователей библиотеки (включая разработчиков дистрибутивов), чтобы сделать понятными такие важные вещи, как обратная совместимость, без необходимость прочитать файл CHANGES, включенный в библиотеку, способствовала тому, что это стало более распространенным явлением.
Один встречный пример, но не библиотеки - это Python Intpreter, который не совместим с общими объектами и форматом выбора при незначительном изменении числа. Поэтому вы увидите пакеты для python (последний в серии 2.7) и python3 (последний в настоящее время в серии python3.4), а также явные пакеты для python 2.6 (не менее распространенные), а также python 3.3.