По большому счету, они просто отбросили первую цифру номера. Похоже, Линус решил, что ветка 2.* в разумном будущем не претерпит изменений, по масштабу сравнимых с 1.* -> 2.*, и поэтому можно просто отбросить первую цифру. В результате вторая цифра (4 в данном случае) просто меняется примерно с той же скоростью, с которой разньше менялась третья (2.6.*).
Кстати, я почесав в затылке включил у нас в проекте линейную нумерацию (вообще без точек). Зачем делать версию 0.3.4.12 и увеличивать минор, когда можно просто называть версию «12» и делать ++ с каждой версией?
Ну хотя бы затем, чтобы отличать разные ветки при разработке продукта:
Как 0.5.0 — stable, 0.5.0.x — fix-ы в stable, 0.6.0 — новая функциональность, 0.5.1 — backport новой функциональности в старую ветку. Можно и другое что придумать с такой схемой.
На мой взгляд удобнее и нагляднее, чем линейная нумерация.
Названия осмысленные, или такие как в примере (или как у Убунту, где, если бы не было номера версии, я бы не знал кто в этом зоопарке старше, а кто младше)?
— в двух проектах — x.y.z, z — в основном багофиксы и мелкие фичи, y — минорные версии, x — мажорные версии, крупные-глобальные изменения (меняется очень редко).
— еще в одном — x.y, y — багофиксы-мелкие фичи, x — мажорные апдейты, крупные фичи (меняется достаточно часто, другая методология разработки).
Вот, кстати, самое здравое объяснение. Причем подсознательно мы все это понимаем. Что мажорная версия ну это что то совсем такое. Минорная — новый функционал. А дальше — фиксы. Это же удобно и испокон веков уже.
Спасибо, буду использовать ваш комментарий как здравый аргумент в холиварах =)
Если они выпускаются достаточно часто, то вполне вероятно, что будут версии типа «1489» и «1523» — и не понятно, насколько их содержимое близко друг к другу.
потому что всю жизнь изменение третьей цифры означало багфиксы и, возможно, новые функции с полностью сохраняющейся структурой и результатами выдачи старых, изменение второй цифры означало внутренние изменения функций и глобальное расширение функционала с сохранением совместимости со старыми версиями, а изменение первой цифры означало крадинальное изменение функций, никаких гарантий обратной совместимости.
Да как вы умудряетесь… Я ядро и мир основательно обновляю не чаще раза в год и без проблем. Убунта ломалась гораздо чаще и заметно больше требовала к себе внимания. keywords и unmask только для специфического софта, и всё будет хорошо.
Наверное, вы правы. Генту стоял дома, и всегда хотелось попробовать новый софт, который был помечен как нестабильный. keywords и unmask использовались постоянно)
как раз нет, судя по всему это как раз для тех приложений, которые собраны для 32 разраядной платформы, а работают 64 разрядной, и пересобрать их нет возможности (или смысла). Так что это улучшение как раз для уже собранных приложений, если так можно выразиться.
В режиме x86 у нас есть 8 32-битных регистров и 8 FP-регистров, FP вычисления происходят через x87, указатели занимают 32 бита, аргументы функции передаются через стек.
В режиме x86_64 есть уже 16 64-битных и 16 FP-регистров, FP вычисления происходят с помощью SSE, указатели занимают 64 бита, аргументы можно передавать через регистры.
x32 — это попытка взять лучшее от обоих режимов для тех программ, которым достаточно 32 бит для структур/указателей, то есть получаем: 16 64-битных и 16 SSE-регистров, вычисления на SSE, указатели 32 бита, аргументы через регистры.
(32-битный программы, конечно, придётся перекомпилировать в режиме x32)
Зато снова появляется возможность использовать баги фичи линии А2032. Из программы напрямую недоступны данные по адресу 4G+4 (или доступны определённым образом), а при передаче в ядро (read, например), всё работает.
Исключительно из спортивного интереса волнует вопрос работы дискретной Nvidia видухи с процессорами линейки Ivy Bridge и Sandy Bridge — удалось ли наладить эту работу без костылей типа ironhide и blumblebee?
Всё-таки я последний раз ковырялся с ними когда только 3.0.0 ядро вышло, может в 3.1, 3.2, 3.3 что-о поменялось? Или может костыли стали более стабильными? Когда я их трогал последний раз, результат манипуляций был совершенно непредсказуемым…
Знатоки Линукс, а скажите такую вещь — в новом ядре заявлена поддержка новых карточек от NVidia и ATI. Т.е. эти видеокарты не функционировали до выхода ядра? Ведь и та и другая компания, насколько я помню, выпускает дрова под линукс. Зачем нужна поддержка в ядре?
В ядре часть открытых драйверов. Для nvidia они получены реверсиженериногом, а у ATI спеки открыты. Хотя поддержка местами не полная, но все же эти драйвера в некоторых случая могут оказаться вполне приемлемыми. К тому же они поддерживают некоторые фитчи, которые закрытые драйвера не поддерживают, например KMS или работу внутри Xen. Работают из коробки и как правило не ломаются с выходом новой версии ядра/xorg, т.к. вместе с ними идут и их новые версии.
Я вот лично вообще не очень понимаю, почему производители железа не делают код вообще любых драйверов открытым? Казалось бы, это только способствует большему распространению их продукции и повышению качества драйверов за счёт ревизии кода независимыми экспертами.
Меня настораживает, что Линукс перешёл на новую нумерацию ядер. Если раньше было 2.6.х к примеру, то сейчас 3.х. Кто-нибудь знает почему и зачем?
Не холивара ради, просто интересно.
Ядро Linux обновилось до версии 3.4