Представлен Terraphim, приватный AI-ассистент и движок поиска по графам знаний, работающий целиком на устройстве пользователя. Проект написан на Rust и компилируется в WebAssembly: индексация, поиск и обход графа выполняются локально, без облака, без телеметрии и без отправки данных наружу. Код открыт под лицензией Apache 2.0. Разработка ведётся с 2023 года, последний год с привлечением AI.
Вместо нейросетевых векторов используются детерминистические графовые эмбеддинги и сопоставление шаблонов на базе алгоритма Ахо-Корасик по ролевым тезаурусам - каждое совпадение прослеживается до понятия в графе знаний и занимает меньше миллисекунды. Один запрос покрывает несколько источников: локальные файлы, Confluence, Jira, Discourse, почту и grepapp.
Для AI-агентов есть MCP-сервер (подключение локальных графов знаний к ассистентам), CLI terraphim-agent (поиск по сессиям Claude Code и Cursor, фиксация ошибок и извлечённых уроков), а также хуки до и после вызова инструментов. Отдельно доступен редактор Terraphim с предложением альтернативных формулировок на основе графа знаний.
Представлен выпуск дистрибутива OpenWrt 25.12.6, развиваемого для сетевых устройств, таких как маршрутизаторы, коммутаторы и точки доступа. OpenWrt поддерживает более 2200 устройств и предлагает систему сборки, упрощающую кросс-компиляцию и создание собственных сборок. Подобные сборки позволяют формировать готовые прошивки с желаемым набором предустановленных пакетов, оптимизированные под конкретные задачи. Готовые сборки опубликованы для 41 целевой платформы.
Настройки WPA3 изменены для соответствия рекомендациям, указанным в спецификации WPA3:
По умолчанию отключена поддержка шифра GCMP-256 и алгоритма управления ключами SAE-EXT-KEY в режимах sae (WPA3-Personal) и sae-mixed (WPA2/WPA3).
При активном режиме защиты кадров (PMF / 802.11w) включён по умолчанию механизм Beacon Protection, предназначенный для защиты от активных атак на беспроводную сеть, манипулирующих изменением кадров Beacon.
Добавлен новый режим совместимости с WPA3-Personal - sae-compat, позволяющий клиентам WPA2 продолжать использовать сеть WPA2, но клиентов с поддержкой RSN (Robust Security Network) перебрасывающий на WPA3.
Добавлена опция transition_disable для запрета отката клиентов на старые режимы безопасности в сети с WPA3.
В пакете wifi-scripts возобновлена поддержка 802.11ad (60 GHz) и налажена работа опции multicast_to_unicast.
В DHCP-клиент добавлена опция "sendclientid" для переопределения идентификатора клиента DHCPv4 и DHCPv6.
В web-интерфейсе LuCI предложена новая опциональная тема оформления
"luci-theme-footstrap". В тему "luci-mod-dashboard" добавлены интерактивные графики и возможность настройки расположения элементов. Добавлены новые приложения luci-app-librespeed и luci-app-weechat.
Обновлены версии ядра Linux 6.12.112 (было 6.12.94), OpenSSL 3.5.9,
Mbed TLS 3.6.7, wolfSSL 5.9.4, mac80211 6.18.55, wireless-regdb 2026.09.03, nilfs-utils 2.2.17, wireguard-tools 1.0.20260223, uhttpd, rpcd, umdns, odhcp6c и iwinfo.
Обновлены версии curl 8.22.0, OpenSSH 10.6p1, unbound 1.26.1,
BIND 9.20.29,
OpenVPN 2.7.7, strongSwan 6.0.7, HAProxy 3.2.21, expat 2.8.4, nghttp2
1.70.0,
libssh 0.12.2, c-ares 1.34.8, Tor 0.4.9.13, Knot DNS 3.5.7, PowerDNS 4.9.17,
PowerDNS Recursor 5.2.13, Exim 4.100.1, Python 3.13.15, Node.js 22.23.2,
xz 5.8.3 и rsync 3.5.1 с устранением уязвимостей.
Устранены удалённо эксплуатируемые уязвимости в сетевых сервисах, включённых по умолчанию:
uhttpd - переполнение буфера через манипуляцию с параметром в запросах "POST /ubus/call/", а также несколько DoS-уязвимостей и возможность вклинивания в чужие запросы.
16 уязвимстей в Mbed TLS (используется по умолчанию в uhttpd, hostapd и wpa_supplicant), среди которых удалённое переполнение буфера, эксплуатируемое в конфигурациях (D)TLS с набором шифров ECDHE-PSK.
hostapd и wpa_supplicant - повреждение памяти при обработке специально оформленных управляющих кадров (атака возможна без аутентификации) в сетях WiFi 7.
rpcd - две уязвимости, приводящие к повышению привилегий из-за проблем при обработке символических ссылок и
размещения токена привилегированного сеанса во временном каталоге.
cgi-io - обращение к памяти после освобождения при декодировании специально оформленных POST-запросов.
web-интерфейс LuCI: несколько уязвимостей, позволяющих непривилегированному пользователю выполнить код с правами root.
ead-client (Emergency Access Daemon client): переполнение буфера при обработке специально оформленных поддельных сообщений от сервера.
Несколько десятков уязвимостей в OpenSSL и wolfSSL.
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 7.3. Среди наиболее заметных изменений: механизм изоляции ФС на базе псевдо-ФС failfs и системного вызова fchroot(), поддержка создания вложенных планировщиков SCHED_EXT, BPF-обработчики запуска исполняемых файлов, альтернативные потоки данных в NTFS3, оптимизации производительности FUSE, Btrfs и Ext4, поддержка Apple Time Machine в ksmbd, удаление ФС EFS и FreeVxFS, режим прямого доступа к блочным устройствам, улучшение обработки нехватки видеопамяти, отслеживание обращений к памяти гостевой системы через userfaultfd, сжатие правил AppArmor, ограничение доступа к AF_ALG, поддержка чипов Apple M3 Pro, Max и Ultra.
В новую версию принято 20260 исправлений от 3171 разработчика, из которых 807 впервые отправили свои изменения в ядро. Размер патча - 63 МБ (изменения затронули 14923 файлов, добавлено 943849 строк кода,
удалено 297515 строк). В прошлом выпуске было 17833 исправлений от 2766 разработчиков, размер патча - 68 МБ. Около 44% всех представленных в 7.3 изменений связаны с драйверами устройств, примерно 12% изменений имеют отношение к обновлению кода, специфичного для аппаратных архитектур, 12% связано с сетевым стеком, 5% - с файловыми системами и 3% c внутренними подсистемами ядра.
Дисковая подсистема, ввод/вывод и файловые системы
Проведена оптимизация производительности ФС Btrfs. Для не SSD-накопителей удалена лишняя задержка, что привело к пятикратному повышению пропускной способности для нагрузок с активным использованием функции fsync, таких как запись логов. В fsync отключено определение пустот в файлах с большим числом экстентов и без пустот, что ускорило выполнение некоторых специфичных тестов в 5 раз.
При отслеживании некэшируемых буферов экстентов структура xarray заменена на локальный LRU-список, что привело к повышению производительности данных операций в 3 раза. Устранены провалы в производительности при использовании режима прямого ввода/вывода, вызванные регрессиями в прошлых выпусках ядра. Сокращены блокировки при упреждающем чтении экстентов, что снизило накладные расходы при обращении разных задач к перекрывающимся областям.
В Btrfs удалена поддержка первой версии кэша с информацией о свободном месте. ФС, созданные на старых системах, необходимо перевести на вторую версию кэша при помощи утилиты btrfstune, иначе они будут работать медленнее. Также удалена опция монтирования "usebackuproot", вместо которой следует использовать "rescue=usebackuproot".
В ФС Ext4 повышена производительность параллельных операций записи при прямом вводе/выводе (Direct I/O) и ускорено резервирование пустых областей через вызов fallocate(). Устранена регрессия, снижавшая производительность при буферизированной записи.
В ФС Ext4 режим монтирования "data=journal" переведён в разряд устаревших. Поддержку данной опции монтирования намерены прекратить в 2028 году. Опция "data=journal" включает режим полного журналирования, при котором в журнал записываются не только метаданные, но и сами данные, что обеспечивает высокую устойчивость в случае сбоев, но усложняет сопровождение кода, приводит к значительному снижению производительности по сравнению с режимами "data=ordered" и "data=writeback".
Удалена файловая система EFS, которая применялась в ранних версиях ОС IRIX, перестала использоваться около 30 лет назад и уже более 20 лет находится без сопровождения. Для тех кому необходим доступ разделам с EFS существуют утилиты, работающие в пользовательском пространстве.
Удалена файловая система FreeVxFS, реализующая формат ФС VERITAS VxFS, применявшийся в SCO UnixWare в 1990-е годы и давно не используемый на практике.
В механизме создания файловых систем в пространстве пользователя FUSE повышена производительность и сокращено потребление памяти при использовании системы асинхронного ввода/вывода io_uring. Ускорение достигнуто благодаря добавлению возможности передачи пулов буферов из пользовательского пространства в ядро и исключению лишней буферизации (zero-copy) при доступе FUSE-сервера к страницам памяти клиентского процесса или страничному кэшу.
Для блочных устройств реализован флаг RWF_DONTCACHE, похожий на режим прямого ввода/вывода
(Direct I/O), который можно использовать в функциях preadv2() и pwritev2() или в запросах на чтения и запись через io_uring для доступа к блочному устройству в обход страничного кэша. Например, флаг может применяться в СУБД для низкоуровневой работы с блочными устройствами.
В ФС overlayfs добавлена поддержка маппинга идентификаторов пользователей, применяемом для сопоставления файлов определённого пользователя на примонтированном чужом разделе с другим пользователем в текущей системе.
Улучшена поддержка монтирования нескольких ФС с одного блочного устройства.
В драйвере ntfs3 реализована начальная поддержка альтернативных потоков данных, разделяемых через двоеточие в имени файла. Для создания нового альтернативного потока можно использовать команду "touch file:поток", чтения - "cat file:поток", удаления - "rm file:поток", вывода доступных потоков - "cat file:query_streams".
В новой реализации NTFS (ntfsplus) в режиме только для чтения появилась поддержка технологии прозрачного сжатия файлов с использованием оверлейных фильтров WOF (Windows Оverlay Filter).
В NFS-сервер добавлена поддержка операции CB_NOTIFY, позволяющей клиенту кэшировать метаданные директорий на своей стороне, получая уведомления об изменениях от сервера.
В ФС F2FS добавлена поддержка динамического (без отмонтирования ФС) удаления разделов из общего пула с автоматическим переносом данных на другие разделы и возвращения обратно (например, можно временно изъять накопитель для других нужд).
В XFS добавлена поддержка флага FALLOC_FL_WRITE_ZEROES в системном вызове fallocate(), позволяющего заполнить нулями указанный диапазон в файле, используя поддерживаемую некоторыми SSD-накопителями команду WRITE_ZERO, выполняющую обнуление без операций ввода/вывода.
Память и системные сервисы
Улучшена обработка нехватки видеопамяти. В ситуации исчерпания свободной видеопамяти ядро теперь пытается вытеснить из видеопамяти в системную память (GTT) буферы приложений, не имеющих гарантированной квоты памяти (dmem cgroup), а не сразу отказывать в выделении видеопамяти. Такой подход гарантирует выделение ресурсов приложению, которому система зарезервировала определённый объем видеопамяти, даже если память уже выделена другим приложениям. Ранее, если приложению без квот уже была выделена видеопамять, то в ситуации нехватки видеопамяти приложение с гарантированными квотами не могло получить её, и вместо видеопамяти через подсистему TTM (Translation Table Maps) приложению выделялась более медленная системная оперативная память, адресуемая из GPU (GTT).
Поддержка dmem cgroup реализована для драйверов nouveau, xe и amdgpu.
В механизме SCHED_EXT, позволяющем использовать BPF для создания планировщиков CPU, завершена работа над возможностью создания вложенных планировщиков (sub-scheduler), при помощи которых для каждого cgroup можно задействовать собственный планировщик задач.
В планировщик задач внесены улучшения, связанные с обработкой cgroup и решением проблем с распределением весов, из-за которых возникали дополнительные накладные расходы и задержки. Предложено несколько методов распределения весов для cgroup - 'up', 'max', 'concur' и 'tasks', выставляемых через параметр cgroup_mode. Задействована единая очередь выполнения (runqueue) для планирования задач внутри cgroup. Сокращены задержки при планировании задач, которым выделяются короткие кванты процессорного времени, за счёт
возможности при необходимости отменять, обновлять или минимизировать время выполнения задач, защищённых от вытеснения.
В механизме binfmt_misc (/proc/sys/fs/binfmt_misc) реализована
возможность подключения BPF-обработчиков для добавления поддержки новых форматов исполняемых файлов. Изменение позволяет программно в момент каждого запуска анализировать тип исполняемого файла и выбирать для него интерпретатор или динамический загрузчик без хаков типа использования утилиты patchelf и скриптовых обвязок. Например, в BPF-программе можно определять исполняемые файлы для иных архитектур или платформ и запускать соответствующие эмуляторы или Wine, а также упростить организацию запуска исполняемых файлов в пакетах, установленных в разные каталоги в системах с пакетным менеджером Nix.
Продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра (поддержка Rust не активна по умолчанию, и не приводит ко включению Rust в число обязательных сборочных зависимостей к ядру). Появилась возможность использования Rust для архитектуры PowerPC. Реализованы: модуль для целочисленных преобразований без потерь, режим обфусцированного логгирования значений указателей для предотвращения утечки сведений об адресном пространстве, обвязка над функцией synchronize_rcu(), барьеры памяти, модуль interrupt для включения/отключения прерываний, типы для ввода/вывода, обвязки над fwctl, механизм SRCU (sleepable read-copy-update), обвязки над gem shmem,
spinlock-блокировки SpinLockIrq, не допускающие прерывания в критических секциях.
Добавлен sysctl-параметр syscall_user_dispatch для управления включением режима диспетчеризации системных вызовов в пользовательском пространстве, позволяющий одному процессу перехватывать системные вызовы другого процесса (применяется в Wine для эмуляции системных вызовов Windows).
В BPF добавлена функция bpf_sock_read_xattr(), при помощи которой BPF-программы могут читать выставляемые пользователем расширенные атрибуты
(user.*) из inode сокетов. В BPF-приложениях появилась возможность определения глобальных переменных, привязанных к CPU. В верификаторе BPF-программ предоставлена дополнительная информация о выявленных ошибках, упрощающая определение причин проблем.
В механизмах трассировки kprobes, uprobes и fprobes реализована поддержка приведения типов, используя данные BTF (BPF Type Format) с информацией для проверки типов в псевдокоде BPF, а также улучшено извлечение сведений о переменных.
В подсистему DAMON (Data Access MONitor), позволяющую отслеживать доступ процесса к данным в оперативной памяти (например, можно узнать к каким областям памяти обращался процесс, а какие области памяти остались невостребованными), добавлена возможность мониторинга изменения атрибутов данных (анонимная память, отображённые в память файлы, доступ только для чтения, отсутствие обращений к памяти и т.п.).
В механизме KHO (Kexec HandOver), применяемом для запуска нового ядра из старого без потери состояния системы, обеспечен учёт выделения больших страниц памяти (huge pages) во время загрузки. Подобные страницы памяти теперь маркируются и сохраняются после запуска нового ядра.
Низкоуровневый код системы подкачки (swap) переведён на новую низкоуровневую структуру данных swap_ops, которая упростила сопровождение кода и реализовала абстракции, необходимые для расширения функциональности в будущем.
Добавлены ioctl-команды ALLOCINFO_IOC_CONTENT_ID, ALLOCINFO_IOC_GET_AT и ALLOCINFO_IOC_GET_NEXT, позволяющие выборочно передавать в пространство пользователя данные профилирования выделения памяти. По сравнению с ранее доступным интерфейсом /proc/allocinfo, предложенные ioctl-вызовы позволяют до 20 раз повысить производительность запросов профилирования за счёт фильтрации лишних данных.
Виртуализация и безопасность
Предложен новый механизм изоляции, блокирующий доступ к содержимому файловых систем, за исключением ресурсов, явно переданных в sandbox-окружение через файловые дескрипторы. Механизм реализован при помощи псевдо-ФС failfs и системного вызова fchroot.
Псевдо-ФС failfs напоминает ФС nullfs, но в отличие от последней реализует принцип "ничего не поддерживается" вместо "ничего не хранится". Подобное свойство не позволяет монтировать что-либо поверх failfs, клонировать ФС и отслеживать состояние через statmount(), listmount(), /proc/<pid>/mountinfo и /proc/filesystems. Если корневой или рабочий каталог процесса находится в failfs, то блокируются любые попытки навигации по ФС c использованием абсолютных файловых путей, символических ссылок и относительных путей, зависящих от текущего рабочего каталога. Процессу оставляется только возможность обращения к определённому каталогу по файловым дескрипторам, открытым до изоляции.
Для перехода в новый режим изоляции добавлен системный вызов fchroot, похожий на системный вызов chroot, но работающий на уровне файловых дескрипторов. В системные вызовы fchdir добавлен флаг FD_FAILFS_ROOT для перемещения рабочего каталога процесса в ФС failfs.
Аналогичный флаг доступен в системном вызове fchroot.
Добавлена возможность отслеживания обращений к памяти гостевой системы при помощи механизма userfaultfd, позволяющего создавать обработчики обращений к невыделенным или защищённым страницам памяти в пространстве пользователя. На практике, предложенная возможность позволяет гипервизору определять страницы памяти, к которым в виртуальной машине не было обращений, для их вытеснения в более медленную память или во внешнее хранилище. Для отслеживания нарушений выставленного запрета чтения и записи в отслеживаемой области памяти добавлен флаг UFFDIO_REGISTER_MODE_RWP, который может использоваться как более высокопроизводительный аналог применения mprotect(PROT_NONE) совместно с обработчиком сигнала, генерируемого при обращении к памяти, для которой выставлен запрет на чтение и запись (в случае userfaultfd генерируется исключение, обрабатываемое в пространстве пользователя). Изменение подготовлено при помощи AI ("Assisted-by: Claude:claude-opus-4-6").
Усилено разделение между потоками ядра (kthread) и init-процессом (PID 1). Ранее в потоках ядра и в PID 1 совместно использовалось общее состояния файловой системы,
что позволяло через вызов pivot_root() переопределить состояние ФС для всех потоков ядра. В новой версии в PID 1 задействована полностью отдельная структура fs_struct, а потоки ядра изолированы в отдельной точке монтирования с nullfs.
Во встроенную криптографическую библиотеку (libcrypto) добавлена поддержка режимов шифрования AES - ECB, CBC, CBC-CTS, CTR, XCTR, XTS, GCM и CCM.
В системе мандатного управления доступом AppArmor реализована возможность загрузки сжатых наборов правил и добавлен режим аудита.
Добавлен sysctl-параметр af_alg_restrict, управляющий включением доступа к криптографическому API AF_ALG из пространства пользователя. AF_ALG позволяет задействовать аппаратные ускорители для криптографических вычислений в Crypto API ядра, но применяется в достаточно специфичных ситуациях и не всегда даёт прирост производительности по сравнению с реализацией ускорения в пространстве пользователя. При этом в связанных с AF_ALG обработчиках выявлена серия уязвимостей, таких как Copy Fail, позволяющих изменить данные в страничном кэше. Для снижения поверхности атаки по умолчанию доступ к AF_ALG частично ограничен. Рассматривается возможность удаления AF_ALG в одном из будущих выпусков.
Ужесточена верификация BPF-программ, заверенных цифровой подписью. Добавлена проверка целостности метаданных BPF-программы перед её загрузкой.
В системный вызов landlock_restrict_self(), применяемый для активации блокировок Landlock, добавлен флаг
LANDLOCK_RESTRICT_SELF_NO_NEW_PRIVS, запрещающий текущему процессу получение любых новых привилегий. Механизм Landlock позволяет непривилегированным программам сбрасывать ненужные для работы привилегии, добровольно ограничивая свой дальнейший доступ к системе в целях повышения безопасности, например, для защиты в случае попыток эксплуатации уязвимостей в программе.
В драйвер VirtIO-GPU, обеспечивающий работу виртуального GPU, добавлена поддержка спящего режима S4 (hibernation).
Сетевая подсистема
В ksmbd, встроенный в ядро сервер для протокола SMB, добавлена поддержка расширений Apple Time Machine для хранения резервных копий, создаваемых в macOS через данное приложение. Реализован механизм изоляции последовательностей команд SMB в привязке к MessageId для блокирования атак через отправку недействительных или дублированных запросов. Добавлена поддержка отправки повторных запросов по протоколу SMB3 без нарушения состояния сеанса, если предыдущий запрос был потерян. В SMB3 реализована возможность шифрования на уровне отдельных общих хранилищ (share). Добавлена поддержка шифрования канала связи SMB Direct, использующего технологию RDMA (Remote Direct Memory Access).
Реализована возможность использования TCP-пакетов c расширением BIG TCP, позволяющим увеличить максимальный размер TCP-пакета до 4ГБ, в UDP-туннелях на базе протоколов VXLAN и GENEVE.
Добавлена поддержка пробрса протокола MCTP (Management Component Transport Protocol) поверх USB (MCTP-over-USB 1.1).
Предоставлена возможность отключения (unregistration) сетевых устройств (netkit, veth, vxcan, bareudp, geneve, ipvlan, macvlan и т.п.) для выбранных пространств имён.
Для Bluetooth 6.2+ реализована поддержка механизма SCI (Shorter Connection Interval) для снижения задержек при передаче данных в режиме Bluetooth LE (Low Energy).
В API nl80211 добавлен унифицированный механизм (NL80211_CMD_PROBE_PEER) для проверки подключённых пиров, работающий как в беспроводных точках доступа, так и на стороне клиента.
Оборудование
Объявлены устаревшими и намечены для удаления в ядре 7.5 старые ARM-платформы, которые почти не используются и мешают сопровождению актуальных подсистем. К удалению намечено около 55 тысяч строк кода, связанного с поддержкой платформ sa1100, omap24xx, i.MX31, samv7, lpc18xx, riscpc, axxia, footbridge, старых плат pxa, orion, dove и mv78xx0, чипов без блока управления памятью (MMU) и микроконтроллеров stm32f4/f7/h7.
Добавлена начальная поддержка чипов Apple M3 Pro, Max и Ultra. Реализовано управление состоянием энергопотребления для SoC Apple.
В подсистему DRM (Direct Rendering Manager) добавлено свойство "color format", позволяющее пользователю переключить формат представления цвета для устройства вывода. Свойство реализовано для драйверов GPU i915 (HDMI, DP), amdgpu (HDMI, DP) и rockchip (HDMI). Для тестирования можно использовать команду вида "modetest -s 115:1920x1080-60@NV12 -w 115:'color format':4", в которой 115 - идентификатор коннектора, а '4' номер формата YUV420.
В драйвер amdgpu добавлена поддержка модификаторов DRM для GPU AMD серий GFX6-8 (Southern Islands, Sea Islands и Volcanic Islands). Реализована начальная поддержка DCN 6.0.0 (Display Core Next). Проведена чистка устаревшего кода.
Включена поддержка CACP (Content Adaptive Contrast and Power), позволяющая снизить энергопотребление OLED-панелей. Для дисплейных движков на архитектуре DCN4 включена поддержка механизма IPS (Idle Power State) для снижения энергопотребления во время неактивности. Добавлена поддержка видеокарт AMD Barco.
Продолжена работа над drm-драйвером (Direct Rendering Manager) Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake. Добавлены новые идентификаторы поддерживаемых устройств. В configfs реализован атрибут 'enable_multi_queue' для отключения одновременного использования нескольких очередей передачи команд. Улучшена поддержка перехода в спящий режим.
Продолжена интеграция компонентов драйвера Nova для GPU NVIDIA, оснащённых GSP-прошивками, используемыми начиная с серии NVIDIA GeForce RTX 2000 на базе микроархитектуры Turing. Драйвер написан на языке Rust. В новой версии осуществлён переход на новые образы прошивок TLV, вместо старых вариантов, используемых в драйвере Nouveau. Добавлена поддержка
запуска прошивки для чипа GSP (GPU System Processor) с включением vGPU. Добавлен API для получения информации о размере видеопамяти.
В драйвер Tyr, написанный на языке Rust и обеспечивающий работу с GPU ARM Mali, добавлена возможность загрузки прошивок в формате Mali CSF, активации виртуальной памяти GPU и запуска MCU.
В драйвер msm добавлена поддержка GPU Adreno Shikra (A704) и Eliza (722).
Добавлена поддержка звуковых устройств и ASoC: Pioneer DJ DJM-S11,
AW88399 (Lenovo Legion Pro), AW88399 (Lenovo Legion), Lisuan, ALC235, RME HDSPe AIO, RT766/RT767 SDCA, Maili, Hawi, CS35L62 (SoundWire), RT766/RT767 VA1.
Добавлена поддержка Steam Controller (модель 2026 года); мышей Logitech G502 X Plus и G502 X Lightspeed,; клавиатур Endorfy Thock TKL, Zenbook A16; гарнитур Nova 5X, Nova 7 и Arctis 7; игрового руля Turtle Beach VelocityOne Race; геймпада MSI Claw.
Улучшена поддержка звука на устройствах ASUS VivoBook M515DA/X515DAP,
LG gram 16 (16Z90TR), Minisforum AI X1 Pro, HP Pavilion 15-eh2xxx, HP Laptop 15-dy0xxx и HP Spectre x360 16-aa0xxx, HP EliteBook 6 G1, HP OmniBook X Flip 14, Lenovo Yoga Pro 7, Huawei Matebook,
ThinkPad X1 Carbon 6th, HP ProBook 440 G5, Acer Aspire A515-57.
Добавлена поддержка смартфонов, планшетов и ноутбуков: Motorola Edge 30, Motorola Moto G2, Xiaomi 12 Lite 5G, Microsoft Surface Pro, Honor MagicBook art 1412in, Sony Xperia M2, Vicharak Axon, Axon Mini и Vaaman2, Asus Zenbook A16, Lenovo Thinkedge se70.
Добавлена поддержка ARM-плат и SoC Samsung Exynos 1580 (используется в флагманских смартфонах с 2024 года), Orange Pi 5 pro, Sophgo SG2000 (гибрид Arm/RISC-V), BeagleBadge, Qualcomm "Shikra" и "Altera" (Cortex-A78C), Agilex72 (Cortex-A720), Alientek ATK-DLRV1126, Variscite SoC DART-MX8M-PLUS, DART-MX8M-MINI, VAR-SOM-MX8QM и платы Sonata/Symphony на их основе, 9Tripod X3568 v4, Youyeetoo YY3588, milk-v duo, ArmSoM CM5, Freescale Verdin iMX8M Mini, Anbernic rg vita-pro, Embedfire lubancat 4, Vicharak Vaaman, LincStation E1, HINLINK H28K.
Одновременно латиноамериканский Фонд свободного ПО сформировал
вариант полностью свободного ядра 7.3 - Linux-libre 7.3-gnu, очищенного от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В выпуске 7.3 проведена чистка от блобов новых драйверов для GPU Mali Tyr, Morse Micro mm81x wi-fi, NXP wi-fi, и сетевых карт на чипах Realtek. Обновлён код чистки в драйверах nova-core, amdgpu, adreno, tegra, iris, rtw89 и mt76 wifi, Qualcomm Q6V5 PAS, qla2xxx scsi и звуковых кодеках aw88399. Выполнена чистка имён blob-ов в dts-файлах (devicetree) для ARM-чипов Qualcomm.
Состоялся выпуск Tewi 3.0.0, консольного приложения с текстовым интерфейсом (TUI) для управления BitTorrent-клиентами. Программа позволяет подключаться к демонам Transmission, qBittorrent, Deluge и rTorrent, просматривать и управлять списком торрентов, добавлять новые закачки, выполнять поиск по популярным трекерам. Поддерживаются различные режимы отображения (карточки, компактный, однострочный), просмотр детальной информации о торрентах (файлы, трекеры, пиры), управление категориями и метками,
переключение альтернативных лимитов скорости. Интерфейс построен на базе библиотеки Textual. Код написан на Python и распространяется под лицензией GPLv3+.
Добавлена поддержка rTorrent (0.9.7 и новее): подключение напрямую через SCGI или через XML-RPC поверх HTTP (при указании "--path"). Поддерживаются почти все возможности остальных клиентов, кроме переключения альтернативных лимитов скорости. Категории хранятся в формате ruTorrent, поэтому совместимы с ним.
Список торрентов переписан на Textual Line API. Отрисовываются только видимые строки, поэтому загрузка, обновление и прокрутка заметно ускорены.
Добавлена постраничная и полустраничная навигация по списку торрентов ("Ctrl+F"/"Ctrl+B", "Ctrl+D"/"Ctrl+U").
Добавлена фильтрация торрентов по имени ("F") и новые фильтры по статусу.
Появилась возможность добавить торрент по его хешу.
Добавлен множественный выбор файлов торрента для групповой смены приоритета.
Добавлено открытие файлов из детальной информации о торренте по нажатию "Enter".
Добавлено отображение общих лимитов скорости клиента (в дополнение к
альтернативным).
В заголовок добавлен статус подключения к клиенту (показывается потеря связи с демоном).
Добавлен выбор тем оформления Textual: dracula, monokai, nord и др. ("T", опция "--theme", полный список: "--list-themes").
В файле конфигурации разрешено указание переменных окружения ("${VAR_NAME}"), например, для передачи хранимых отдельно паролей и API-ключей.
Реализована генерация скриптов автодополнения для bash, zsh и tcsh
("--print-completion"). В пакет PyPI включено готовое автодополнение для Bash.
Добавлена поддержка Prowlarr с возможностью поиска по всем индексаторам сразу или выбора отдельных ("--prowlarr-multi"). Индексаторы можно указывать в пресетах поиска.
Добавлена поддержка Bitmagnet, self-hosted BitTorrent-индексатора и DHT-краулера. При поиске в деталях отображаются метаданные контента (тип, название, эпизоды,
разрешение, кодек и источник видео).
Добавлены пресеты поиска (именованные комбинации поисковых провайдеров и категорий).
Добавлена сортировка результатов поиска по различным атрибутам ("s").
Добавлен компактный режим отображения результатов поиска с минимумом столбцов ("V").
Обеспечено запоминание последних выбранных при поиске индексаторов и категорий ("W").
Развиваемый проектом ReactOS драйвер файловой системы NTFS достиг уровня, позволяющего устанавливать и использовать ReactOS на разделах NTFS. Помимо этого добавлена возможность форматирования разделов в NTFS с обеспечением совместимости с Windows. Нереализованными остаются кэширование, журналирование и механизмы безопасности NTFS, что может негативно влиять на производительность и ограничивает возможности восстановления ФС после сбоев.
Сопровождающий пакет (ebuild) Chromium в Gentoo Linux объявил о скором удалении пакета из репозитория из-за слишком больших трудозатрат на сопровождение. Упоминается, что сопровождающий не имеет возможности продолжать поддерживать пакет на должном уровне после сокращения цикла публикации релизов Chrome. Если в ближайшие дни не найдётся доброволец, готовый взять на себя сопровождение Chromium в Gentoo, то 24 октября пакет www-client/chromium перестанет быть доступен для установки.
Новые корректирующие версии Chromium последнее время появляются каждую неделю и содержат исправление сотен уязвимостей. Помимо участившихся релизов, сопровождение усложняют изменения в инструментарии upstream-проектов и конфликты, связанные, с одной стороны, со стремлением предоставить пользователям должное качество, избегая по-возможности встраивания зависимостей в пакет, и, с другой стороны, с необходимостью оперативной публикации обновлений с исправлением уязвимостей. Компиляция Chromium занимает 15-16 часов на ноутбуке и около 6 часов на мощном ПК, при том, что перед публикацией пакета требуется проверить все варианты сборки с разным USE-флагами.
Chromium использует большое число встроенных зависимостей (например, ffmpeg, harfbuzz, zstd), но особенно усложнило сопровождение добавление в зависимости Rust и Go. В случае с Rust проблемы связаны с использованием экспериментальных возможностей, совместимость с которыми может нарушаться с новых релизах, а Go с тем, что инструментарий требует доступа к сети, который запрещён для сборочных окружений правилами Gentoo. Помимо этого, отмечены сбои в системе непрерывной интеграции Google, которые временами приводят к публикации неполных архивов с кодом.
По мнению сопровождающего, для качественной поддержки пакета требуется команда как минимум из трёх человек со знаниями языков C, C++, Go, JavaScript и Rust, а также знакомых со специфичными инструментариями Google. У одного сопровождающего на поддержание Chromium уходит более 6 часов в неделю, т.е. почти целый рабочий день из своего свободного времени, и это не считая ситуаций, в которых приходится диагностировать и исправлять ошибки, а также приводить состояние сборки к соответствию требованиям Gentoo.
Последней каплей, после которой сопровождающий решил прекратить поддержание пакета, стало обесценивание его труда при обсуждении слишком медленной публикации обновлений Chromium в Gentoo (в Gentoo сейчас поставляется версия 151 при актуальном выпуске 155). Один из участников дискуссии предложил использовать готовый ebuild-сценарий из стороннего репозитория Bentoo, поддержание которого автоматизировано. Сопровождающий пояснил, что простое копирование недопустимо без аудита изменений и полного тестирования всех вариантов сборки с разными USE-флагами, иначе невозможно гарантировать работоспособность пакета у всех пользователей. На что получил ответ, что всё это чушь (ridiculous).
В случае удаления пакета www-client/chromium, пользователи могут переключится на использование пакета www-client/google-chrome, в котором упакованы поставляемые Google бинарные сборки Chrome, или использовать сторонние сборки Chromium в формате Flatpak.
Группа исследователей из компании Anthropic объявила об успешном определении происхождения исходных seed-параметров, задающих форму эллиптических кривых ECDSA P-192, P-224, P-256, P-384 и P-521, стандартизированных Национальным институтом стандартов и технологий США (NIST). Воссозданный алгоритм генерации seed-параметров подтверждает надёжность ECDSA и опровергает популярную конспирологическую теорию о том, что исходные параметры для стандартизированных эллиптических кривых, изначально разработанных в АНБ, были специально подобраны для оставления слабых мест, компрометирующих алгоритмы цифровой подписи ECDSA.
Появлению подобной теории заговора способствовала непрозрачность процесса выбора seed-параметров на фоне выявление потенциального бэкдора в генераторе псевдослучайных чисел Dual_EC_DRBG, входившем в стандарт NIST. Информация о том, как были сгенерированы параметры для инициализации стандартизированных в NIST эллиптических кривых, не раскрывалась. Предполагалось, что параметры были созданы в 1997 году на основе хэшей от фраз, экспромтом придуманных Джерри Солинасом (Jerry Solinas), но затем забытых.
В ходе проведённого в Anthropic исследования AI-модель Claude определила, что seed-параметры были созданы с использованием псевдослучайных чисел, полученных при помощи входящей в стандартную Си-библиотеку функции lrand48, инициализированной значениями текущего эпохального времени. Наводкой на возможность использования случайных чисел, полученных через функцию lrand48, послужили характерные для её использования шаблоны, такие как возврат только 31 старшего бита из 48-битного внутреннего состояния генератора псевдослучайных чисел.
Для восстановления состояния генератора псевдослучайных чисел был применён алгоритм редукции базиса, после чего с имеющимися seed-параметрами перебором сопоставлялись SHA-1 хэши от получаемых через lrand48 наборов чисел необходимой длины. Попытки повторялись c переинициализацией генератора через функцию srand48() для моментов времени в 1997-1998 годах, в которых происходила разработка ECDSA. При этом оказалось, что не все подходящие для надёжных эллиптических кривых значения принимались создателями ECDSA, некоторые значения пропускались, но подобные единичные пропуски трактуются не как злонамеренные действия, а как отсутствие точных сведений о критериях выбора.
Для шести вариантов эллиптических кривых ECDSA также удалось определить происхождение базовых точек, которые оказались сгенерированы с помощью генератора псевдослучайных чисел из библиотеки FreeLIP с использованием простых значений инициализации, таких как 20000 для P-192 и 20420 для prime239v1.
За определение происхождения seed-параметров исследователям из Anthropic присуждена учреждённая три года назад премия в $36864, которую команда исследователей пожертвовала некоммерческой организации ISRG, развивающей проект Let’s Encrypt. Учредивший премию криптограф Филиппо Валсорда (Filippo Valsorda) заявил, что теперь лично ставит кривые ECDSA выше Curve25519, Ed25519 и X25519, и будет рекомендовать их в первую очередь.
Опубликован экспериментальный выпуск открытой реализации Win32 API - Wine 11.20. С момента выпуска 11.19 был закрыто 24 отчёта об ошибках и внесено 341 изменение.
Для архитектуры ARM64EC (ARM64 Emulation Compatible) реализована поддержка отладочного режима "WINEDEBUG=+relay", позволяющего отслеживать аргументы и возвращаемые значения вызываемых функций. Архитектура ARM64EC применяется для упрощения портирования на системы ARM64 приложений, изначально написанных для систем x86_64, и позволяет выполнять в окружении ARM64 отдельные модули с кодом x86_64 при помощи эмулятора.
Улучшена проверка данных в формате XML.
Реализация поддержки CDROM перемещена из ntdll в Mount Manager.
Закрыты отчёты об ошибках, связанные с работой приложений: MS Office 2013, Unigine Heaven 2.0, Toad for SQL Server 5.7, Intuit QuickBooks 2008-2010, QuickBooks SS 2008 R1, SumatraPDF 3.1.2, Microsoft Core XML Services 6.0, Neko Project 21, FL Studio,
cmd.exe, Medicalc4, UE4 ElectraPlayer, MusicBee, OneDrive.
Закрыты отчёты об ошибках, связанные с работой игр: Star Wolves 3, UFO: Aftershock, UFO: Afterlight, Pure Pinball,
Imperium Great Battles of Rome, Incoming, Battlefield 1942.
Параллельно сформирован выпуск проекта Wine Staging 11.20, предоставляющего расширенные сборки Wine, включающие не полностью готовые или рискованные патчи, пока непригодные для принятия в основную ветку Wine. По сравнению с Wine в Wine Staging предоставляется 279 дополнительных патчей. В новом выпуске Wine Staging осуществлена синхронизация с кодовой базой Wine 11.20 и обновлён код vkd3d. В основной состав Wine перенесены патчи, улучшающие в wininet обработку некорректных параметров в APPINFO_QueryOption и HTTPREQ_QueryOption.
Выпущена новая версия ESP-KVM 0.65.0, открытой прошивки, превращающей плату на микроконтроллере ESP32-P4 в IP-KVM с доступом к экрану, клавиатуре и мыши удалённого компьютера через браузер. Устройство подключается перед HDMI целевой машины и прикидывается для неё USB-клавиатурой и мышью, а картинку и управление отдаёт в браузер. На целевую машину ничего ставить не надо, работает хоть в BIOS. Код написан на языке Си и распространяется под лицензией Apache 2.0.
Одновременно опубликован отдельный экспериментальный проект - ESP-KVM terminal, развивающий прошивку для планшета M5Stack Tab5, в котором используется тот же SoC ESP32-P4, что и в KVM. Терминал подключается к ESP-KVM по сети как обычный зритель, только вместо вкладки браузера у него пятидюймовый экран 1280x720.
Кадры MJPEG разжимает аппаратный декодер JPEG, а блок PPA масштабирует их и поворачивает сразу в буфер дисплея. Выходит до 20 кадров в секунду, если KVM успевает отдавать их по WiFi. В ESP32-P4 нет аппаратного декодера H.264, поэтому на KVM нужно включить MJPEG. KVM в сети терминал находит сам. Для управления указателем используется сенсорный экран, а вводить текст можно на клавиатуре для Tab5 или на обычной USB-клавиатуре.
Выпуск ESP-KVM 0.65.0 почти целиком сосредоточен оптимизации работы через медленные каналы. По WiFi устройство слало кадры быстрее, чем Tab5 успевал их принимать. Очередь росла, и экран отставал на пару секунд. Теперь устройство отображения подтверждает каждый кадр, а отправляющее устройство держит в пути не больше двух кадров. Без подобной синхронизации Tab5 в той же сети показывал около 3 кадров в секунду, а с подтверждениями - 8-9. ESP-KVM сначала сообщает, что понимает подтверждения, и только тогда клиент их шлёт.
Через Tailscale видео шло ещё медленнее: 1-3 кадра в секунду между двумя ESP32-P4 в одной сети WiFi. Весь туннель идёт через один UDP-сокет, а его очередь приёма вмещала 6 пакетов, когда пачка видео - около 45. Отправка, которую обрывал таймаут, оставляла в соединении половину кадра WebSocket, и зритель терял разметку потока. Алгоритм Нейгла придерживал каждое короткое сообщение на 200-450 мс, из-за чего пинг между терминалом и KVM после TCP_NODELAY упал с 440 до 15 мс. После перезапуска одной стороны узлы не могли снова договориться, потому что новая попытка рукопожатия затирала предыдущую раньше, чем на неё приходил ответ. При каждом переходе между прямым путём и ретранслятором DERP рукопожатие начиналось заново, примерно раз в 15 секунд, хотя ключам сессии путь безразличен. После правок получилось 11-14 fps при 720p, почти как в локальной сети.
Коротко об изменениях в ESP-KVM после прошлой новости о выпуске ESP-KVM 0.51.0:
0.52-0.54: Прошивка заработала на M5Stack Unit PoE-P4 с модулем Add-on Display In на мосте LT6911D: питание по PoE, паять ничего не нужно. В консоли появилась экранная клавиатура, заработали карты microSD с exFAT и разметкой GPT. Alt+Tab и клавиша Windows теперь уходят на целевую машину, а не в браузер.
0.55: Виртуальный CD-ROM отвечает на команды настоящего привода (READ TOC, GET CONFIGURATION и другие). UEFI и Linux грузились и без них, но Windows и macOS спрашивают их первыми. С карты exFAT работают образы больше 4 ГБ, так что влезает полный установщик на DVD.
0.56-0.57: Обрывы по WiFi шли из-за того, что сопроцессору не хватало внутренней памяти P4 под буферы. Добавились вход с кодом TOTP и часы DS3231. Уведомления ждут, пока появится сеть. Обновления устройство проверяет, только если пользователь разрешил.
0.58-0.59: На платах с TC358743 работает HDMI-CEC: кнопки пульта, ожидание, пробуждение. Steam Deck, правда, просыпаться по CEC отказывается - SteamOS эту команду игнорирует. Устройство умеет притворяться геймпадом для Switch и Xbox 360 и переходит с Ethernet на WiFi, если выдернуть кабель.
0.60: Последовательная консоль целевой машины открывается в браузере - для NAS, роутеров и серверов без экрана. Журналы ядра можно слать на устройство по сети (netconsole, syslog), при панике оно пришлёт уведомление. Образ по ссылке устройство скачивает прямо на карту, netboot.xyz - в один клик.
0.61-0.62: Добавлены модули M5Stack Unit OLED, Unit Glass2, Unit RTC и кнопка на корпусе. Сессии переживают перезагрузку. Задержка H.264 в браузере упала на 170 мс. B-кадров кодировщик не пишет, но в потоке об этом не говорилось, и декодер Chrome придерживал около четырёх кадров. Нажатия доходят до цели до 64 мс быстрее. Стеки задач занимали 220 КБ внутренней памяти и в основном пустовали, после их урезания свободной памяти стало вдвое больше.
0.63: Устройство теперь может получать сертификат Let's Encrypt для своего имени в tailnet. Запись DNS публикует сервер управления Tailscale, поэтому не нужны ни домен, ни токен DNS, ни открытый порт. Все операции с протоколом ACME выполняются на самом P4.
0.64: Режим геймпада оригинального Xbox (XID).
Прошивка собирается для 15 плат на ESP32-P4. Чтобы было проще выбрать, на сайте появилось сравнение плат ESP32-P4 для IP-KVM: ревизия чипа, память, размер платы в масштабе, Ethernet, PoE и Wi-Fi, подходящий адаптер HDMI и замеренная частота кадров. Отдельно есть сравнение плат захвата HDMI - мост, шлейфы, проход HDMI на монитор, CEC и звук.
Андреас Румпф (Andreas Rumpf, Araq), автор языка программирования Nim, опубликовал серию отчётов о прогрессе разработки компилятора Nimony, создаваемого как основа для будущего релиза Nim 3.0. На данный момент уже доступен восьмой отчёт. Ключевое достижение последнего времени - переход к самокомпиляции: весь стек инструментов, включая фронтенд, прослойку (middle-end), оптимизатор и бэкенд, теперь может быть собран самим Nimony. Дополнительно реализованы JavaScript-бэкенд, поддержка всех четырёх актуальных режимов управления памятью и работа на платформе FreeBSD. Код проекта написан на Nim и распространяется под лицензией MIT.
Nimony - новая реализация языка Nim, практически не использующая кодовую базу существующего компилятора: с нуля написаны семантический анализ, обобщённые процедуры, разворачивание шаблонов, управление памятью и генерация кода. Цели проекта - инкрементальная перекомпиляция, полностью параллельные сборки, отказ от обязательных предварительных объявлений процедур и типов, типобезопасные дженерики и единая модель конкурентности на основе продолжений (continuations). Этапы компиляции обмениваются данными через текстовый формат NIF, а вместо исполнения макросов в виртуальной машине применяются плагины, компилируемые в нативные исполняемые файлы.
Основные изменения за прошедшие месяцы:
Самокомпиляция и бэкенды
Бэкенд nativenif портирован и собирается при помощи Nimony. Вся цепочка инструментов, от фронтенда до генератора нативного кода, компилируется самим Nimony.
Архитектура перестроена вокруг промежуточного представления NJ ("No Jumps"), не содержащего операции break, continue и goto. NJ развивается для использования во фронтендах Nimony и Nim 2.x (текущей версии) и обеспечивает генерацию кода для C/C++, JavaScript и нативных бэкендов x86-64 и ARM64.
NIFC переименован в Leng для устранения постоянной путаницы между NIF и NIFC.
Обеспечена сборка DLL, позволяющая разрабатывать части программ на Nimony и подключать их к проектам на Nim 2.x,
Добавлена поддержка FreeBSD.
Управление памятью
В дополнение к имевшимся режимам управления памятью ARC и atomicArc портированы ORC и YRC. Доступна возможность подключения собственных реализаций через переключатель mm:<путь>.
По умолчанию задействованы типы ref и ptr, не допускающие значения nil. Для совместимости со старым кодом предназначена прагма {.feature: "lenientnils".}.
Среда выполнения доработана для устойчивости к нехватке памяти (OOM - out-of-memory).
Языковые возможности и стандартная библиотека
Реализованы суммарные типы (sum types) и сопоставление с образцом (pattern matching), на основе которых в стандартную библиотеку добавлены типы Opt[T] и Result[T, E] для поддержки функциональной парадигмы программирования.
Проверка диапазонов выполняется полностью на этапе компиляции: если корректность неявного преобразования не удаётся доказать, компиляция завершается ошибкой.
Семантика break и block приведена к поведению Nim 3 (RFC 576).
Реализованы явные циклические зависимости между модулями.
Решено допустить классические исключения в виде ref object с подтипами (heap-based exceptions) для совместимости с Nim 2.
Сохранена работоспособность макросов: std/macros отображается на систему плагинов Nimony, что позволяет использовать существующий код метапрограммирования без переписывания.
Добавлена параллельная форма цикла for ("for i in 0 || 1"), реализованная в виде плагина, интегрированного с пулом потоков и циклом событий. Корректность доступа к результатам проверяется статически:
import std / [parfor, syncio]
proc pfib(n: int): int =
if n < 2:
return n
var r = [0, 0]
for i in 0 || 1: # итерации выполняются параллельно
r[i] = pfib(n - 1 - i)
result = r[0] + r[1]
В стандартную библиотеку добавлены модули httpclient с собственной реализацией TLS, complex, base64 и heapqueue, а также sort. Блокировки переведены на вызовы, не зависящие от libc.
Инженерные улучшения
Кодовая база компилятора переведена на nifcore, очередную итерацию API для работы с NIF, что снизило потребление памяти.
Для повышения безопасности работы с памятью во внутренних структурах NIF задействован подсчёт ссылок и режим copy-on-write.
Реализована проверка плагинов перед выполнением. Для проверки во время разработки плагинов поставляется линтер.
Реализованы совместимые с Nim прагмы .compile, .link, .intdefine, .booldefine и .strdefine. Прагма .build сделана независимой от инструментария сборки, а новая прагма .bundle позволяет подключать собственные бэкенды, работающие поверх Leng.
При тестировании потребления памяти на системе с чипом Apple M1 самый требовательный к памяти процесс фронтенда занимает 45 МиБ, бэкенда - 111 МиБ, а суммарное потребление при восьми одновременно работающих процессах достигает 171 МиБ. Сборка тех же компонентов компилятором Nim 2 требует примерно в пять раз больше памяти, что в значительной мере обусловлено применением clang.
Целью на текущий год в README проекта названа готовность компилятора к промышленному использованию для проектов, укладывающихся в задокументированный набор возможностей. В начале года темп разработки снизился из-за параллельной работы над системой инкрементальной компиляции в Nim 2. Модуль httpclient с собственной реализацией TLS создан для отработки применения Nim в роли встроенного ассемблера.
После месяца разработки опубликован релиз проекта OpenRGB 1.1, развивающего инструментарий для управления RGB-подсветкой компонентов ПК и периферийных устройств. Код написан на C/C++ и распространяется под лицензией GPLv2. Готовые сборки сформированы для Linux (deb, rpm, appimage, flatpak), macOS и Windows.
Релиз сфокусирован на исправлении ошибок, выявленных после выхода версии 1.0. Среди исправленных проблем:
Налажена работа опции "Не показывать снова", которая не сохраняла значение.
Устранена ошибка с сервером OpenRGB SDK, при которой в безоконном режиме (headless) сервер не отвечал на запрос списка плагинов.
Исправлена ошибка сервера при работе с очень старыми клиентами с протоколом ниже версии 6, из-за которой неправильно обрабатывались индексы устройств.
Исправлено несколько ошибок, связанных с обработкой опций командной строки, загружающих профили, устанавливающих параметр размера зон в устройствах, и применяющих другие настройки или цвета к устройствам через CLI.
Исправления в нескольких конкретных контроллерах устройств, улучшающие поведение горячего подключения и устраняющие потенциальные взаимные блокировки.
Одновременно выпущены плагины OpenRGB Effects Plugin 1.1 с исправлением ошибок и OpenRGB Skin Plugin с поддержкой версии OpenRGB 1.0. Обновление других плагинов не потребуется, пересоздавать профили не нужно, кроме случаев обновления с версий 0.9 или более старых.
На платформе Windows, для взаимодействия с подсветкой ОЗУ или старых материнских плат, потребуется установить драйвер pawnio и запускать OpenRGB от имени администратора, или установить OpenRGB в качестве фонового сервиса.
Проект OpenRGB сфокусирован на предоставлении унифицированного доступа к аппаратным возможностям контроллеров подсветки, будь то встроенные эффекты или прямое управление цветом. Функциональность пользовательских эффектов, не встроенных в контроллер, таких как визуализация звука, цветовое отображение температуры, AmbiLight, смена подсветки при переключении окон или просто красивое переливание как в лавовой лампе - вынесена в плагины. Дополнительные возможности по кастомизации подсветки предоставляет внешний API (сетевой SDK), позволяющий передавать команды на изменение подсветки из любой сторонней программы или скрипта.
Среди прочего, пакет поддерживает материнские платы ASUS, Gigabyte, ASRock и MSI с RGB-подсистемой для подсветки корпуса, модули памяти с подсветкой (ASUS, Patriot, Corsair, HyperX и т.п.), графические карты (например, ASUS Aura/ROG, MSI GeForce, Sapphire Nitro, Gigabyte Aorus) и различные контроллеры светодиодных лент (ThermalTake, Corsair, NZXT Hue+), светящиеся кулеры, мыши, клавиатуры, наушники и аксессуары Razer с подсветкой. В списке поддерживаемых устройств часть контроллеров может быть подписана названиями, не совпадающими с торговыми (оперативная память Asus Aura и некоторых других производителей в списке подписана как ENE DRAM), и некоторые пункты объединяют под собой сразу несколько моделей устройств.
Джейк Арчибальд (Jake Archibald), участвующий в разработке Firefox, провёл исследование, в котором сравнил форматы JPEG XL и AVIF, используя стандартный кодек libavif, стандартный кодек libjxl и новый кодек jixel, написанный на Rust и задействованный в Firefox и Chrome. Форматы тестировались в одинаковых условиях, которые включали кодирование с потерями, а для анализа результатов использовались показатели SSIMULACRA2, определяющие степень отличия от исходного изображения без потерь. В большинстве тестов формат AVIF показал лучшие результаты и при аналогичном уровне качества позволял создавать файлы меньшего размера, которые требовали меньше процессорного времени для сжатия и распаковки.
При сжатии фотографий с потерями для веб-ресурсов с настройками эффективности сжатия (баланс между временем кодирования и уровнем сжатия) по умолчанию файлы JPEG XL получались обычно на 15-25% больше аналогичных файлов AVIF (libavif). При максимальных уровнях сжатия разрыв сокращался до 6-20%. В отдельных тестах JPEG XL приближался к AVIF (libavif) или даже превосходил его. При этом на результат JPEG XL влияет выбор кодировщика: новый кодировщик jixel, как правило, создаёт файлы меньшего размера, чем libjxl, за исключением случаев, когда изображение содержит сложную прозрачность.
Для скриншотов и иллюстраций формат AVIF значительно лучше, чем JPEG XL. При настройках по умолчанию размер файлов JPEG XL был на 30-90% больше, а при максимальных уровнях сжатия - на 20-70% больше. Отмечается, что AVIF отлично справляется с такими изображениями при сжатии с потерями, поэтому использование форматов без потерь оправдано только в тех случаях, когда требуется абсолютная точность передачи данных (побитовое совпадение).
Для изображений с прозрачностью AVIF также значительно превосходит JPEG XL. При использовании libjxl файлы получаются на 31-44% больше при настройках по умолчанию или на 61-70% больше при максимальных уровнях сжатия. Кодировщик jixel всегда сохраняет прозрачность без потерь, из-за чего его файлы в 2-3 раза превышают по размеру аналогичные файлы AVIF, созданные libavif.
Как правило, AVIF (libavif) быстрее производит кодирование и потребляет меньше памяти с учётом размера итогового файла. Кодировщик jixel работает быстрее libavif и требует меньше памяти, однако создаваемые им файлы обычно значительно крупнее.
Декодирование в AVIF происходит быстрее. Для JPEG XL декодирование обычно требует в 2-3 раза больше времени при среднем качестве, однако при очень высоком качестве разрыв сокращается - в таких случаях браузер Chrome иногда декодирует JPEG XL даже быстрее.
Использование более высоких уровней сжатия оправдано для libavif и jixel, но не для libjxl. В случае с libjxl высокие уровни сжатия значительно замедляют процесс, требуют гораздо больше оперативной памяти и практически не улучшают результат. Иногда файлы, полученные при таких настройках, оказываются даже больше, чем при использовании настроек по умолчанию.
Режим 4:2:0 в AVIF (с пониженным вдвое цветовым разрешением) редко приводит к уменьшению размера файла, но при этом затрудняет достижение высокого качества изображения. Но кодирование и декодирование в этом режиме происходят быстрее.
Настройки качества работают предсказуемо во всех кодировщиках. При одном и том же значении параметра качество итогового изображения может немного варьироваться, но у всех кодировщиков эти отклонения происходят однородно и выглядят вполне логично.
В JPEG XL при выборе высоких уровней сжатия использование прогрессивного вывода практически не требует дополнительных затрат. В jixel недавно появилась поддержка предварительного прогрессивного отображения: при максимальной интенсивности сжатия это почти не влияет на результат, однако при настройках по умолчанию размер файла увеличивается на 12%. Браузеры Firefox и Chrome поддерживают прогрессивный JPEG XL. Safari отображает финальное изображение, но не показывает промежуточные прогрессивные стадии.
В AVIF с недавних пор тоже поддерживается прогрессивный вывод. Пока эта функция доступна только в Chrome, но работа над её внедрением в Firefox уже ведётся. Реализация этого механизма в AVIF сложнее, чем в JPEG XL, зато он даёт больше контроля над тем, как будет выглядеть предварительное изображение, а файлы обычно получаются меньше и декодируются значительно быстрее.
Что касается HDR, то в JPEG XL отсутствуют "карты усиления" (gain maps), что является существенным недостатком по сравнению с AVIF. Формат JPEG XL поддерживает такие карты, но браузерные декодеры их пока не распознают, а процесс кодирования остаётся непроработанным или экспериментальным. При сравнении HDR-контента без использования карт усиления два применённых в тестах показателя качества дают противоречивые результаты, однако оба сходятся в том, что JPEG XL позволяет получить файлы меньшего размера, чем AVIF. JPEG XL даёт возможность уменьшить размер существующих JPEG-файлов на 9-20% без дополнительной потери качества. Скорость декодирования у него такая же или даже выше (за исключением изображений небольшого размера).
В режиме сжатия без потерь (lossless) лидирует JPEG XL. Формат WebP (без потерь) позволяет получить файлы на 9-17% больше, а AVIF (без потерь) - на 30-120% больше. При настройках максимального сжатия без потерь в jixel зачастую создаются файлы, которые декодируются слишком медленно.
Представлена прошивка Ubuntu Touch 24.04-2.1, продолжающая развитие ветки на пакетной базе Ubuntu 24.04. Прошивка развивается проектом UBports, взявшим в свои руки разработку мобильной платформы Ubuntu Touch, после того как от неё отстранилась компания Canonical. Проектом также развивается экспериментальный порт рабочего стола Unity 8, который переименован в Lomiri.
Среди изменений в Ubuntu Touch 24.04-2.1:
Добавлена поддержка новых устройств:
Nothing Phone
OnePlus Nord N10
OnePlus Nord N100
Volla Tablet
Xiaomi Redmi Note 9 Pro (Global)
Xiaomi Redmi Note 9S/9 Pro (India)
Xiaomi Redmi Note 9 Pro Max
Xiaomi Poco M2 Pro
В браузере Morph задействован выпуск движка QtWebEngine 6.11.2, основанный на Chromium 140 с бэкпотированием исправлений уязвимостей из новых веток.
Устранена проблема, из-за которой указатель мыши не перемещался при повороте экрана.
Добавлена поддержка включения фонарика на смартфоне Volla Phone Plinius.
Повышена стабильность работы push-уведомлений.
Решена проблема с использованием экранной клавиатуры в приложениях, запускаемых через Libertine (утилита для запуска обычных немобильных desktop-программ).
Устранены уязвимости, позволявшие ограниченным приложениям получить дополнительные привилегии без ввода пароля. Например, в lomiri-download-manager устранена уязвимость, позволявшая выполнить произвольные команды с правами root и без аутентификации прочитать любые файлы в системе.
Проект GNOME начал формирование сборок дистрибутива "GNOME OS Preview", основанных на последнем стабильном релизе GNOME 51.1 и предназначенных для ознакомления обычными пользователями. До этого публиковались только ночные сборки GNOME OS, основанные на срезе находящейся в разработке кодовой базы GNOME из Git и ориентированные на применение разработчиками и тестировщиками проекта. Размер предлагаемого для загрузки iso-образа 3.7 ГБ.
GNOME OS использует компонент systemd-sysupdate для организации атомарного обновления системы и формат пакетов flatpak для установки дополнительных программ. Для установки задействован прототип инсталлятора. Из недавних улучшений в GNOME OS отмечены:
Поддержка механизма zswap для сжатия памяти, претендующей на вытеснение в раздел подкачки, для повышения эффективности работы на системах с небольшим ОЗУ;
Поставка приложения Test Center для упрощения тестирования экспериментальных версий программ;
Создание проекта Toolpak для установки независимых от дистрибутивов сборок консольных утилит (как Flatpak и Flathub, но для консольных программ).
Сборка GNOME OS Preview пока позиционируется как экспериментальная и будет объявлена стабильной после реализации недоделанных возможностей и поддержки механизмов подготовки, доставки и установки обновлений для поддержания системы в актуальном состоянии. Среди планов на будущее:
Доработка инсталлятора до полнофункционального состояния;
Поддержка дельта-обновлений в systemd-sysupdate для загрузки при обновлении только изменений, а не всего образа;
Интеграция systemd-homed для организации работы с шифрованными переносимыми домашними каталогами;
Улучшение поддержки устройств на базе архитектуры ARM;
Более тесная интеграция с TPM и графический интерфейс для восстановления ключей;
Поставка предустановленных программ в формате Flatpak;
Создание новых порталов и возможностей Flatpak, например, для поставки VPN-приложений.
В ядре Linux выявлена критическая уязвимость (CVE-2026-99999, PwnEscape) в стеке IPv4, позволяющая получить доступ к памяти хост-окружения из гостевой системы. При успешной эксплуатации уязвимости пользователь гостевой системы может выполнить код с правами ядра на стороне хост-окружения. Эксплуатация уязвимости продемонстрирована в окружении на базе гипервизора KVM, но так как уязвимость вызвана ошибкой не в гипервизоре, а в механизме обработки сетевых пакетов ядром Linux, потенциально эксплоит может быть адаптирован и для других гипервизоров и механизмов изоляции, в которых используется штатный сетевой стек Linux.
Проблема вызвана некорректной последовательностью операций при проверке контрольной суммы сетевого пакета, позволяющей изменить заголовок IPv4 в момент после проверки корректности информации, но до выполнения действий с ним (TOCTOU - Time-Of-Check-To-Time-Of-Use). При определённых условиях вычисление контрольной суммы выполняется в отложенном режиме, уже после разбора и проверки сетевого пакета, что может привести к изменению уже проверенных данных и чтению до 32 байт из области памяти вне буфера, в котором происходит обработка пакета.
Атака производится через отправку из гостевой системы пакета с флагом CHECKSUM_PARTIAL, при котором контрольная сумма вычисляется не сразу, и специально подобранными значениями skb->csum_start и skb->csum_offset. Пакет проходит проверку в сетевом стеке, так как длина заголовка корректна и равна 20 байт. Завершение вычисления контрольной суммы осуществляется при обработке фрагментации, но из-за некорректных значений csum_start и csum_offset результат записывается в самое начало IPv4-заголовка и изменяет первый байт, хранящий размер, увеличивая его 20 до 60 байт. При дальнейшей обработке ядро считает, что размер заголовка теперь 60 байт, при копировании читает дополнительные 40 байт (c учётом хвостовых служебных 8 байт, читается 32 байта из области вне буфера) и отправляет обратно в составе секции с IP-опциями.
В подготовленном эксплоите утечку 32 байт удалось использовать для контролируемой перезаписи 64 байт в памяти ядра и добиться выполнения кода на стороне хост-окружения с правами root. Исследователи пока не опубликовали технические детали данной стадии атаки и код эксплоита, чтобы дать пользователям время на установку обновления. Предположительно, утечка вначале используется для воссоздания раскладки памяти ядра в обход рандомизации KASLR, после чего создаются условия для выделения целевой структуры ядра с указателем сразу за памятью с буфером пакета и инициируется действие, приводящее к изменению данных в секции с IP-опциями, выходящими за границу буфера.
Уязвимость устранена во вчерашних обновлениях ядра Linux 7.2.11, 6.18.57, 6.12.113, 6.6.159, 6.1.190, 5.15.223 и 5.10.272.