Линус Торвальдс принял в состав ядра Linux 7.1, релиз которого ожидается в середине июня, набор патчей с новой реализацией файловой системы NTFS, развивавшейся под именем ntfsplus. Новый драйвер включён под именем "ntfs", которое ранее использовалось для удалённого из ядра старого драйвера, работавшего в режиме только для чтения. Драйвер ntfsplus разработал Намджэ Чон (Namjae Jeon), участник проекта Samba, сопровождающий драйвер EXFAT и сервер KSMBD в ядре Linux.
Разработка ntfsplus началась в 2022 году после публикации отчёта о проблемах с сопровождением драйвера NTFS3, разработанного компанией Paragon Software и поставляемого начиная с ядра 5.15 вместо старого заброшенного драйвера NTFS. С ноября 2021 года по июнь 2022 года разработчики ntfs3 перестали выходить на связь и рассматривать присылаемые патчи, но затем возобновили сопровождение и опубликовали набор исправлений, который вошёл в состав ядра 5.19. С тех пор изменения для свежих версий ядра выпускаются регулярно и, среди прочего, достаточно большой набор улучшений и исправлений был принят в состав ядра 7.0.
В качестве мотива продвижения в ядро нового драйвера ntfsplus
указывалось, что более качественный и сопровождаемый NTFS-драйвер позволит улучшить совместимость Linux-систем с Windows-устройствами и упростить работу пользователей.
Заявлялось, что в нынешнем драйвере NTFS3 имеются проблемы, остающиеся нерешёнными, из-за которых многие пользователи и дистрибутивы продолжают применять старый драйвер ntfs-3g, работающий в пространстве пользователя. При прохождении тестового набора xfstests драйвер ntfsplus успешно проходит 326 тестов (41.4%) из 787, а ntfs3 - 273 (34.6%).
Драйвер ntfsplus основан на кодовой базе удалённого из ядра классического драйвера ntfs, который был переработан, расширен возможностью записи данных и существенно расширен для поддержки современных возможностей, таких как использование фолиантов страниц памяти (folios) вместо структуры buffer_head. В новом драйвере реализовано отложенное выделение блоков, позволившее добиться высокой производительности операций записи и снижения фрагментации. Для буферизированных операций записи/чтения, прямого ввода/вывода, маппинга экстентов и операций страничной записи/чтения задействована библиотека iomap.
По сравнению с ntfs3 новый драйвер поддерживает такие возможности, как iomap, отложенное выделение блоков (delayed allocation) и маппинг идентификаторов пользователей при монтировании (idmap). После принятия в основной состав ядра в ntfsplus планируют реализовать полноценное журналирование (в ntfs3 имеется поддержка создания replay-журнала).
В ntfsplus также удалось повысить производительность, благодаря применению асинхронных операций iomap, отложенному выделению блоков, оптимизации выделения новых кластеров, оптимизации слияния фрагментов, загрузки битовой карты кластеров в фоновом режиме и упреждающей загрузки блоков inode и информации о каталогах. В проведённых в ноябре прошлого года тестах iozone драйвер ntfsplus оказался на 3-5% быстрее ntfs3 при записи в однопоточном режиме и на 35-110% при использовании 4 потоков. Скорость чтения ntfsplus и ntfs3 находится примерно на одном уровне. В тесте на вывод списка файлов (ls -lR) в каталогах со 100/200/400 тысячами файлов
ntfsplus быстрее на 12-14%. По скорости монтирования ntfsplus быстрее в 5-6 раз (для 1 ТБ раздела 0.38 против 2.03 секунд).
На основе утилит ntfsprogs от проекта ntfs-3g для ntfsplus подготовлен собственный набор утилит
ntfsprogs-plus, работающих в пространстве пользователя и включающих приложения ntfsclone, ntfscluster и ntfsinfo. Проектом также разработана новая утилита ntfsck для проверки и восстановления повреждённых разделов с NTFS.
Разработчики платформы автоматизации планирования встреч и управления расписанием Cal.com объявили о прекращении публикации исходного кода полной версии продукта и предоставлении сообществу урезанного форка cal.diy, переведённого с AGPLv3.0 на лицензию MIT. В качестве причины изменения подхода к разработке упоминается возрастание рисков, связанных с обеспечением безопасности SaS-платформы, в условиях прогресса возможностей AI-моделей по поиску уязвимостей и написанию эксплоитов.
Если раньше выявление уязвимостей и создание эксплоитов занимало много времени и было уделом профессионалов с многолетним опытом, то теперь благодаря AI даже начинающий может создать эксплоит для новой уязвимости быстрее, чем разработчики потратят времени на написание исправления. Для защиты данных облачного сервиса, построенного на базе платформы Cal.com, и снижения риска компрометации решено прекратить публикацию исходного кода новых релизов.
Для тех, кому важно наличие исходного кода создан форк cal.diy, сопровождением которого будет заниматься сообщество. Форк содержит лишь базовую функциональность, пригодную для запуска платформы планирования встреч на своём сервере, но лишён возможностей, предлагаемых в полной версии для предприятий, таких как аналитическая панель SSO/SAML, поддержка команд, организаций и рабочих процессов. Кроме того, в закрытой версии переписаны многие ключевые подсистемы, включая аутентификацию и обработку данных.
Ранее в проекте Cal.com выявляли несколько критических уязвимостей. В январе была обнаружена проблема, позволявшая обойти аутентификацию и получить доступ к любой учётной записи, вызвав функцию обновления сеанса с указанием email-адреса жертвы. В декабре 2025 года платформа оказалась подверженауязвимости в серверных компонентах Next.js/React, приводящей к выполнению кода на сервере.
В декабре 2025 года также была выявлена уязвимость, позволявшая обойти проверку пароля при входе через манипуляции с передачей кода двухфакторной аутентификации (если TOTP не включён в настройках пользователя, можно было сразу войти без пароля). В апреле 2024 года из-за уязвимости в автоматически запускаемом обработчике pull-запросов в репозитории на GitHub (".github/workflows/pr.yml"), атакующие могли получить полный доступ к репозиторию проекта.
Опубликован релиз языка программирования Rust 1.95, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust нацелены на исключение ошибок при манипулировании указателями и защиту от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Добавлен макрос "cfg_select!", который может применяться вместо пакета "cfg-if" для обработки нескольких условий компиляции в стиле блока "match", без определения цепочки условных выражений с конструкцией "#[cfg]".
Стабилизирована возможность указания выражений "if let" внутри блоков "match" для создания условных сопоставлений по шаблону. Ранее поддержка указания нескольких выражений "let" с использованием оператора "&&" была стабилизирована для блоков "if" и "while".
match value {
Some(x) if let Ok(y) = compute(x) => {
println!("{}, {}", x, y);
}
_ => {}
}
Стабилизирована поддержка inline-ассемблера для архитектур PowerPC и PowerPC64.
В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
В стабильных версиях инструментария убрана поддержка передачи компилятору спецификаций собственных целевых платформ.
Целевые платформы powerpc64-unknown-linux-musl, aarch64-apple-tvos, aarch64-apple-tvos-sim, aarch64-apple-watchos, aarch64-apple-watchos-sim, aarch64-apple-visionos и aarch64-apple-visionos-sim переведены на второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора.
Дополнительно можно отметить недавно анонсированные проекты и события, связанные с Rust:
Компания Canonical представила дисплейный сервер Mir 2.26, предоставляющий набор библиотек для создания композитных серверов на базе протокола Wayland и включающий типовую функциональность оконных менеджеров и дисплейных серверов. Mir задействован в таких проектах, как композитный менеджер Miracle, оболочка для интернет-киосков Ubuntu Frame и пользовательское окружение Miriway.
Новый выпуск примечателен добавлением возможности разработки компонентов на языке Rust. На Rust реализована альтернативная подсистема управления вводом evdev-rs и начата работа над написанным на Rust фронтэндом wayland-rs для Wayland. Из не связанных с Rust изменений в Mir отмечена поддержка Wayland-протоколов ext_image_copy_capture_v1 и input-triggers.
Опубликован первый релиз анализатора трафика ayaFlow, написанного на Rust и использующего подсистему ядра Linux eBPF для перехвата сетевых пакетов (IPv4/TCP/UDP) и кадров Ethernet с минимальным влиянием на производительность.
Поддерживается глубокое инспектирование протоколов прикладного уровня (L7), например, извлечение TLS SNI и DNS-запросов при анализе шифрованного трафика. Система поддерживает ведение таблицы с текущим состоянием соединений в формате DashMap, сохранение истории в SQLite и отдачу статистики через REST API для Prometheus.
Реализована возможность создания многопоточных приложений на языке Rust, использующих функции std::thread и выполняемых на стороне GPU.
Разработчики проекта AlmaLinux, развивающего редакцию дистрибутива Red Hat Enterprise Linux (RHEL), объявили о реализации для дистрибутива AlmaLinux Kitten репозитория пакетов, собранных для архитектуры i686, а также публикации образов контейнеров в формате docker для 32-рядных систем x86. Редакция AlmaLinux Kitten 10 основана на пакетной базе CentOS Stream 10, развивается с использованием непрерывной модели обновления пакетов и используется в качестве upstream-а для ветки AlmaLinux 10. В дальнейшем планируют сформировать подобные сборки для основного дистрибутива AlmaLinux OS 10 и сопровождать их до 2035 года на всём протяжении жизненного цикла ветки 10.x.
Причиной возрождения сборок для архитектуры i686 является желание предоставить возможность запуска старых приложений, доступных только в форме исполняемых файлов для 32-разрядных систем. Сборки также могут быть полезны для формирования 32-разрядных окружений для тестирования кода в системах непрерывной интеграции и для запуска контейнеров для 32-разрядных программ.
Компания Red Hat отказалась от формирования 32-разрядных сборок для архитектуры x86 в выпуске RHEL 7, опубликованном в 2014 году. В ветке CentOS 7 сборка 32-разрядных пакетов была продолжена командной CentOS Linux AltArch SIG , но начиная с ветки CentOS 8 формирование подобных сборок прекратилось.
После четырёх месяцев разработки представлено апрельское сводное обновление приложений KDE Gear 26.04, развиваемых проектом KDE. В составе набора опубликованы выпуски более 250 программ, библиотек и плагинов. Информацию о наличии Live-сборок с новыми выпусками приложений можно получить на данной странице. Новые версии отдельных приложений можно загрузить из каталогов Flathub и SnapCraft.
В файловом менеджере Dolphin предоставлена возможность назначений комбинаций клавиш для вызова почти всех пунктов меню, плагинов и расширений. Например, можно установить комбинацию клавиш для быстрого изменения сортировки по дате или имени.
В приложении Merkuro (бывший Kalendar), сочетающем возможности адресной книги, менеджера задач и календаря-планировщика, изменено оформление расписания и редактора событий.
Модернизирован интерфейс и улучшена информативность представления данных в календаре-планировщике KOrganizer.
В видеоредакторе Kdenlive реализован анимированный предпросмотр переходных эффектов в окне Compositions; добавлена поддержка зеркального отображения на второй монитор для просмотра клипа одновременно в интерфейсе редактора и в полноразмерном виде; добавлена возможность импорта клипа в указанную позицию через контекстное меню на временной шкале; добавлена опция для увеличения элементов временной шкалы под указателем мыши; реализована автоматическая генерация звуковых миниатюр; обеспечена автоматическая подгонка длительности переходных эффектов при добавлении их на временную шкалу до или перед клипом; предоставлена поддержка одновременного изменения скорости сразу для нескольких клипов.
В Audiotube, приложение для прослушивания музыки с Youtube Music, реализована новая базовая страница, на которой представлена подборка музыки, рекомендованной для прослушивания.
В программе для обмена сообщениями Neochat, использующей протокол Matrix, реализована поддержка нитей обсуждения (прикрепления ответов к конкретным сообщениям) и добавлен редактор текста с разметкой.
В часах KClock при запуске таймера реализован показ виджета со счётчиком во время блокировки экрана на мобильных устройствах.
Линус Торвальдс принял в состав ядра Linux 7.1 изменения, удаляющие поддержку контроллеров AHCI SATA и PCIe, применяемых в SoC Baikal-T1. Помимо этого на рассмотрении находятся pull-запросы на удаление связанных с Baikal драйверов таймера, памяти, physmap, шины, hwmon, dwc и bt1-rom. До этого в ядре 7.0 уже была удалена поддержка драйверов i2c и spi dw для SoC Baikal-T1.
В качестве причины удаления называется отсутствие сопровождения и незавершённая интеграция в состав ядра компонентов платформы Baikal. Например, отмечается, что драйвер PCIe так и не был доведён до полностью работоспособного состояния.
Производство чипов Baikal в РФ свернули в ноябре 2025 года из-за дефицита компонентов, производство тайваньской компанией TSMC было остановлено в 2022 году.
Поддержка российского процессора Baikal-T1 и основанной на нём системы на кристалле BE-T1000 включена в ядро Linux начиная с ветки 5.8. Процессор Baikal-Т1 содержит два суперскалярных ядра P5600 MIPS 32 r5, работающих на частоте 1.2 ГГц. Чип содержит кэш L2 (1 Мб), контроллер памяти DDR3-1600 ECC, 1 порт 10Gb Ethernet, 2 порта 1Gb Ethernet, контроллер PCIe Gen.3 х4, 2 порта SATA 3.0, USB 2.0, GPIO, UART, SPI, I2C. Процессор предоставляет аппаратную поддержку виртуализации, инструкции SIMD и интегрированный аппаратный ускоритель криптографических операций, поддерживающий ГОСТ 28147-89. Чип разработан с использованием лицензированного у компании Imagination Technologies блока процессорного ядра MIPS32 P5600 Warrior.
На сайте организации IETF (Internet Engineering Task Force), занимающейся развитием протоколов и архитектуры интернета, выставлен на обсуждение первый черновой вариант спецификации протокола IPv8. Документ предложен сторонней компаний One Limited, создан вне процесса стандартизации IETF и имеет статус "Internet-Draft" (любой при соблюдении формальностей может опубликовать подобный черновик). Протокол IPv8 примечателен использованием JWT-токенов OAuth2 для авторизации элементов в сетях и верификацией каждого устанавливаемого исходящего соединения через запрос в DNS8 (без обращения к DNS8 не создаётся запись в таблице состояния XLATE8 (подобие NAT) и соединение блокируется).
Адресация в IPv8 близка к IPv4 - адресное пространство IPv4 является подмножеством IPv8, а адрес IPv8 образуется как префикс маршрутизации (номер автономной системы) + адрес IPv4 (<asn>.n.n.n.n). При нулевом префиксе маршрутизации (0.n.n.n.n) образуется обычный адрес IPv4, который можно использовать для взаимодействия с существующими сетями IPv4. По сути каждой автономной системе предоставляется свой отдельный диапазон IPv4. В заголовке пакета в поле IP указывается номер версии 8, а для адресов отправителя и получателя выделяется по 64 бита - 32 бита на префикс ASN + 32-бита на адрес хоста в стиле IPv4.
Заявлено, что решение на 100% обратно совместимо, внедрение может осуществляться бесшовно и для использования IPv8 не потребуется модификация существующих устройств, приложений и сетей. Подобное достигается благодаря возможности применения в конечных сетях и на клиентских системах IPv4 с использованием для доступа к глобальной сети IPv8 транслятора адресов XLATE8, преобразующего обращения между IPv4 и IPv8 по аналогии с NAT.
При этом предлагаются и элементы для прямого использования IPv8 на конечных системах и в сетевой инфраструктуре, такие как сетевые сокеты AF_INET8, новый тип записи в DNS - A8, протоколы ARP8, ICMPv8, SNMPv8, BGP8, IBGP8, OSPF8 и IS-IS8.
Базовый стек IPv8 включает протокол DHCP8, систему доменных имён DNS8, протокол синхронизации времени NTP8, протокол сбора телеметрии NetLog8, резолвер WHOIS8 для утверждения маршрутов, систему управления доступом ACL8 и транслятор адресов IPv4/IPv8 XLATE8. Запись в таблицу состояния соединений XLATE8 добавляется после отправляемого при каждом соединении запроса к DNS8 и регистрации активного маршрута через обращение к сервису WHOIS8. Вся функциональность, связанная со сбором телеметрии, аутентификацией, разрешением имён, синхронизацией времени и трансляцией адресов реализована в форме унифицированной платформы Zone Server.
Подключаемое к сети IPv8 устройство отправляет один discover-запрос к DHCP8 получает в ответ все параметры, необходимые для работы Zone Server. Управляемые элементы сети авторизируются через токены OAuth2, которые локально кэшируются в Zone Server. Возможна организация локальной аутентификации с использованием своего OAuth2-сервера или кэширование обращений к внешнему OAuth2-провайдеру.
Для глобальной маршрутизации применяется вариант протокола BGP. В глобальной таблице маршрутизации BGP8 допускается только одна запись на каждую автономную систему, минимальный размер префикса - /16. Для доставки обновлений прошивок и компонентов стека L1-L4 предложен протокол Update8, определяющий возможности для определения появления обновлений, проксирования и кэширования обновлений с их верификацией.
Кшиштоф Севич (Krzysztof Siewicz), юрист Фонда свободного ПО, отвечающий за контроль над соблюдением лицензий, заявил о необоснованности претензий разработчиков ONLYOFFICE к создателям форка Euro-Office, отбросившим добавленные в текст лицензии дополнения и продолжившим развитие кодовой базы ONLYOFFICE под чистой лицензией AGPLv3. Фонд СПО призвал ONLYOFFICE прояснить, что если пакет поставляется под лицензией AGPLv3, то получившие копию кода пользователи имеют право удалить из текста лицензии любые дополнительные ограничения.
Указано, что если проект ONLYOFFICE намерен продолжить использование AGPLv3 в будущих выпусках, он должен явно указать, что кодовая база распространяется под лицензией AGPLv3 и удалить упоминание всех ограничений из документации и исходного кода. Действия ONLYOFFICE, связанные с добавлением дополнительных ограничений в текст лицензии AGPLv3, названы вводящими пользователей в заблуждение и не соответствующими духу свободного ПО.
В текст лицензии AGPLv3, под которой распространяется код ONLYOFFICE, в 2021 году были добавлены дополнительные условия, требующие сохранения в производных продуктах оригинального логотипа ONLYOFFICE. Раздел 7(b) лицензии AGPL допускает добавление дополнительных требований об указании авторства и разработчики ONLYOFFICE считают, что логотип подпадает под данное разрешение. Представители Фонда СПО не согласны с этим и утверждают, что логотип является элементом товарного знака и бренда, напрямую не связанным с упоминанием автора.
Пункт о логотипе воспринят Фондом СПО как введение ограничения, несовместимого со свободами, которые предоставляет лицензия AGPLv3. Раздел 7 лицензии AGPLv3 предоставляет пользователям право удалять ограничения, внесённые помимо условий, определённых в разделах 7(a)-7(f). ONLYOFFICE может создать на основе текста AGPL собственную лицензию с дополнительными условиями, но в этом случае не должен упоминать, что код продолжает поставляться под лицензией AGPLv3.
Дополнение: Бредли Кун (Bradley M. Kuhn), основатель правозащитной организации Software Freedom Conservancy (SFC), опубликовал свой разбор ситуации с добавлением в ONLYOFFICE дополнительных требований в лицензию AGPLv3. В целом, мнение Бредли совпадает с позицией фона СПО - требование по сохранению логотипа является скрытым методом навязывания дополнительных ограничений, не соответствующих условиям AGPL, поэтому разработчики Euro-Office имеют полное право удалить подобное дополнительное ограничение. В случае судебного разбирательства, Бредли готов выступить экспертом и подтвердить легитимность действий Euro-Office. Тем не менее, он надеется, что до суда дело не дойдёт и компания Ascensio признает свою ошибку и удалит дополнительное ограничение из текста лицензии к ONLYOFFICE.
Линус Торвальдс принял в состав ядра Linux 7.1, релиз которого ожидается в середине июня, первую серию изменений для прекращения поддержки процессоров i486. На данном этапе из Kconfig удалены опции для сборки ядра с поддержкой процессоров 486DX, 486SX и AMD ELAN (CONFIG_M486, CONFIG_M486SX и CONFIG_MELAN), а из Makefile исключены опции компиляции для систем i486 (-march=i486). Код для фактической поддержки работы на процессорах i486 пока оставлен в ядре, но сборка для подобных систем теперь потребует применения патчей к сборочным файлам.
Причины удаления поддержки процессоров i486 связаны с необходимостью сопровождать в ядре усложнённый код, эмулирующий некоторые аппаратные операции, такие как CX8 (сравнить и обменять 8 байт) и TSC (счётчик циклов CPU, используемый в планировщике задач). Подобный код время от времени становится источником проблем, разбор которых отнимает у разработчиков время, которое можно было бы потратить c большей пользой. При этом мало кто использует современные ветки ядра Linux на устаревших 32-разрядных CPU - не осталось ни одного значимого дистрибутива, для которого продолжали бы публиковаться пакеты с ядром, собранные с опцией "M486=y".
В прошлом вопрос удаления поддержки CPU i486 поднимался разработчиками ядра Linux как минимум два раза. В октябре 2022 года Линус Торвальдс поднял тему удаления поддержки CPU i486, обсуждая проблему, возникшую из-за ошибки в коде эмуляции инструкции "CX8". Линус отметил, что процессоры i486 становятся музейными экспонатами и для них вполне можно обойтись "музейными" ядрами.
В 2025 году после выявления очередной проблемы, проявляющейся при эмуляции инструкции "CX8", обсуждение возобновилось и Линус Торвальдс заявил, что чувствует, что настало время отказаться от поддержки CPU i486 и не видит причин, чтобы продолжать тратить время разработчиков на решение возникающих из-за этих процессоров проблем.
Поддержка процессоров i386 была удалена из ядра в 2012 году.
Прекращение поддержки классических i486 не затронет выпускавшиеся до 2019 года встроенные процессоры Intel Quark, а также продолжающие производиться SoC Vortex86DX, так как данные процессоры хоть и относятся к классу i486, но включают свойственные поколению Pentium дополнительные инструкции, в том числе "cmpxchg8b".
Состоялся релиз библиотеки OpenSSL 4.0.0, предлагающей с реализацию протоколов TLS и различных алгоритмов шифрования. OpenSSL 4.0 отнесён к выпускам с обычным сроком поддержки, обновления для которых выпускаются в течение 13 месяцев. Поддержка прошлых веток OpenSSL 3.6, 3.5 LTS, 3.4 и 3.0 LTS продлится до ноября 2026 года, апреля 2030 года, октября 2026 года и сентября 2026 года соответственно. Код проекта распространяется под лицензией Apache 2.0.
Реализован API для использования TLS-расширения ECH (Encrypted ClientHello, RFC 9849), предназначенного для шифрования информации о параметрах TLS-сеансов, таких как запрошенное доменное имя. В отличие от расширения ESNI (Encrypted Server Name Indication) в ECH вместо шифрования на уровне отдельных полей, целиком шифруется всё TLS-сообщение ClientHello, что позволяет блокировать утечки через поля, которые не охватывает ESNI, например, поле PSK (Pre-Shared Key).
Добавлена поддержка определённых в RFC 8998 алгоритмов, использующих стандартизированный в Китае набор криптоалгоритмов SM2: алгоритма формирования цифровой подписи sm2sig_sm3, группы обмена ключами curveSM2 и постквантовой группы curveSM2MLKEM768.
Добавлена криптографическая функция хэширования cSHAKE, основанная на алгоритме SHA-3 и позволяющая формировать разные хэши на основе одинаковых входных данных для защиты от атак, манипулирующих повторным использованием данных.
Добавлен гибридный алгоритм "ML-DSA-MU", сочетающий постквантовый алгоритм формирования цифровой подписи ML-DSA (CRYSTALS-Dilithium) с классической хеш-функцией SHAKE256.
Добавлена поддержка функций формирования ключей SNMP KDF на основе HMAC-SHA и SRTP KDF на основе AES-CM, используемых в сетевых протоколах SNMPv3 и SRTP.
В команду "openssl fipsinstall" добавлена опция "-defer_tests", позволяющая отложить запуск тестов при установке FIPS-модулей.
Для платформы Windows реализована поддержка статического или динамического связывания с Visual C++ Runtime.
В TLS 1.2 добавлена поддержка согласуемого обмена ключами на основе алгоритма FFDHE (Finite Field Diffie-Hellman Ephemeral), соответствующая RFC 7919.
Прекращена поддержка SSLv3 и SSLv2 Client Hello.
Удалена поддержка динамически загружаемых движков, вместо которых для расширения функциональности OpenSSL следует использовать концепцию подключаемых провайдеров.
В TLS на этапе компиляции отключена поддержка устаревших эллиптических кривых. Для возвращения можно использовать опцию "enable-tls-deprecated-ec".
Удалена утилита c_rehash, вместо которой следуют использовать команду "openssl rehash".
Из команды "openssl ca" удалена устаревшая опция "msie-hack".
Удалена поддержка собственных методов EVP_CIPHER, EVP_MD, EVP_PKEY
и EVP_PKEY_ASN1.
Удалены устаревшие функции SSL/TLS, привязанные к фиксированным версиями протоколов, например, "TLSv1_client_method()".
Удалены устаревшие функции ERR_get_state(), ERR_remove_state()
и ERR_remove_thread_state().
Прекращена поддержка целевых платформ darwin-i386{,-cc} и darwin-ppc{,64}{,-cc}.
После года разработки опубликована новая стабильная ветка высокопроизводительного HTTP-сервера и многопротокольного прокси-сервера nginx 1.30.0, которая вобрала в себя изменения, накопленные в основной ветке 1.29.x. В дальнейшем все изменения в стабильной ветке 1.30 будут связаны с устранением серьёзных ошибок и уязвимостей. В скором времени будет сформирована основная ветка nginx 1.31, в которой будет продолжено развитие новых возможностей. Для обычных пользователей, у которых нет задачи обеспечить совместимость со сторонними модулями, рекомендуется использовать основную ветку, на базе которой раз в три месяца формируются выпуски коммерческого продукта Nginx Plus. Код nginx написан на языке Си и распространяется под лицензией BSD.
В соответствии с февральским отчётом компании Netcraft под управлением nginx работает около 321 млн сайтов (год назад 245 млн, два года назад - 243 млн, три года назад 289 млн). Nginx используется на 16.08% всех активных сайтов (год назад 17.89%, два года назад 18.15%, три года назад 18.94%), что соответствует второму месту по популярности в данной категории (доля Apache соответствует 13.27% (год назад 16.03%, два года назад 20.09%, три года назад 20.52%), Cloudflare - 20.62% (17.81%, 14.12%, 11.32%), Google - 10.65% (9.89%, 10.41%, 9.89%).
При рассмотрении всех сайтов nginx сохраняет лидерство и занимает 22.65% рынка (год назад 20.48%, два года назад - 22.31%, три года назад - 25.94%), в то время как доля Apache соответствует 12.19% (16.03%, 20.17%, 20.58%), Cloudflare - 15.27% (12.87%, 11.24%, 10.17%), OpenResty (платформа на базе nginx и LuaJIT) - 8.01% (9.36%, 7.93%, 7.94%).
Среди миллиона самых посещаемых сайтов в мире nginx занимает второе место с долей 19.85% (год назад 20.37%, два года назад 20.63%, три года назад 21.37%). Первое место удерживает Cloudflare - 26.84% (22.32%, 22.59%, 21.62%). Доля Apache httpd - 15.84% (17.95%, 20.09%, 21.18%).
По данным W3Techs nginx используется на 32.8% сайтов из миллиона самых посещаемых (в апреле прошлого года этот показатель составлял 33.8%, позапрошлого - 34.3%). Доля Apache за год снизилась с 26.3% до 23.9%, доля Microsoft IIS снизилась с 4% до 3.4%, а доля Caddy с 0.3% до 0.2%. Доля Node.js увеличилась с 4.4% до 6.0%, а доля LiteSpeed с 14.6% до 15.2%.
Наиболее заметные улучшения, добавленные в процессе разработки основной ветки 1.29.x, на базе которой сформирован релиз 1.30.0:
Добавлена поддержка протокола Multipath TCP (MPTCP), позволяющего доставлять пакеты одновременно по нескольким маршрутам через разные сетевые интерфейсы. Для включения в директиву "listen" добавлен параметр "multipath".
Добавлена поддержка TLS-расширения ECH (Encrypted ClientHello), продолжающего развитие расширения ESNI (Encrypted Server Name Indication) и используемого для шифрования информации о параметрах TLS-сеансов, таких как запрошенное доменное имя. Ключевое отличие ECH от ESNI в том, что в ECH вместо шифрования на уровне отдельных полей целиком шифруется всё TLS-сообщение ClientHello, что позволяет блокировать утечки через поля, которые не охватывает ESNI, например, поле PSK (Pre-Shared Key). Использование ECH включается через указание в директиве "ssl_ech_file" файла конфигурации ECHConfig в формате PEM. Поддержка доступна при использовании библиотеки OpenSSL 4.0.
Добавлена возможность привязки сеансов клиентов к одним и тем же серверам в группе. Доступно три метода: "cookie" - передача данных о выбранном сервере через указанную Cookie; "route" - проксируемый сервер назначает клиенту маршрут при получении первого запроса; "learn" - nginx анализирует ответы от upstream-сервера и запоминает начатые сервером сеансы. Для настройки привязки в блок "upstream" модуля "http" добавлена директива "sticky", а в директиву "server" добавлены параметры "route" и "drain".
Добавлена директива "early_hints" и реализована поддержка HTTP-кода 103 в ответах от бэкендов proxy и gRPC. Код 103 позволяет информировать клиента о содержании некоторых HTTP-заголовков сразу после запроса, не дожидаясь пока сервер выполнит все связанные с запросом операции и начнёт отдачу контента. Подобным образом можно сообщать подсказки о связанных с отдаваемой страницей элементах, которые могут быть предварительно загружены (например, могут быть приведены ссылки на используемые на странице css и javascript). Получив информацию о подобных ресурсах браузер приступит к их загрузке не дожидаясь окончания отдачи основной страницы, что позволяет сократить общее время обработки запроса.
Добавлены директивы add_header_inherit и
add_trailer_inherit, позволяющие изменить правила наследования значений, указанных в директивах add_header и add_trailer. Параметр "off" отменяет наследование значений, а параметр "merge" включает добавление значений с предыдущего уровня к значениям на текущем уровне.
Добавлена директива max_headers, ограничивающая максимальное число HTTP-заголовков в запросе. При превышении лимита возвращается ошибка 400 (Bad Request). Возможность перенесена из FreeNginx.
Добавлены переменные $request_port и $is_request_port. Первая переменная содержит номер порта из компонента URI или из заголовка "Host", а вторая содержит ":", если переменная $request_port не пустая.
Добавлены переменные
$ssl_sigalg и $ssl_client_sigalg, содержащие название алгоритма формирования цифровой подписи для TLS-соединения.
В директиву "geo" добавлен параметр "volatile", отключающий кэширование переменной. Разрешено использовать маски в директиве "include", указанной внутри блока "geo".
В блоке "upstream" активирована по умолчанию директива "keepalive". В директиву "keepalive", используемую в блоке "upstream", добавлен параметр "local". При указании данного параметра, вместо совместного использования одного соединения к общему upstream-серверу, упоминаемому в разных
блоках location и server, для каждого блока поддерживается отдельное соединение к upstream.
При использовании в режиме прокси по умолчанию выставлена версия протокола HTTP/1.1 с включением режима keep-alive (в модуле ngx_http_proxy_module включена по умолчанию поддержка keep-alive и выставлено значение "1.1" в директиве "proxy_http_version" и прекращена отправка по умолчанию заголовка "Connection").
В модуль ngx_http_proxy добавлена поддержка протокола HTTP/2, что позволяет использовать HTTP/2 при обращении к бэкендам.
Предоставлена возможность загрузки криптографических ключей из аппаратных токенов, используя в качестве провайдера библиотеку OpenSSL.
В реализацию протокола QUIC добавлена поддержка режима 0-RTT, доступная на системах с OpenSSL 3.5.1 и более новыми выпусками.
Добавлена возможность сборки с криптографической библиотекой AWS-LC, развиваемой компанией Amazon.
По умолчанию отключено сжатие сертификатов TLSv1.3.
Обеспечена совместимость с библиотекой OpenSSL 4.0.
Дополнительно можно отметить публикацию релиза проекта FreeNginx 1.30.0, развивающего форк Nginx. Разработку форка ведёт Максим Дунин, один из ключевых разработчиков Nginx. FreeNginx позиционируется как некоммерческий проект, обеспечивающий разработку кодовой базы Nginx без корпоративного вмешательства. Код FreeNginx продолжает поставляться под лицензией BSD. Среди изменений в ветке FreeNginx 1.30:
добавлена поддержка TLS-расширения ECH (Encrypted Client Hello); улучшена обработка директивы limit_rate; добавлены директивы send_min_rate и client_body_min_rate; реализована возможность ограничения числа соединений и интенсивности запросов в почтовом прокси; добавлена поддержка БД GeoIP2 в модуле GeoIP; усилена защита модуля XSLT.
Опубликован выпуск браузерного движка Servo 0.1.0 и развиваемого вместе с ним демонстрационного браузера ServoShell, написанных на языке Rust. Готовые сборки сформированы для Linux, Android, macOS и Windows. Помимо отдельных сборок Servo теперь поставляется и в форме crate-пакета, позволяющего встраивать движок в приложения и использовать его в форме библиотеки.
Servo 0.1.0 стал первым выпуском, для которого обеспечен длительный цикл поддержки (LTS). Новые LTS-ветки будут публиковать раз в 6 месяцев на основе очередного промежуточного выпуска. Поддержка LTS-выпусков будет осуществляться 9 месяцев (3 месяца даётся для перехода на новую LTS-ветку). От обычных выпусков LTS-ветка отличается публикацией обновлений с исправлениями уязвимостей в библиотеке servo, JavaScript-движке и зависимостях. Предполагается, что LTS-ветка будет полезна для разработчиков, встраивающих Servo в свои проекты и не желающих ежемесячно переходить на очередной промежуточный выпуск с возможными изменениями в API.
Выпуск Servo 0.1.0 LTS построен на основе сформированной несколько дней назад промежуточной версии 0.0.6, в которой были реализованы следующие новые возможности:
В HTML-элементe "button" реализованы атрибуты "command" и "commandfor", которые можно использовать в кнопках вместо атрибутов "popovertargetaction" и "popovertarget" для декларативной настройки взаимодействия с меню, вызываемым при нажатии на кнопку.
Добавлен CSS-селектор ":modal", позволяющий определить, что диалог, созданный через элемент <dialog>, является модальным.
Добавлена поддержка заголовка "Content-Security-Policy: base-uri", ограничивающего URL, которые могут использоваться в HTML-элементе <base>.
Добавлена частичная поддержка отложенной загрузки iframe-блоков, при которой содержимое, находящееся вне видимой области, не загружается до тех пор, пока пользователь не прокрутит страницу в место, непосредственно предшествующее элементу. Включение отложенной загрузки страниц осуществляется через атрибут "loading=lazy" в теге iframe (<iframe loading=lazy>).
Добавлена частичная поддержка CSS-свойства "transform-style: preserve-3d" для позиционирования дочерних элементов в 3D-пространстве.
Реализованы события pointermove, pointerdown, pointerup и pointercancel.
Обеспечен поворот изображений на основе метаданных EXIF.
Обеспечено использование переменной окружения LANG для выбора языка по умолчанию для заголовка "Accept-Language" и свойства navigator.language.
В демонстрационном браузере servoshell для изменения настроек
реализованы страницы servo:preferences (GUI конфигуратор) и servo:config (изменение отдельных параметров в стиле about:config). Добавлена поддержка перезагрузки страницы при нажатии F5.
В инструментах для web-разработчиков в режиме инспектирования добавлена поддержка редактирования атрибутов DOM, в web-консоли обеспечен предпросмотр объектов, передаваемых через console.log(), в отладчике появилась возможность приостановки и возобновления выполнения скриптов.
Расширен API для встраивания браузерного движка в приложения.
Движок Servo изначально развивался компанией Mozilla, но затем перешёл под покровительство организации Linux Foundation. Servo отличается поддержкой многопоточного рендеринга web-страниц, распараллеливанием операций с DOM (Document Object Model) и задействованием предоставляемых языком Rust механизмов безопасного программирования. Servo изначально создан с поддержкой разбиения кода DOM и рендеринга на более мелкие подзадачи, которые могут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU. В Firefox уже интегрированы некоторые части Servo, такие как многопоточный CSS-движок и система отрисовки WebRender.
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 7.0. Среди наиболее заметных изменений: правила применения AI-ассистентов, перевод Rust в основные возможности ядра, повышение производительности подкачки, включение по умолчанию режима PREEMPT_LAZY, поддержка фильтров для операций io_uring, новая ФС Nullfs, инфраструктура fserror, средства мониторинга XFS, поддержка ремапинга в Btrfs, включение по умолчанию версии NFS 4.1, интеграция пост-квантового криптоалгоритма ML-DSA, активация AccECN в сетевой подсистеме, начальная поддержка WiFi 8.
Номер 7.0 присвоен, так как в ветке 6.x накопилось достаточного выпусков для смены первого числа в номере версии (в своё время выпуск 6.0 был сформирован следом за 5.19). Смена нумерации осуществляется из эстетических соображений и является формальным шагом, снимающим дискомфорт из-за накопления большого числа выпусков в серии.
В новую версию принято 15624 исправления от 2477 разработчиков,
размер патча - 56 МБ (изменения затронули 18053 файла, добавлено 704060 строк кода,
удалено 278132 строки). В прошлом выпуске было 15657 исправлений от 2237 разработчиков, размер патча - 52 МБ. Около 51% всех представленных в 7.0
изменений связаны с драйверами устройств, примерно 11% изменений имеют
отношение к обновлению кода, специфичного для аппаратных архитектур, 14%
связано с сетевым стеком, 5% - с файловыми системами и 3% c внутренними
подсистемами ядра.
Дисковая подсистема, ввод/вывод и файловые системы
Реализована инфраструктура fserror и добавлен API для получения информации об ошибках ввода/вывода и повреждении метаданных при работе с файлами. Предложенная инфраструктура унифицирует в файловых системах передачу сведений об ошибках в пространство пользователя через механизм fsnotify.
В XFS добавлены новые возможности для мониторинга за состоянием файловой системы из пространства пользователя. Предложена ioctl-операция XFS_IOC_HEALTH_MONITOR, возвращающая файловый дескриптор, через который можно получать сведения о сбоях, связанных с повреждением метаданных или возникновение ошибок при вводе/вывода, а также отслеживать изменение состояний ФС, таких как отмонтирование и завершение работы. Дополнительно предложен управляемый через systemd фоновый процесс xfs_healer, обрабатывающий события о состоянии ФС из пространства пользователя и при необходимости автоматически запускающий процедуры восстановления.
В файловую систему Btrfs добавлена экспериментальная поддержка структуры "дерево ремапинга" (remap tree), которая в будущем может быть задействована в качестве промежуточного слоя при выполнении операций ввода-вывода. Суть добавленной возможности в том, что после перемещения данных на накопителе вместо обновления всех связанных с этими данными структур в дополнительной структуре "remap tree" сохраняются старые и новые адреса данных, после чего при обращении к данным адреса подменяются. Новый подход преподносится как более надёжный и гибкий, а также упрощающий дальнейшее расширение функциональности Btrfs.
В Btrfs реализована поддержка прямого ввода/вывода в ситуациях, когда размер блока превышает размер страницы памяти в системе.
В состав
включена новая файловая система "Nullfs", которую можно использовать в качестве заглушки для корневой ФС. Файловая система Nullfs всегда пустая, не содержит данных и не поддерживает изменения. Назначением Nullfs является использование в качестве начальной ФС для упрощения процесса загрузки системы - поверх Nullfs затем монтируются другие ФС и используется системный вызов pivot_root() для переключения корневой ФС вместо очистки содержимого initramfs и использования связанной с ним корневой ФС.
Реализовано обновление информации о времени модификации файлов в неблокирующем режиме. Ранее вызов file_update_time_flags() с флагом IOCB_NOWAIT возвращал ошибку "-EAGAIN", что не позволяло использовать операции прямой записи в неблокирующем режиме.
В файловых системах в разряд отдельно включаемых опций переведена поддержка уведомительных блокировок (lease). По умолчанию подобный механизм теперь не активируется из-за проблем с ФС, изначально не рассчитанных на его применение. Например, его не поддерживают ФС 9p и cephfs.
В файловой системе Ext4 повышена эффективность кэширования экстентов и отложенного выделения блоков (delayed allocation). Реализован sysfs-параметр "err_report_sec", определяющий задержку записи в лог повторяющихся предупреждений о проблемах с целостностью и ошибках в ФС. Повышена производительность одновременной записи в несколько файлов в режиме прямого ввода/вывода (direct I/O).
В файловой системе EROFS (Extendable Read-Only File System), предназначенной для использования на разделах, доступных в режиме только для чтения, для сжатия по умолчанию задействован алгоритм LZMA. Опционально доступны алгоритмы DEFLATE и Zstandard, которые больше не помечены экспериментальными. Реализовано совместное использование записей в страничном кэше (page-cache) для идентичных файлов в отдельных ФС EROFS.
Удалён режим laptop_mode, экономящий энергопотребление за счёт откладывания и объединения операций записи на жёсткий диск с целью продления нахождения диска в спящем режиме и снижения числа пробуждений. Режим потерял актуальность, так как в современных мобильных устройствах жёсткие диски вытеснены твердотельными накопителями.
Файловая система F2FS переведена на использование больших фолиантов страниц памяти (large folios).
Проведена работа над драйвером ntfs3, развиваемым компанией Paragon Software. Добавлена поддержка операций с файлами на базе iomap, реализованы опции llseek SEEK_DATA/SEEK_HOLE, добавлен режим delalloc для отложенного выделения блоков. Тем временем, в списке рассылки разработчиков ядра в феврале было одобрено включение в состав одной из будущих версий ядра новой реализации NTFS - ntfsplus, разработанной для замены ntfs3.
По умолчанию при сборке включена версия протокола NFS 4.1 (CONFIG_NFS_V4_1). Обеспечена блокировка экспорта через NFS специализированных псевдо-ФС, таких как pidfs и nsfs. В NFSD реализована экспериментальная возможность использования POSIX ACL и добавлена поддержка динамического изменения пула потоков (thread-pool) в зависимости от нагрузки.
Память и системные сервисы
Утверждены официальные правила применения AI-ассистентов и включения в ядро автоматически сгенерированного содержимого. При передаче сгенерированного кода предписано помечать его через указание используемого AI-ассистента при помощи тега "Assisted-by". AI-ассистентам запрещено добавлять тег "Signed-off-by" - человек, передавший патч, считается его автором, несёт ответственность за переданное изменение и ручается за его качество. Разработчикам предписано проводить ручное рецензирование полученного через AI кода и проверять соответствие результата лицензионным требованиям.
Поддержка Rust переведена из экспериментальных в основные возможности ядра. Поддержка Rust не активна по умолчанию и не приводит к включению Rust в число обязательных сборочных зависимостей к ядру.
Завершена интеграция в ядро механизма "Swap Table", позволяющего повысить производительность подкачки. Ускорение достигается благодаря уменьшению конкуренции за доступ к кэшу подкачки, более эффективного поиска в кэше и снижения фрагментации. Бэкенд на базе Swap Table задействован для кэширования подкачки вместо бэкенда XArray и позволил в тесте redis-benchmark с BGSAVE увеличить число обрабатываемых запросов на 22%.
Добавлена поддержка появившегося в Clang 22 расширения Thread Safety Analysis, позволяющего на этапе компиляции выявлять потенциальные состояния гонки и ошибки, вызванные некорректным выставлением блокировок. Расширение предлагает серию атрибутов, таких как GUARDED_BY(...), REQUIRES(...), RELEASE(...) и ACQUIRE(...), позволяющих отмечать охватываемые блокировками функции и разделять области действия блокировок (определять контекст). На этапе компиляции выполняется проверка корректности применения примитивов синхронизации, таких как мьютексы, на основе оценки активности или не активности, связанного с ними контекста.
В системный вызов open_tree добавлен флаг OPEN_TREE_NAMESPACE для упрощения настройки изолированных контейнеров и ускорения запуска контейнеров на системах с большим числом точек монтирования. По аналогии с OPEN_TREE_CLONE новый флаг копирует только указанное дерево точек монтирования (mount tree), но вместо локального файлового дескриптора возвращает файловый дескриптор в новом пространстве имён точек монтирования, в котором скопированное дерево монтируется поверх копии реальной корневой ФС. Флаг OPEN_TREE_NAMESPACE востребован для ухода от раздельного выполнения операций unshare(CLONE_NEWNS) и pivot_root(), применяемых при создании контейнеров.
В системный вызов rseq добавлен механизм расширения квантов времени (time slice), позволяющий получить дополнительное процессорное время для неразрывного выполнения критической секции. Идея в том, чтобы избежать прерывания планировщиком задач критической секции с выставленной блокировкой, приводящего к передаче управления другим потокам, использующим ресурс, на которых остаётся выставлена блокировка. Расширение кванта времени производится без дополнительных накладных расходов, но и без строгих гарантий, предоставляемых при полноценном регулировании приоритетов.
Для архитектур arm64, loongarch, powerpc, riscv, s390 и x86 режим вытеснения задач (preemption) в планировщике по умолчанию изменён с PREEMPT_NONE на PREEMPT_LAZY. Число возможных режимов сокращено с четырёх до двух - PREEMPT_FULL и PREEMPT_LAZY (режимы PREEMPT_NONE и PREEMPT_VOLUNTARY оставлены только для архитектур, не поддерживающих PREEMPT_FULL и PREEMPT_LAZY). Режим PREEMPT_LAZY применяет модель полного вытеснения (PREEMPT_FULL) для realtime-задач (RR/FIFO/DEADLINE), но задерживает вытеснение обычных задач (SCHED_NORMAL) до границы тика. Вносимая задержка приводит к сокращению случаев вытеснения держателей блокировок, что позволяет приблизить производительность к конфигурациям, использующим модель добровольного вытеснения (voluntary preemption), т.е. PREEMPT_LAZY позволяет сохранить возможности полного вытеснения в отношении realtime-задач, но сводит к минимуму проседание производительности для обычных задач.
Включение PREEMPT_LAZY привело к серьёзной регрессии, в два раза снижающей производительность PostgreSQL на системах ARM64. Для устранения падения производительности разработчикам PostgreSQL предложено задействовать опцию PR_RSEQ_SLICE_EXTENSION для снижения вероятности вытеснения держателя блокировки.
Продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра. Благодаря ранее интегрированной библиотеке "syn", упрощающей написание сложных макросов, удалось сократить размер Rust-кода в ядре за счёт упрощения определений имеющихся процедурных макросов. Расширены возможности библиотек kernel, macros и pin-init.
В систему асинхронного ввода/вывода io_uring
добавлена опция для использования не кольцевых очередей (non-circular submission queue), более эффективно кэшируемых в ситуации, когда выполнение запроса завершается раньше возврата из системного вызова.
В подсистеме eBPF в механизме BTF (BPF Type Format), предоставляющем информацию для проверки типов в псевдокоде BPF, для поиска отладочной информации задействован бинарный поиск, что повысило эффективность загрузки BPF-программ. В eBPF добавлена поддержка неявных аргументов при вызове kfunc (функции ядра, доступные для использования в программах BPF), определённых с флагом KF_IMPLICIT_ARGS.
Удалён код для поддержки начального RAM-диска (initrd) на базе linuxrc, давно объявленный устаревшим. Оставшиеся реализации initrd планируют удалить в 2027 году. Вместо initrd следует использовать initramfs (разница в том, что initrd размещает начальное загрузочное окружение в дисковом образе, а initramfs - в файловой системе).
В блочном устройстве zram, применяемом для сжатого хранения раздела подкачки в памяти, изменена логика работы со сжатыми страницами памяти при опциональном перемещении данных в постоянное хранилище в случае заполнения доступной оперативной памяти. Ранее страницы памяти распаковывались перед записью на физический носитель, а теперь сохраняются как есть в сжатом виде, что снижает нагрузку на CPU и экономит энергию при автономной работе.
В утилиту timerlat, предназначенную для измерения задержек при работе планировщика задач, добавлена опция "--bpf-action" для запуска BPF-программ в случае превышения заданного порога.
В систему трассировки ftrace добавлена настройка "bitmask-list" для вывода битовых масок в читаемом виде (в форме списка битов, а не шестнадцатеричного числа). В tracefs добавлены возможности для аудита
фильтров и триггеров. Добавлена команда "perf sched stats" для сбора и отображения статистики о работе планировщика задач. В подсистему perf добавлена поддержка метрик производительности процессоров AMD Zen 6, Intel Nova Lake, Diamond Rapids и Wildcat Lake, Airmont NP.
В утилите Turbostat реализован вывод статистики о работе L2-кэша процессоров Intel.
Добавлены сборочные опции LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE и LOGO_LINUX_CLUT224_FILE для определения файла с изображением логотипа, который будет показываться при загрузке ядра вместо штатного логотипа с пингвином Tux.
Реализовано автоматическое включение использования расширений Intel TSX (Transactional Synchronization Extensions) на системах c процессорами, не подверженными уязвимости Zombieload, такими как Cooper Lake, Ice Lake, Sapphire Rappids, Emerald Rappids и Granite Rappids. Уязвимость
Zombieload приводит к утечке сведений по сторонним каналам при работе механизма асинхронного прерывания операций (TAA, TSX Asynchronous Abort). Включение TSX позволяет добиться повышения производительности многопоточных приложений за счёт динамического исключения лишних операций синхронизации.
Виртуализация и безопасность
В системе асинхронного ввода/вывода io_uring реализована возможность прикрепления BPF-программ с фильтрами, контролирующими, что могут делать конкретные SQE (Submission Queue Entry) операции (подобие системных вызовов в io_uring). Добавленная возможность является аналогом фильтров системных вызовов. Фильтры можно привязывать к определённым задачам и они наследуются при порождении других процессов после вызова fork(). При наличии активных фильтров, добавляемые поверх фильтры могут лишь прикреплять дополнительные ограничения, но не отключать имеющиеся. Реализованная возможность позволит блокировать методы обхода фильтрации системных вызовов в sandbox-окружениях, основанные на выполнении вместо системных вызовов аналогичных операций, предоставляемых в io_uring.
В SELinux добавлена возможность управления доступом к токенам BPF, позволяющим непривилегированным процессам выполнять некоторые привилегированные операции c BPF, например, загружать BPF-программы в ядро и создавать map-структуры.
Добавлена поддержка алгоритма формирования цифровых подписей ML-DSA (CRYSTALS-Dilithium), основанного на теории решёток и стойкого к подбору на квантовом компьютере. Предоставлена возможность использования ML-DSA для аутентификации модулей ядра.
Удалена возможность использования схем формирования цифровых подписей с алгоритмом SHA-1 для заверения модулей ядра (поддержка загрузки подписанных модулей сохранена).
В записи аудита NETFILTER_PKT добавлены поля 'sport' и 'dport' для инспектирования номеров сетевых портов, а не только IP-адресов.
Для систем с архитектурой RISC-V реализована поддержка расширений Zicfiss и Zicfilp, предоставляющих аппаратные возможности для применения защиты CFI (Control Flow Integrity), блокирующей нарушения нормального порядка выполнения инструкций (control flow) в результате применения эксплоитов, изменяющих хранимые в памяти указатели на функции.
В гипервизоре KVM реализована возможность передачи в гостевые системы информации о поддержке процессором расширения ERAPS (Enhanced Return Address Predictor Security), позволяющего обойтись без некоторых операций сброса состояния CPU при возвращении управления хосту гостевой системой. Кроме того, добавлена поддержка закрепления за гостевыми системами оборудования для отслеживания производительности (PMU, Performance Monitoring Unit), что позволяет повысить точность профилирования по сравнению с использованием эмулируемых PMU.
В драйвер для гипервизора Hyper-V добавлена поддержка интерфейса debugfs для просмотра статистики о работе гипервизора.
Добавлено отдельной хранилище ключей (keyring) для проверки целостности дисковых образов при помощи модуля dm-verity.
Сетевая подсистема
Включено по умолчанию расширение AccECN (Accurate Explicit Congestion Notification), реализующее улучшенный вариант расширения ECN, позволяющего хостам в случае перегрузки маркировать IP-пакеты вместо их отбрасывания, что даёт возможность определять возникновение начальной стадии затора в каналах связи без потери пакетов. Исходное расширение ECN имеет ограничение, допускающее выставление только одного сигнала о перегрузке в рамках одного цикла приёма-передачи TCP (RTT, Round-Trip Time, отправка запроса и получение ответа). AccECN снимает данное ограничение и даёт возможность получателю передавать отправителю более одной метки о перегрузке в заголовке TCP-пакета. Алгоритмы управления перегрузкой могут использовать полученную информацию для более точного реагирования на перегрузки и не прибегать к резкому снижению интенсивности отправки пакетов при появлении незначительной перегрузки.
В реализацию алгоритма управления сетевыми очередями Cakeдобавлена возможность обработки нескольких очередей для распределения нагрузки на несколько ядер CPU. Алгоритм CAKE применяется для снижения негативного влияния промежуточной буферизации пакетов на граничном сетевом оборудовании, и нацелен на достижение максимально возможной пропускной способности и минимального уровня задержек даже на медленных каналах связи.
В сокеты VSOCK, используемые для взаимодействия с виртуальными машинами,
добавлена поддержка сетевых пространств имён (network namespace).
Добавлена начальная реализация будущего стандарта WiFi 8 (802.11bn, Ultra High Reliability" WiFi).
Добавлены оптимизации, позволившие повысить производительность обработки входящих UDP-пакетов на 12% при проведении стресс-тестирования в 100-гигабитной сети.
Добавлена возможность использования буферов приёма пакетов (RX), размером больше 4 КБ. Увеличение размера буфера сокращает число операций со стеком при использовании аппаратного агрегирования пакетов (hw-gro - Hardware Generic Receive Offload), что в однопоточных тестах приводит к снижению нагрузки на CPU почти на треть.
Реализована возможность применения механизмов аппаратного ускорения обработки пакетов GSO (Generic Segmentation Offload) и GRO (Generic Receive Offload) при использовании вложенных UDP-туннелей.
Оборудование
В драйвере AMDGPU реализована поддержка IP-блоков, используемых в новых GPU AMD, таких как SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 и JPEG 5.3.
В драйвере Nouveau улучшено управление частотой на системах Tegra 186+.
В драйвер i915 добавлена начальная поддержка дисплейного IP-блока Xe3p_LPD, применяемого в процессорах Intel Nova Lake-P.
Продолжена работа над drm-драйвером (Direct Rendering Manager) Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake. Добавлен режим Multi Queue. Добавлены компоненты, необходимые для диагностики зависаний GPU в Mesa. Добавлена поддержка механизма MERT для управления доступом к памяти GPU. Расширена поддержка датчиков температуры.
Продолжена интеграция компонентов драйвера Nova для GPU NVIDIA, оснащённых GSP-прошивками, используемыми начиная с серии NVIDIA GeForce RTX 2000 на базе микроархитектуры Turing. Драйвер написан на языке Rust. В новой версии проведена подготовка к реализации поддержки GPU на базе микроархитектуры Turing и внесены различные внутренние изменения.
Добавлена поддержка контроллеров и периферийных устройств с многоканальным интерфейсом SPI (Serial Peripheral Interface), позволяющим передавать данные в несколько параллельных потоков.
Добавлен драйвер для комбинированных коннекторов Type-C, применяемых на устройствах на чипах Apple Silicon и сочетающих интерфейсы USB3, DP-AltMode и Thunderbolt/USB4.
Добавлена поддержка звуковых подсистем чипов Tegra238, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S и Focusrite Forte.
Реализована поддержка аппаратных декодировщиков видео в форматах H.264 и HEVC, применяемых в SoC RK3588 и RK3576 (используются, например, в платах Orange Pi 5).
Добавлена начальная поддержка ускорителей копирования и анализа данных Intel DSA 3.0 (Data Streaming Accelerator).
Добавлена поддержка смартфонов и планшетов: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 xl, Microsoft surface pro 11.
Одновременно латиноамериканский Фонд свободного ПО сформировал
вариант полностью свободного ядра 7.0 - Linux-libre 7.0-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В выпуске 7.0 проведена чистка от блобов драйвера iwlwifi. Обновлён код чистки в драйверах amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt. Выполнена чистка имён blob-ов в dts-файлах (devicetree) для ARM-чипов.
После трёх лет с момента публикации прошлой ветки представлен релиз полностью свободного Linux-дистрибутива Trisquel 12.0, основанного на пакетной базе Ubuntu 24.04 LTS и ориентированного на использование в небольших предприятиях, в образовательных учреждениях и домашними пользователями. Trisquel лично одобрен Ричардом Столманом, официально признан Фондом Свободного ПО в качестве полностью свободного и помещен в список рекомендованных фондом дистрибутивов. Для загрузки доступны установочные образы, размером 3.4 ГБ (MATE), 2.7 ГБ (KDE), 1.9 ГБ (LXDE), 1.5 ГБ (Sugar) и 79 МБ (загрузка по сети), сформированные для архитектур x86_64, ppc64el, arm64 и armhf. Выпуск обновлений для дистрибутива будет осуществляться до апреля 2029 года.
Дистрибутив примечателен исключением из поставки всех несвободных компонентов, таких как бинарные драйверы, прошивки и элементы графического оформления, распространяемые под несвободной лицензией или использующие зарегистрированные торговые марки. Несмотря на полный отказ от проприетарных компонентов, Trisquel совместим с Java (OpenJDK), поддерживает большинство аудио- и видео-форматов, включая работу с защищенными DVD, задействуя при этом только полностью свободные реализации данных технологий. В качестве рабочих столов предлагаются MATE (по умолчанию), LXDE и KDE.
В новом выпуске:
Осуществлён переход с пакетной базы Ubuntu 22.04 на ветку Ubuntu 24.04.
До версии 6.8 (была 5.15) обновлён полностью свободный вариант ядра Linux - Linux Libre, очищенный от проприетарных прошивок и драйверов, содержащих несвободные компоненты. Повышена модульность поставки ядра.
С целью повышения безопасности переработаны правила AppArmor для графических окружений.
Пакетный менеджер APT обновлён до ветки 3.0, а настройки репозиториев переведены на использование формата deb822.
Рабочий стол MATE обновлён до версии 1.26.1. Опционально для установки доступны пользовательские окружения LXDE 0.99.2, KDE Plasma 5.27 и Sugar 0.121 (обучающее окружение для детей).
Обновлены версии программ, в том числе в бэкпортах доступны свежие версии LibreOffice, yt-dlp, Inkscape, Nextcloud Desktop, Kdenlive, Tuba, 0 A.D., fastfetch и многих других приложений.
Основные требования к полностью свободным дистрибутивам:
Включение в состав дистрибутива ПО с одобренными FSF лицензиями;
Недопустимость поставки бинарных прошивок (firmware) и любых бинарных компонентов драйверов;
Непринятие неизменяемых функциональных компонентов, но возможность включения нефункциональных, при условии разрешения копировать и распространять их в коммерческих и некоммерческих целях (например, CC BY-ND-карты к GPL-игре);
Недопустимость использования торговых марок, условия использования которых мешают свободному копированию и распространению всего дистрибутива или его части;
Соблюдение лицензионной чистоты документации, недопустимость документации, рекомендующей установку проприетарного ПО для решения определённых задач.
В настоящее время помимо Trisque в список полностью свободных дистрибутивов GNU/Linux включены следующие проекты:
Dragora - независимый дистрибутив, пропагандирующий идею максимального архитектурного упрощения;
Dynebolic - специализированный дистрибутив для обработки видео и аудио данных (более не развивается - последний релиз был 8 сентября 2011 года);
Guix - основан на пакетном менеджере Guix и системе инициализации GNU Shepherd (ранее известной как GNU dmd), написанными на языке Guile (одна из реализаций языка Scheme), который также используется и для определения параметров запуска сервисов.
Hyperbola - основан на стабилизированных срезах пакетной базы Arch Linux с переносом из Debian некоторых патчей для повышения стабильности и безопасности. Проект развивается в соответствии с принципом KISS (Keep It Simple Stupid) и нацелен на предоставление пользователям простого, легковесного, стабильного и безопасного окружения.
Parabola GNU/Linux - дистрибутив, основанный на наработках проекта Arch Linux;
PureOS - основан на пакетной базе Debian и разрабатывается компанией Purism, развивающей смартфон Librem 5 и выпускающей ноутбуки, поставляемые с данным дистрибутивом и прошивкой на базе CoreBoot;
libreCMC (libre Concurrent Machine Cluster), специализированный дистрибутив, рассчитанный на использование во встраиваемых устройствах, таких как беспроводные маршрутизаторы.
ProteanOS - обособленный дистрибутив, развивающийся в направлении достижения как можно более компактного размера;
Давид Амьель (David Amiel), министр бюджета, государственных счетов и гражданской администрации Франции, объявил о планах по переводу некоторых компьютеров в госучреждениях с Windows на Linux. Миграция осуществляется в рамках инициативы по обеспечению цифрового суверенитета и снижению зависимости от не европейских технологических компаний.
Амьель подчеркнул, что французское правительство больше не может мириться с тем, что не контролирует свои данные и цифровую инфраструктуру. Сроки перехода и внедряемый дистрибутив Linux пока не уточняются. Первым на Linux решено перевести рабочие станции в межминистерском управлении цифровизации (DINUM). Министерствам предписано до осени подготовить собственные планы снижения зависимости от не европейских технологий, охватывающие рабочие станции, инструменты совместной разработки, антивирусы, AI-системы, СУБД, платформы виртуализации и сетевое оборудование.
Решение о замене Windows принято спустя несколько месяцев после анонса перевода системы проведения видеоконференций с пакета Microsoft Teams на французский продукт Visio, основанный на открытой платформе Jitsi. До конца года также планируют заменить информационную систему здравоохранения на новую подконтрольную разработку. Кроме этого, объявлено о миграции 80 тысяч сотрудников отделений системы медицинского страхования на собственную платформу межведомственного документооборота.
В дополнение можно отметить развитие Linux-дистрибутива EU OS, нацеленного на использование в государственном секторе Евросоюза. Дистрибутив развивается энтузиастами, которые взаимодействуют с органами государственного управления ЕС и намерены получить статус проекта Европейской комиссии. Дистрибутив основан на Fedora Linux, формируется в виде атомарно обновляемого системного образа и поставляется со средой рабочего стола KDE. Среди других европейских дистрибутивов похожего назначения:
GendBuntu (редакция Ubuntu, применяемая в Национальной жандармерии Франции), Linux Plus 1 (внедрён в немецком регионе Шлезвиг-Гольштейн), LiMux (выпускался до 2019 года и применялся в Мюнхене), Linux Barcelona (сборка Ubuntu, применяемая в госучреждениях Барселоны).