Наличие информации о версии в строке, как правило, плохая идея.
Например, никогда не может быть Ruby 1.10, потому что слишком много приложений, которые тестируют на совместимость, используя if RUBY_VERSION > '1.6'
сломался бы.(Поскольку лексикографически 1.10 < 1.6
). Вот почему существует такая сложная схема, где обычно был бы Ruby 1.9.x вместо Ruby 1.9.0-x и что было бы Ruby 1.10.x теперь является Ruby 1.9.x + 1.Итак, будущая версия Ruby, которая представляет собой Ruby 1.9.2 и которая выглядит как нестабильная версия для разработки, является действительно Ruby 1.10.1, которая является производственной версией.
Это приводит к большой путанице.Например, даже многие опытные лидеры сообщества Ruby по-прежнему распространяют дезинформацию о том, что Ruby 1.9 является версией для разработки, несмотря на тот факт, что изменения в политике управления версиями получили широкое распространение.
Веб-браузер Opera - еще один пример.Когда была выпущена Opera 10.0, она первоначально сообщала свой номер версии как, ну, 10.0.Однако во время бета-тестирования выяснилось, что многие веб-сайты, в том числе очень крупные и уважаемые, полностью обанкротились, потому что Opera была первым в мире популярным браузером с 10.0, и эти сайты делали простое сравнение строк и, таким образом, думали, что ониимели дело с Opera 1.0, которая не поддерживает JavaScript или CSS. Единственное работоспособное решение состояло в том, что в окончательном выпуске Opera 10.0 в качестве номера версии печатается 9.80.
Марк Руссинович также разглагольствовал о сравнении номеров версий во время своей презентации о ядре Windows 7в Microsoft PDC.Он объяснял аудитории, почему номер версии Windows 7, которая раньше была 7 в ранних сборках, был 6.1 в выпуске.Причина в том, что многие приложения либо не работают, либо вообще не работают.Некоторые просто проверяют наличие if major == 6 then enhanced_vista_mode else crappy_xp_mode
, что означает, что они будут работать в Windows 7 с ухудшением качества, другие были еще более агрессивными и имели что-то вроде if major == 6 then enhanced_vista_mode elsif major == 5 then crappy_xp_mode else unsupported_windows_version
, и они вообще отказывались работать.(Что, конечно, глупо, поскольку Windows 7 полностью обратно совместима с Vista.)
Итак, Microsoft изменила номер версии на 6.1, и Руссинович сказал, наполовину шутя, наполовину грустно и серьезно, что это, очевидно, означает, чтономер версии для Windows 8 должен быть 6.1.1.и т. д.
Короче говоря, программисты слишком глупы, чтобы самим разбирать номера версий, вы должны сделать это для них.