второй язык в ядре и завершение двадцатилетней саги реального времениa second language in the kernel and a twenty-year real-time saga's end
Ветка, где ядро впервые за тридцать с лишним лет своей истории официально приняло второй язык программирования, где планировщик сменил модель управления временем впервые с 2007 года, и где PREEMPT_RT — патчсет, который вне мейнлайна прожил дольше, чем сам проект Linux до его появления, — наконец влился в основное дерево.The branch where, for the first time in over thirty years of its history, the kernel officially accepted a second programming language, where the scheduler changed its time-management model for the first time since 2007, and where PREEMPT_RT — a patchset that lived outside mainline longer than the Linux project itself had existed when it started — finally merged into the main tree.
Ветка 6.x охватывает чуть больше трёх лет — со 2 октября 2022 (6.0.0) до 30 ноября 2025 (6.18, последний LTS-релиз перед сменой номера на 7.0 в апреле 2026). Модель разработки не менялась пятый раз подряд. Три сюжета определяют ветку. Первый и самый заметный — Rust: инфраструктура влилась в 6.1 (декабрь 2022) как экспериментальная возможность для написания отдельных драйверов, а в декабре 2025 (уже после 6.18, но по итогам Kernel Maintainers Summit того же года) статус эксперимента формально снят — Rust остаётся в ядре навсегда. Второй — смена планировщика: EEVDF заменил CFS в 6.6 (октябрь 2023), первая смена базовой модели планирования с 2007 года. Третий — PREEMPT_RT: патчсет реального времени, разрабатывавшийся вне мейнлайна с 2004–2005 годов, полностью влился в 6.12 (ноябрь 2024) — двадцать лет параллельной разработки закончились одним релизом.The 6.x branch spans a little over three years — from October 2, 2022 (6.0.0) to November 30, 2025 (6.18, the last LTS release before the number changed to 7.0 in April 2026). The development model didn't change for the fifth time running. Three storylines define the branch. The first and most visible is Rust: the infrastructure merged in 6.1 (December 2022) as an experimental feature for writing individual drivers, and in December 2025 (after 6.18 shipped, but following that year's Kernel Maintainers Summit) the experimental status was formally lifted — Rust is in the kernel to stay. The second is a scheduler change: EEVDF replaced CFS in 6.6 (October 2023), the first change to the base scheduling model since 2007. The third is PREEMPT_RT: a real-time patchset developed outside mainline since 2004–2005, fully merged in 6.12 (November 2024) — twenty years of parallel development ending in a single release.
| версияversion | датаdate | что именно изменилосьwhat actually changed |
|---|---|---|
| 6.0.0 | 2022-10-02 | снова чисто нумерационный жест (см. 3.x, 4.x, 5.x) — по содержанию: улучшенный NUMA balancing и изменения планировщика, давшие заметный прирост производительности на серверных CPUagain a purely numerical gesture (see 3.x, 4.x, 5.x) — content-wise: improved NUMA balancing and scheduler changes delivering a notable performance gain on server CPUs |
| 6.1 | 2022-12-11 | ключевая веха: базовая Rust-инфраструктура (около 12 тыс. строк) — только фундамент, позволяющий писать отдельные драйверы на Rust, не переписывая ядро; MGLRU (multi-generational LRU) как опциональный алгоритм управления памятью; kernel memory sanitizer; структура данных Maple tree взамен красно-чёрных деревьев в ряде подсистемthe key milestone: base Rust infrastructure (about 12k lines) — just the foundation, letting individual drivers be written in Rust without rewriting the kernel; MGLRU (multi-generational LRU) as an optional memory-management algorithm; a kernel memory sanitizer; the Maple tree data structure replacing red-black trees in several subsystems |
| 6.6 | 2023-10-29 | LTS-релиз (поддержка продлена до декабря 2027): EEVDF (Earliest Eligible Virtual Deadline First) заменяет CFS как основной планировщик процессов — первая смена базовой модели планирования с 2007 года; Intel Shadow Stack, fs-verity в overlayfs, первые куски XFS online fsckan LTS release (support extended to December 2027): EEVDF (Earliest Eligible Virtual Deadline First) replaces CFS as the primary process scheduler — the first change to the base scheduling model since 2007; Intel Shadow Stack, fs-verity in overlayfs, the first pieces of XFS online fsck |
| 6.9 | 2024-05-12 | драйвер Nova (экспериментальный DRM-драйвер для GPU Nvidia, пишущийся на Rust) начинает формироваться в дереве ядра — не единственный, но самый заметный публичный пример того, зачем нужна была Rust-инфраструктура из 6.1the Nova driver (an experimental Rust-based DRM driver for Nvidia GPUs) starts taking shape in the kernel tree — not the only but the most publicly visible example of what the 6.1 Rust infrastructure was actually for |
| 6.12 | 2024-11-17 | объявлена LTS-веткой (поддержка до декабря 2026): PREEMPT_RT полностью влит и включён в мейнлайн на x86, x86_64, RISC-V и ARM64 — конец двадцатилетней истории патчсета реального времени вне основного дерева; sched_ext (подключаемые планировщики на eBPF); DRM panic messages в виде QR-кодовdeclared an LTS branch (support through December 2026): PREEMPT_RT is fully merged and enabled in mainline on x86, x86_64, RISC-V, and ARM64 — the end of a twenty-year history of the real-time patchset living outside the main tree; sched_ext (pluggable eBPF-based schedulers); DRM panic messages as QR codes |
| 6.15 | 2025-05-15 | драйвер Nova достигает состояния, пригодного для включения (DRM-драйвер для Nvidia на Rust); прирост производительности exFAT; новый fanotify API для мониторинга событий монтирования/размонтирования файловых систем в реальном времениthe Nova driver reaches a mergeable state (Rust-based DRM driver for Nvidia); exFAT performance gains; a new fanotify API for real-time monitoring of filesystem mount/unmount events |
| 6.17 | 2025-09-28 | Attack Vector Controls — унифицированная опция для управления митигациями известных аппаратных уязвимостей CPU одним переключателем вместо набора разрозненных флагов (прямое следствие многолетнего опыта с Meltdown/Spectre-эпохой из ветки 4.x); поддержка ARM BRBE, AMD HFIAttack Vector Controls — a unified option for managing known CPU hardware vulnerability mitigations through a single switch instead of a scattered set of flags (a direct consequence of the years of experience from the Meltdown/Spectre era in the 4.x branch); ARM BRBE support, AMD HFI |
| 6.18 | 2025-11-30 | последний релиз ветки, сразу объявлен LTS (поддержка до декабря 2027): поддержка Rust Binder-драйвера, dm-pcache (persistent memory как кеш для медленных блочных устройств), заметный прогресс в поддержке Apple Silicon (M2 Pro/Max/Ultra) в рамках усилий Asahi Linuxthe branch's final release, immediately declared LTS (support through December 2027): Rust Binder driver support, dm-pcache (persistent memory as a cache for slower block devices), notable progress on Apple Silicon (M2 Pro/Max/Ultra) support as part of the Asahi Linux effort |
Обсуждения, начавшиеся ещё в ветке 5.x (Торвальдс упоминал 5.14 как возможную цель, затем 5.20), наконец материализовались в 6.1 (11 декабря 2022, последний релиз того года) — около 12 тысяч строк базовой инфраструктуры, позволяющей писать отдельные драйверы, подсистемы и модули ядра на Rust, не переписывая существующий C-код. Идея с самого начала не заключалась в замене C на Rust целиком — язык добавлялся как опция для новых компонентов, где безопасность памяти (Rust статически исключает целые классы багов — use-after-free, data races, buffer overflow — на уровне компилятора) перевешивает издержки поддержки второго языка тулчейна. Формально возможность помечалась экспериментальной: ядро явно предупреждало, что Rust-поддержка может быть удалена, если эксперимент не оправдает себя. Тот же релиз принёс MGLRU — опциональный алгоритм многопоколенческого управления страницами LRU с лучшей производительностью под память-интенсивными нагрузками, и структуру Maple tree, постепенно заменяющую красно-чёрные деревья в ряде подсистем управления памятью.Discussions that had started back in the 5.x branch (Torvalds mentioned 5.14 as a possible target, then 5.20) finally materialized in 6.1 (December 11, 2022, that year's last release) — about 12,000 lines of base infrastructure letting individual drivers, subsystems, and kernel modules be written in Rust without rewriting existing C code. The idea was never to replace C with Rust wholesale — the language was added as an option for new components where memory safety (Rust statically rules out entire bug classes — use-after-free, data races, buffer overflows — at compile time) outweighs the cost of maintaining a second toolchain. The feature was formally marked experimental: the kernel explicitly warned that Rust support could be removed if the experiment didn't pan out. The same release brought MGLRU — an optional multi-generational LRU page-management algorithm with better performance under memory-intensive workloads — and the Maple tree structure, gradually replacing red-black trees in several memory-management subsystems.
CFS (Completely Fair Scheduler), введённый в 2.6.23 (октябрь 2007), почти шестнадцать лет оставался планировщиком процессов по умолчанию — справедливое распределение CPU-времени через понятие «виртуального времени выполнения», но с эвристиками и настраиваемыми параметрами, накопившимися за годы патчей. 6.6 (29 октября 2023) заменила его на EEVDF (Earliest Eligible Virtual Deadline First) — алгоритм, где вместо набора эвристик используется явный дедлайн для каждой задачи: планировщик автоматически выбирает следующей ту задачу, что недополучила внимания, и «штрафует» задачи, получившие больше времени, чем им причиталось, чистым алгоритмическим способом, а не через подстройку коэффициентов. Тот же релиз получил статус LTS (поддержка продлена до декабря 2027) и принёс Intel Shadow Stack (аппаратная защита от ROP-атак через отдельный стек возвратных адресов) и первые компоненты XFS online fsck — проверку файловой системы на лету, без размонтирования.CFS (Completely Fair Scheduler), introduced in 2.6.23 (October 2007), had remained the default process scheduler for almost sixteen years — fair CPU-time distribution via the concept of "virtual runtime," but with heuristics and tunable parameters accumulated over years of patches. 6.6 (October 29, 2023) replaced it with EEVDF (Earliest Eligible Virtual Deadline First) — an algorithm using an explicit deadline per task instead of a set of heuristics: the scheduler automatically picks whichever task has gotten too little attention next, and "punishes" tasks that got more time than they deserved through a clean algorithmic mechanism rather than coefficient tuning. The same release earned LTS status (support extended to December 2027) and brought Intel Shadow Stack (hardware protection against ROP attacks via a separate return-address stack) and the first components of XFS online fsck — checking a filesystem on the fly, without unmounting it.
Работа над тем, чтобы сделать Linux пригодным для настоящих realtime-нагрузок (гарантированное время реакции, а не просто «в среднем быстро»), началась в 2004 году усилиями Томаса Гляйкснера (Thomas Gleixner), Дага Нихауса (Doug Niehaus) и Ингo Молнара (Ingo Molnar), а сам патчсет PREEMPT_RT разрабатывался с 2005-го. Два десятилетия он существовал параллельно мейнлайну: часть наработок постепенно просачивалась в основное дерево небольшими кусками, но основной объём патчей нужно было накатывать поверх ванильного ядра отдельно — стандартная практика для промышленных и embedded систем, которым требовалась предсказуемость. В 2015-м Linux Foundation учредил Real-Time Linux (RTL) Collaborative Project, чтобы скоординировать усилия по продвижению патчсета в апстрим. Финальным препятствием оказалась подсистема логирования ядра (printk), которую пришлось рефакторить, чтобы она не нарушала гарантии реального времени. Барьер был снят, и 20 сентября 2024 на европейском Open Source Summit Торвальдс объявил, что PREEMPT_RT принят в мейнлайн — 6.12 (17 ноября 2024) стала первым релизом с полностью встроенной поддержкой real-time на x86, x86_64, RISC-V и ARM64, без необходимости накатывать отдельный патчсет. Тот же релиз принёс sched_ext — механизм подключаемых планировщиков, которые можно писать на eBPF и загружать без перекомпиляции ядра.Work to make Linux suitable for genuine realtime workloads (guaranteed response time, not just "fast on average") began in 2004 through the efforts of Thomas Gleixner, Doug Niehaus, and Ingo Molnar, and the PREEMPT_RT patchset itself has been developed since 2005. For two decades it existed alongside mainline: some of the work gradually trickled into the main tree in small pieces, but the bulk of the patches had to be applied on top of a vanilla kernel separately — standard practice for industrial and embedded systems that needed predictability. In 2015 the Linux Foundation established the Real-Time Linux (RTL) Collaborative Project to coordinate efforts toward upstreaming the patchset. The final obstacle turned out to be the kernel's logging subsystem (printk), which needed refactoring so it wouldn't violate real-time guarantees. Once that barrier fell, on September 20, 2024, at the European Open Source Summit, Torvalds announced PREEMPT_RT had been accepted into mainline — 6.12 (November 17, 2024) became the first release with fully built-in real-time support on x86, x86_64, RISC-V, and ARM64, with no need to apply a separate patchset. The same release brought sched_ext — a mechanism for pluggable schedulers that can be written in eBPF and loaded without recompiling the kernel.
Инфраструктура 6.1 сама по себе ничего не делала — она была фундаментом, ожидающим реального применения. Этим применением стал драйвер Nova: экспериментальный DRM-драйвер для GPU Nvidia, написанный на Rust, начавший формироваться в дереве ядра с 6.9 (май 2024) и достигший состояния, пригодного для мержа, к 6.15 (май 2025). Nova стал самым публично заметным доказательством того, что Rust-инфраструктура — не просто символический жест, а практический инструмент: полноценный, сложный драйвер GPU, один из самых требовательных классов кода ядра к производительности и корректности управления памятью, оказался жизнеспособным на новом языке. Параллельно продолжалась работа над более скромными, но многочисленными Rust-компонентами — от отдельных вспомогательных модулей до частей инфраструктуры Android Binder, получившей Rust-реализацию к 6.18.The 6.1 infrastructure did nothing by itself — it was a foundation awaiting real use. That use became the Nova driver: an experimental Rust-based DRM driver for Nvidia GPUs, which started taking shape in the kernel tree from 6.9 (May 2024) and reached a mergeable state by 6.15 (May 2025). Nova became the most publicly visible proof that the Rust infrastructure wasn't just a symbolic gesture but a practical tool: a full, complex GPU driver — one of the most performance- and memory-correctness-demanding classes of kernel code — turned out to be viable in the new language. In parallel, work continued on more modest but numerous Rust components — from individual helper modules to parts of the Android Binder infrastructure, which gained a Rust implementation by 6.18.
Три года экспериментального статуса дали достаточно данных для решения. Мигель Охеда (Miguel Ojeda), ведущий разработчик проекта Rust for Linux, отправил патч, дословно озаглавленный «conclude the Rust experiment» — убирающий предупреждения об экспериментальном характере языка из официальной документации ядра. Решение было формализовано на Linux Kernel Maintainers Summit в декабре 2025 года в Токио, а окончательно и публично подтверждено Грегом Кроа-Хартманом (Greg Kroah-Hartman), сопровождающим stable-веток, на Open Source Summit India в Мумбаи 15 июля 2026: Rust в проекте ядра больше не эксперимент. Формально это решение вышло за рамки последнего релиза ветки 6.x (6.18, ноябрь 2025), но по сути является прямым итогом трёхлетнего пути, начавшегося именно в этой ветке.Three years of experimental status produced enough data for a decision. Miguel Ojeda, the lead developer of the Rust for Linux project, sent a patch literally titled "conclude the Rust experiment" — removing warnings about the language's experimental nature from the kernel's official documentation. The decision was formalized at the Linux Kernel Maintainers Summit in December 2025 in Tokyo, and finally and publicly confirmed by Greg Kroah-Hartman, the stable-branch maintainer, at Open Source Summit India in Mumbai on July 15, 2026: Rust is no longer an experiment in the kernel project. Formally this decision came after the 6.x branch's last release (6.18, November 2025), but it's substantively the direct outcome of a three-year path that began right in this branch.
К 6.18 ядро официально стало двуязычным проектом — C остаётся основным языком для подавляющего большинства кода, но Rust — постоянная, не экспериментальная опция для новых компонентов, с реальными примерами вроде драйвера Nova и Rust Binder. Планировщик процессов работает на принципиально иной модели (EEVDF вместо CFS) впервые за шестнадцать лет. Реальное время перестало быть внешним патчсетом и стало штатной возможностью мейнлайна после двадцати лет параллельной разработки. Attack Vector Controls в 6.17 — прямое организационное следствие многолетнего опыта латания Meltdown/Spectre-класса уязвимостей из ветки 4.x: вместо разрозненных флагов митигации теперь управляются единым интерфейсом. Модель разработки ядра не менялась ни разу за всю ветку — та же схема, что и с 2.6.0.By 6.18 the kernel had officially become a bilingual project — C remains the primary language for the overwhelming majority of the code, but Rust is a permanent, non-experimental option for new components, with real examples like the Nova driver and Rust Binder. The process scheduler runs on a fundamentally different model (EEVDF instead of CFS) for the first time in sixteen years. Real-time stopped being an external patchset and became a standard mainline feature after twenty years of parallel development. Attack Vector Controls in 6.17 is a direct organizational consequence of years of patching Meltdown/Spectre-class vulnerabilities from the 4.x branch: instead of scattered flags, mitigations are now managed through a unified interface. The kernel's development model never changed once across the whole branch — the same scheme in place since 2.6.0.
Заголовки о «постоянном статусе Rust» легко читаются как объявление о полном переходе, но реальный масштаб иной: миллионы строк существующего C-кода никуда не делись и не планируются к переписыванию. Rust используется для новых компонентов (драйверы вроде Nova, части Binder), где выгода от статической безопасности памяти оправдывает издержки поддержки второго тулчейна — точечное дополнение, а не замена архитектурного языка ядра.Headlines about Rust's "permanent status" are easy to misread as a full-rewrite announcement, but the real scope is different: millions of lines of existing C code aren't going anywhere and aren't planned for a rewrite. Rust is used for new components (drivers like Nova, parts of Binder) where the benefit of static memory safety justifies the cost of maintaining a second toolchain — a targeted addition, not a replacement of the kernel's architectural language.
«Real-time поддержка добавлена в 6.12» звучит как новая возможность, но правильнее говорить о слиянии давно существующего и активно используемого в индустрии патчсета в основное дерево. Промышленные системы, требующие предсказуемого времени реакции, годами (и даже десятилетиями) применяли PREEMPT_RT поверх ванильного ядра — 6.12 избавила их от необходимости накатывать отдельный патчсет, а не изобрела real-time с нуля."Real-time support was added in 6.12" sounds like a brand-new feature, but it's more accurate to describe it as merging a long-existing, industry-relied-upon patchset into the main tree. Industrial systems requiring predictable response times had used PREEMPT_RT on top of a vanilla kernel for years, even decades — 6.12 spared them the need to apply a separate patchset, rather than inventing real-time from scratch.
Оба планировщика справедливо распределяют CPU-время, но CFS опирался на набор эвристик и настраиваемых параметров, накопленных за 16 лет патчей, а EEVDF использует явный, алгоритмически чистый дедлайн для каждой задачи — принципиально иной способ принятия решения о том, кого запускать следующим, а не просто более оптимизированная реализация той же идеи.Both schedulers distribute CPU time fairly, but CFS relied on a set of heuristics and tunable parameters accumulated over 16 years of patches, while EEVDF uses an explicit, algorithmically clean deadline per task — a fundamentally different way of deciding who runs next, not just a more optimized implementation of the same idea.