Ta funkcja nie jest niedozwolona, po prostu nie jest bardzo powszechna z powodu sposobu, w jaki działa większość numeracji bibliotek oraz z powodu niedogodności związanych ze zmianami nazw pakietów.
Jeśli używasz schematu z kropkowanymi numerami wersji XYZ Wersja „mikro” Z często zmienia się w przypadku poprawek błędów, „niewielka” liczba Y zmienia się w przypadku zmian zgodnych z poprzednimi wersjami, a „wersja główna” wersja X musi się zmieniać w przypadku zmian interfejsu API (a czasem główna dodatkowa funkcjonalność).
Nigdy nie powinien istnieć powód, dla którego nie chcesz naprawiać najnowszych błędów, a zmiany kompatybilne wstecz nie powinny również powodować uszkodzenia oprogramowania.
Jeśli biblioteka jest rozwijana w ten sposób, zawsze powinno być możliwe zastąpienie XYZ przez X. (Y + m). (Z + n). dla dowolnego danego m i n. Tzn. Zawsze powinieneś być w stanie zastąpić swoją bibliotekę najnowszą z tej samej serii numerów głównych. A jeśli programiści bibliotek są ostrożni, a następny numer główny jest zgodny (np. Przez ogłoszenie o wycofaniu rzeczy, ale jeszcze ich nie usuwa), możesz nawet użyć następnego numeru głównego.
Dla twórców pakietów oznacza to, że mogą używać nazwy tylko z jednym lub nawet bez numeru, aby uzyskać najnowszą wersję, po prostu aktualizując pakiet. Jeśli wysyłają bibliotekę w pakiecie abc2
, muszą przejść przez obręcze, aby przenieść własne oprogramowanie, które polegało na abc2
aktualizacji do użycia abc3
, czasami z pakietami przejściowymi. Bardziej wygodne jest pominięcie głównego numeru wersji z biblioteki, jeśli działa to w przypadku większości zależnych pakietów. Więc nawet jeśli oba abc2
i abc3
powinny być dostępne w pewnym momencie dostępne w dystrybucji, abc3
nazywany jest często abc
(jak abc2
nazywano kiedy nie było abc3
jeszcze), i tak szybko, jak żadne pakiety zależą abc2
w dystrybucji staje się możliwe do spadkuabc2
całkowicie.
Schemat numerowania nie jest jednolicie przestrzegany, ale mogę sobie tylko wyobrazić, że wraz z pojawieniem się Internetu rozpowszechniającego informacje na temat korzystania z takiego schematu oraz presji ze strony użytkowników bibliotek (w tym programistów dystrybucji), aby wyjaśnić ważne rzeczy, takie jak zgodność wsteczna bez czytając plik CHANGES zawarty w bibliotece, sprawili, że stało się to bardziej powszechne.
Przykładem licznika, ale nie biblioteki, jest interpreter Pythona, który nie jest kompatybilny z jego obiektami współdzielonymi i formatem wytrawiania przy niewielkiej zmianie liczby. Dlatego zobaczysz pakiety dla Pythona (najnowsze z serii 2.7) i python3 (najnowsze z obecnie serii Python3.4), a także jawne pakiety dla Pythona 2.6 (coraz mniej popularne), a także Python 3.3.