Представлен выпуск проекта Sculpt 25.04, развивающего операционную систему на базе технологий Genode OS Framework, которая сможет быть использована обычными пользователями для выполнения повседневных задач. Исходные тексты проекта распространяются под лицензией AGPLv3. Для загрузки предлагается системный образ, размером 32 МБ, который можно использовать на ПК, смартфоне PinePhone и ноутбуке MNT Reform. Поддерживается работа на системах с процессорами и графической подсистемой Intel с включёнными расширениями VT-d и VT-x, а также на системах ARM с расширениями VMM.
Обеспечена совместимость с процессорами Intel на базе микроархитектуры Meteor Lake.
Реализовано управление окнами в многомониторных конфигурациях и добавлена поддержка закрепления виртуальных рабочих столов на определённых экранах.
Добавлена поддержка поворота экрана.
Предложен новый браузер каталогов (directory browser), позволяющий использовать произвольные каталоги в качестве виртуальных ФС, которые можно привязать к компонентам системы для упрощения их sandbox-изоляции.
Обновлены движок Chromium 112 и библиотека Qt 6.6.2.
Ускорена работа с графикой за счёт задействования оптимизаций, использующих инструкции SIMD на системах ARM и x86.
Добавлена поддержка платы F&S MX8MP armStone.
Система поставляется с графическим интерфейсом Leitzentrale, позволяющим выполнять типовые задачи по администрированию системы. В левом верхнем углу графического интерфейса отображается меню с инструментами для управления пользователями, подключения накопителей и настройки сетевого соединения. В центре присутствует конфигуратор для определения начинки системы в виде графа, показывающего взаимосвязь между системными компонентами. В интерактивном режиме можно удалять или добавлять компоненты, формируя состав системного окружения или виртуальных машин.
При желании пользователь может переключиться в консольный режим управления, предоставляющий большую гибкость в управлении. Традиционный рабочий стол может быть получен через запуск дистрибутива TinyCore Linux в виртуальной машине с Linux. В данном окружении доступны браузеры Firefox и Aurora, текстовый редактор на базе Qt и различные приложения. Для запуска утилит командной строки предлагается окружение "Noux".
Фреймворк Genode предоставляет унифицированную инфраструктуру для создания пользовательских приложений, работающих поверх ядра Linux (32 и 64 бит) или микроядер NOVA (x86 с виртуализацией), seL4 (x86_32, x86_64, ARM), Muen (x86_64), Fiasco.OC (x86_32, x86_64, ARM), L4ka::Pistachio (IA32, PowerPC), OKL4, L4/Fiasco (IA32, AMD64, ARM). В состав входит паравиртуализированное Linux-ядро L4Linux, работающее поверх микроядра Fiasco.OC, позволяющее выполнять в окружении Genode обычные Linux-программы. Ядро L4Linux не работает с оборудованием напрямую, а использует сервисы Genode через набор виртуальных драйверов.
Для Genode портированы различные компоненты Linux и BSD, обеспечена поддержка Gallium3D, выполнена интеграция Qt, GCC и WebKit, реализована возможность создания гибридных Linux/Genode программных окружений. Имеется порт VirtualBox, работающий поверх микроядра NOVA. Многие приложения адаптированы для запуска напрямую поверх микроядра и окружения Noux, обеспечивающего виртуализацию на уровне ОС. Для запуска не портированных программ предлагается система виртуальных окружений, работающая на уровне отдельных приложений и позволяющая запускать программы в виртуальном Linux-окружении с использованием паравиртуализации.
Предложена новая система управления профилями. В форме профилей пользователь может создавать полностью независимые сеансы работы с браузером, со своими настройками, историей, закладками, дополнениями и внутренними БД. Каждый профиль хранится в отдельном подкаталоге "~/.mozilla/firefox/". Профилю можно назначить свою цветовую схему, значок и имя. Переключение между профилями и создание новых профилей осуществляется через новую секцию, показываемую в верхней части основного меню.
Новый интерфейс работы с профилями пока по умолчанию включён не для всех и постепенно будет активироваться для всё большего процента пользователей. Для принудительного включения на странице about:config можно активировать параметр "browser.profiles.enabled". Технология разделения сеансов аналогична старым профилями, активация которых производилось из командной строки при помощи опции "-P", но интерфейсы и списки профилей старой и новой системы не пересекаются (в старом интерфейсе, запускаемом командой "firefox --ProfileManager" не показываются новые профили, а в новом, доступном через меню, не показываются старые).
Старый интерфейс:
Новый интерфейс:
В адресной строке реализован вывод контекстных рекомендаций с прогнозом погоды, при вводе слов, имеющих отношение к погоде или названиям городов. Возможность пока доступна по умолчанию только для пользователей из США. Включение производится через настройку "browser.urlbar.suggest.weather" на странице about:config.
В контекстное меню, показываемое при клике правой кнопкой мыши на кнопках вкладок, добавлен пункт для копирования ссылки страницы, показанной во вкладке.
При запуске в Windows 11 всплывающие окна и меню теперь выводятся в стиле, соответствующем эстетике операционной системы.
Улучшено автозаполнение полей с адресами и номерами кредитных карт. Автозаполнение теперь корректно применяется к формам, динамически обновляемым по мере заполнения информации (заполнение сработает в полях, появляющихся только после ввода других полей, например, когда поле для адреса появляется после заполнения поля с городом).
В конфигураторе появилась возможность переопределения констрастных цветов. Вместо цветов, применяемых на сайтах для фона и переднего плана, теперь можно задать собственные цвета или использовать системные настройки контраста для web-контента.
Добавлена поддержка проверки целостности импортируемых JavaScript-модулей по хэшу, используя новое поле "integrity" в метаданных для <script type="importmap">.
Добавлен метод Error.isError, позволяющий проверить является ли указанное значение экземпляром объекта Error.
Унифицированы размер и стиль шрифта в элементах <H1>, которые теперь не зависят от использования <H1> внутри блоков <article>, <aside>, <nav> и <section>.
В выражении "import" добавлена возможность указания атрибутов, через которые можно выставить дополнительные метаданные при импорте модулей.
При помощи атрибута 'type: "json"' теперь можно импортировать модули JSON.
import data from "https://example.com/data.json" with { type: "json" };
Для WebRTC-приложений предложено свойство degradationPreference, через которое можно выставить приоритет сохранения частоты кадров или разрешения в ситуации, когда снижение пропускной способности сети не позволяет обеспечить все заданные параметры.
В возвращаемый сервером HTTP-заголовок "Clear-Site-Data" добавлена поддержка директивы "cache", через которую сервер может информировать клиента о необходимости очистки из браузерного кэша данных, связанных с обрабатываемым URL. Например, очистка может инициироваться при завершении пользователем сеанса на сайте для снижения рисков нарушения конфиденциальности.
В инструментах для web-разработчиков в панели Network реализован новый столбец "Path", в котором показывается полный путь запрошенного ресурса.
На планшетах по умолчанию включён десктоп-режим, который может быть отключён в настройках.
Добавлена поддержка сортировки закладок и прикрепления папок в верхнюю часть экрана со списком закладок.
Реализована поддержка TLS-сертификатов для аутентификации клиентов на сервере.
Предоставлена возможность использования кнопки Share для отправки другим пользователям загруженного файла или ссылки по которой он был получен.
Добавлена поддержка сортировки загруженных файлов по времени и категориям.
Кроме новшеств и исправления ошибок в Firefox 138 устранено 14 уязвимостей. 6 уязвимостей вызваны проблемами работы с памятью, такими как переполнения буферов и обращение к уже освобождённым областям памяти. Потенциально данные проблемы способны привести к выполнению кода злоумышленника при открытии специально оформленных страниц. Также можно отметить уязвимость в функции "copy as cURL" в инструментах для web-разработчиков, позволяющую подставить свои команды из-за отсутствия должного экранирования спецсимволов.
Представлен специализированный процессор PyXL, предназначенный для ускорения выполнения кода на языке Python. Байт-код Python напрямую выполняться чипом без JIT, интерпретации и виртуальных машин. Файлы на языке Python вначале транслируются в байт-код CPython, после чего байт-код преобразуется в специализированный набор инструкций PySM, выполняемых чипом. Инструментарий для подготовки кода к выполнению написан на Python и работает в стандартном окружении на базе немодицифированного CPython. Реализация процессора разработана с нуля и оформлена на языке описания и моделирования электронных систем Verilog. Рабочий прототип процессора тестируется на платах с FPGA Zynq-7000.
В проведённых тестах, оценивающих скорость обработки событий GPIO, PyXL опережает решение на базе MicroPython и платы Pyboard в 30 раз. При выполнении тестового кода при помощи реализации PyXL, работающей с тактовой частотой 100MHz, задержка обработки запроса GPIO (Roundtrip Latency) составила 480 нс, а при помощи MicroPython Pyboard (168MHz) - 14741 нс. Предполагается, что повышение тактовой частоты PyXL до уровня Pyboard позволит увеличить разрыв до 50 раз.
При работе с GPIO на MicroPython при использовании платы PyBoard код на языке Python взаимодействует с аппаратными регистрами через промежуточные Си-функции, при этом сам Python-код выполняется в виртуальной машине. В PyXL байт-код Python выполняется напрямую процессором и доступ к GPIO осуществляется без дополнительных прослоек и внешних вызовов. Архитектура PyXL использует конвейерную обработку (pipelining) и стековую модель хранения и обработки данных. Платформа сохраняет динамическую типизацию Python и не накладывает ограничений на типы переменных.
На текущем этапе развития проект находится на стадии рабочего прототипа, поддерживающего ограниченное подмножество языка Python и нацеленного на демонстрацию возможности эффективного аппаратного выполнения Python-кода. Дальнейшее расширение функциональности планируют производить с учётом реальных потребностей автора, которые в основном сосредоточены на применении для встраиваемых систем и обработки информации в режиме реального времени.
Архитектура набора команд процессора PyXL спроектирована с оглядкой
на структуру байт-кода CPython и его эффективную обработку на аппаратном уровне с учётом специфики, такой как динамическая обработка типов и динамическая диспетчеризация. ISA включает инструкции для манипуляции стеком, бинарные операции, операции сравнения и ветвления, возможности вызова функций и доступа к памяти.
Технические детали реализации проекта PyZX будут представлены 17 мая на конференции PyCon 2025. Рассматривается возможность открытия наработок проекта и создания самодостаточного ASIC-чипа, но решение по этим вопросам пока окончательно не принято. Проект развивает Рон Ливне (Ron Livne), специализирующийся на оптимизации производительности и разработке аппаратных ускорителей.
Из особенностей Trinity можно отметить собственные средства для управления параметрами экрана, основанная на udev прослойка для работы с оборудованием, новый интерфейс для настройки оборудования, переход на композитный менеджер Compton-TDE (форк Compton с расширениями TDE), улучшенный конфигуратор сети и механизмы аутентификации пользователей. Окружение Trinity может быть установлено и использовано одновременно с более актуальными выпусками KDE, в том числе предоставлена возможность использования в Trinity уже установленных в системе KDE-приложений. Также присутствуют средства для корректного отображения интерфейса GTK-программ без нарушения единого стиля оформления.
В конфигуратор добавлен модуль для управления альтернативными пакетами в дистрибутивах на базе форматов DEB и RPM (например, в качестве Си-компилятора cc можно выбрать gcc или clang).
Предложено 22 новых векторных обоев для рабочего стола в стилях 'Modern Times' и 'Progressive'.
Добавлена новая тема оформления Euforie.
Добавлено 15 новых цветовых схем.
В библиотеку TQt 3 добавлена поддержка суррогатных Unicode-символов (составные символы с кодами выше U+FFFF, кодируемые парой значений) и дополнительных плоскостей Unicode.
Предложена новая структура контекстного меню для tderandrtray.
Для файлового менеджера реализован плагин с поддержкой mp4-файлов.
В kxkb добавлены опции "Stretch flag", "Dim flag" и "Show indicator bevel". Улучшена логика переключения между раскладками клавиатуры. Обеспечено запоминание настроек и раскладок при добавлении или удалении клавиатуры.
Добавлена возможность использования DCOP для выбора схемы энергопотребления и политики работы CPU.
В PDF-просмотрщик kpdf добавлена поддержка вкладок.
В мультимедийный проигрыватель Codeine в строку состояния добавлено контекстное меню для включения/выключения анализатора во время просмотра видео. Добавлен анализатор сигнала, показываемый при воспроизведении звука. Добавлена возможность смены позиции в файлах FLAC.
В компоненте twin-style-dekorator, отвечающем за оформление окон и их границ, реализованы опциональные верхние и нижние рамки с тенями. Добавлена поддержка псевдопрозрачности в темах оформления.
В окнах с тонкими рамками улучшена область захвата для изменения размера.
Реализована логика для отдельного декорирования неактивных окон.
Добавлена опция dockOnStart для управления состоянием окна во время запуска.
Добавлена возможность сброса таймера показа уведомления при клике на сообщении.
В конфигуратор сети добавлена возможность создания VPN-соединений.
Добавлена поддержка GCC 15, Poppler 25.01, Ubuntu 25.04 и Fedora 43. Прекращена поддержка Ubuntu 23.04 и Raspbian на базе Debian 10.
На использование сборочной системы CMake переведены программы digikam, krecipes, ksquirrel, ktorrent. Прекращена поддержка autotools в kmyfirewall и piklab.
Представлен выпуск свободной UNIX-подобной операционной системы OpenBSD 7.7. Проект OpenBSD был основан Тэо де Раадтом (Theo de Raadt) в 1995 году после конфликта с разработчиками NetBSD, в результате которого для Тэо был закрыт доступ к CVS репозиторию NetBSD. После этого Тэо де Раадт с группой единомышленников создал на базе дерева исходных текстов NetBSD новую открытую операционную систему, главными целями развития которой стали переносимость (поддерживается 13 аппаратных платформ), стандартизация, корректная работа, проактивная безопасность и интегрированные криптографические средства. Размер полного установочного ISO-образа базовой системы OpenBSD 7.7 составляет 746 МБ.
Кроме непосредственно операционной системы, проект OpenBSD известен своими компонентами, которые получили распространение в других системах и зарекомендовали себя как одни из наиболее безопасных и качественных решений. Среди них: LibreSSL (форк OpenSSL), OpenSSH, пакетный фильтр PF, демоны маршрутизации OpenBGPD и OpenOSPFD, NTP-сервер OpenNTPD, почтовый сервер OpenSMTPD, мультиплексор текстового терминала (аналог GNU screen) tmux, демон identd с реализацией протокола IDENT, BSDL-альтернатива пакету GNU groff - mandoc, протокол для организации отказоустойчивых систем CARP (Common Address Redundancy Protocol), легковесный http-сервер, утилита синхронизации файлов OpenRSYNC.
Реализация фреймворка drm (Direct Rendering Manager) синхронизирована с ядром Linux 6.12.21 (в прошлом выпуске - 6.6.52). В драйвере inteldrm реализована поддержка GPU, применяемого в процессорах Intel на базе микроархитектуры Arrow Lake. В драйвер
amdgpu добавлена поддержка GPU Ryzen AI 300 (Strix Point, Strix Halo, Krackan Point) и Radeon RX 9070 (Navi 48).
В порте для архитектуры ARM64 реализована поддержка набора векторных инструкций SVE (Scalable Vector Extension). На системах с ARM-чипами Apple M1 обеспечено выставление состояний энергопотребления. В механизме маппинга физических страницы памяти (pmap, physical mapping) оптимизированы операции сброса буфера ассоциативной трансляции (TLB), что примерно на 5% ускорило выполнение теста по сборке ядра. На оборудовании с поддержкой шифра QARMA3 для защиты пространства пользователя включена аутентификация указателей (PAC, Pointer Authentication Code).
На системах x86_64 для гостевых систем, выполняемых при помощи QEMU, реализована поддержка механизма AMD SEV (Secure Encrypted Virtualization), применяемого в системах виртуализации для защиты виртуальных машин от вмешательства со стороны гипервизора или администратора хост-системы.
В драйвер psp, используемый для настройки и запуска гостевых систем с включением AMD SEV, добавлена команда для загрузки прошивки в чип.
На системах x86_64 добавлена возможность выделения для DMA областей памяти размером больше 4 ГБ.
Улучшена поддержка архитектур RISC-V, Sparc64, HPPA, i386 и Powerpc64.
Улучшена обработка ситуаций нехватки памяти в системе (OOM).
В механизм трассировки ptrace добавлены возможности, позволяющие выставлять в отладчике gdb точки останова в многопоточных процессах. Добавлены команды для чтения и записи области, в которую в отслеживаемом процессе сохраняется состояние процессора при использовании инструкции XSAVE.
В сценариях на языке BT (BPFtrace или Bug Tracing), применяемых в системе трассировки btrace, добавлена поддержка многострочных конструкций. В утилиту btrace добавлены дополнительные профили и именования временных интервалов (hz, us, ms, s).
Добавлен sysctl-параметр kern.audio.kbdcontrol, при выставлении которого в 0 мультимедийные клавиши управления громкостью на клавиатуре будут обрабатываться как обычные клавиши.
Улучшена обработка сбоев и расширены проверки при переходе в спящий и ждущий режимы.
Переработан код для остановки процессов при поступлении сигнала, что решило проблемы с остановкой многопоточных процессов, проявлявшиеся в таких пакетах, как golang и mpv.
Усовершенствована поддержка многопроцессорных систем (SMP). Обеспечена параллельная работа таймеров ввода и вывода TCP, а системные вызовы send() и recv() переведены на использование общей блокировки. Несколько пользовательских потоков теперь могут параллельно работать с разными сокетами, а вывод TCP больше не блокирует обработку IP-пакетов.
Избавлены от глобальной блокировки системные вызовы open, openat, ptsignal, psignal и prsignal, а также sysctl kern.timeout_stats, kern.allowkmem, kern.video.record, net.inet.gre.allow, net.inet.gre.wccp, kern.global_ptrace, kern.wxabort, kern.malloc.kmemstat. Переведены в разряд mp-safe драйверы psp, wsmouse и wstpad, а также структура video_filtops.
В гипервизоре VMM реализована возможность использования acpipci для прикрепления PCI-шин.
Предоставлена возможность определения альтернативной политики с настройками производительности (perfpolicy), применяемой при работе системы от аккумулятора.
В команду sysctl добавлена опция "-f file" для загрузки разом всех настроек из файла. В rc-скриптах новая опция применена для загрузки sysctl.conf целиком, вместо построчного разбора.
В команде pkg_add реализован вызов ldconfig, если в результате установки новых пакетов изменился список разделяемых библиотек.
Добавлена поддержка нового оборудования. Улучшена поддержка SoC MediaTek и Qualcomm Snapdragon (включая X Elite). Улучшена поддержка устройств Samsung Galaxy Book4 Edge, ThinkPad T14 Gen 5, Vivobook, ThinkPad X1 Nano Gen 2, ThinkPad X13 и различных Chromebook. Добавлен драйвер ice для Intel E810 Ethernet 1Gb/10Gb/25Gb/50Gb/100Gb и драйвер ixv для виртуальных функций Intel Ethernet 82598EB, 82559 и X540.
Продолжена работа по выносу выполнения сетевых операций на сторону сетевых карт.
В sysupgrade реализован режим для offline-обновления систем с использованием пакетов, сохранённых в локальной ФС.
В утилиту fw_update добавлена возможность загрузки (не установки) прошивок под обычным пользователем без прав root. Добавлен флаг "-l" для вывода списка драйверов и файлов.
Для процесса sshd-auth включена защита от эксплуатации уязвимостей, основанная на случайной перекомпоновке исполняемого файла при каждой загрузке системы (relink). Перекомпоновка позволяет сделать малопредсказуемым смещения функций, что затруднит создание эксплоитов, использующих методы возвратно-ориентированного программирования.
Обеспечена изоляция процесса mountd с использованием системного вызова unveil.
В сетевом стеке реализована поддержка сокетов AF_FRAME и семейства протоколов IFT_ETHER, позволяющих приложениям отправлять и принимать Ethernet-кадры. Для исходящих пакетов UDP и TCP задействован новый метод хэширования, позволивший оптимизировать распределения трафика по очередям и заметно (~20%) ускорить отправку UDP для IPv4/IPv6 и TCP для IPv6. Для устройства tun реализован ioctl TUNSCAP и оптимизировано взаимодействие между ядром и пространством пользователя. Реализован отдельный для каждого потока кэш маршрутизации. В драйвере vio включён режим multiqueue.
В утилите pfctl для сетевых интерфейсов и очередей разрешено определение пропускной способности, превышающей 4Gbit.
В iked, реализации протокола IKEv2 для IPsec, добавлена опция "natt" для принудительного использования nat-t.
В relayd, фоновом процессе для перенаправления и балансировки запросов, реализована поддержка клиентских TLS-сертификатов.
В инструмент измерения сетевой производительности tcpbench добавлена поддержка TLS.
В bgpd реализована поддержка RFC 8654 (BGP Extended Message), RFC 8538 (BGP Notification Message), по умолчанию активирована опция "reject as-set", обеспечено кэширование Adj-RIB-Out.
В LibreSSL 4.1.0 добавлена экспериментальная поддержка архитектуры
loongarch64, предложены новые ассемблерные реализации алгоритмов
SHA-1, SHA-256 и SHA-512 для архитектуры amd64 (задействована инструкция SHA-NI), новые ассемблерные реализации SHA-256 и SHA-512 для Aarch64 (задействовано расширение CE), упрощена реализация MD5 для amd64, обеспечено кэширование списка отозванных сертификатов (CRLs), из BoringSSL перенесена реализация ML-KEM 768 и 1024.
Обновлён OpenSSH. Список изменений можно посмотреть в анонсе OpenSSH 10 (удалена поддержка цифровых подписей DSA, операции аутентификации выделены в отдельный процесс sshd-auth, по умолчанию задействован гибридный алгоритм обмена ключами "mlkem768x25519-sha256").
Число портов для архитектуры AMD64 составило 12593 (было 12312), для aarch64 - 12446 (было 12148), для i386 - 10429 (было 10534). Среди версий приложений в портах:
Asterisk 16.30.1, 18.26.1, 20.13.0 и 22.3.0
Audacity 3.7.3
CMake 3.31.6
Chromium 135.0.7049.52
Emacs 30.1
FFmpeg 6.1.2
GCC 8.4.0 и 11.2.0
GNOME 47
Go 1.24.1
JDK 8u442, 11.0.26, 17.0.14 и 21.0.6
KDE Gears 24.12.3
KDE Frameworks 6.12.0
KDE Plasma 6.3.3
Krita 5.2.9
LLVM/Clang 13.0.0, 16.0.6, 18.1.8, 19.1.7
LibreOffice 25.2.1.2
Lua 5.1.5, 5.2.4, 5.3.6, 5.4.7
MariaDB 11.4.5
Mono 6.12.0.199
Mozilla Firefox 137.0 и ESR 128.9.0
Mozilla Thunderbird 128.9.0
Mutt 2.2.14 и NeoMutt 20250113
Node.js 22.14.0
OpenLDAP 2.6.9
PHP 8.2.28, 8.3.19 и 8.4.5
Postfix 3.10.1
PostgreSQL 17.4
Python 2.7.18 и 3.12.9
Qt 5.15.16 (+ патчи от проекта KDE) и 6.8.2
Ruby 3.2.8, 3.3.7, 3.4.2
Rust 1.86.0
SQLite 3.49.1
Shotcut 25.01.25
Sudo 1.9.16p1
Suricata 7.0.7
Tcl/Tk 8.5.19 и 8.6.16
Vim 9.1.1265 и Neovim 0.10.4
Xfce 4.20.0
Обновлены компоненты от сторонних разработчиков, входящие в состав OpenBSD 7.7:
Графический стек Xenocara на базе X.Org 7.7 с xserver 21.1.16 + патчи, freetype 2.13.3, fontconfig 2.15.0, Mesa 23.3.6, xterm 395, xkeyboard-config 2.20, fonttosfnt 1.2.4.
Калифорнийский университет в Беркли опубликовал проект Berkeley Humanoid Lite, ставший итогом исследований и экспериментов в области создания простых для изготовления человекоподобных роботов. Робот построен с использованием открытого программного обеспечения и развивается в соответствии с концепцией Open Hardware. Аппаратная начинка сформирована из типовых компонентов, имеющихся в свободной продаже, и деталей, изготовленных на 3D-принтере. Опубликованы модели машинного обучения, исходный код ПО, схемы, список компонентов (BOM), сборочный план и модели для 3D-печати.
Под лицензией MIT открыты исходные тексты выполняемых на стороне робота прошивок контроллеров актуаторов и управляющей низкоуровневой начинки, а также внешние компоненты, такие как среда для разработки управляющих сценариев, окружение для симуляции, тренировки моделей движения и верификации, построенное на базе фреймворков Isaac Lab, Isaac Sim и MuJoCo. Для дистанционного управления могут использоваться типовые контроллеры виртуальной реальности SteamVR.
Отдельно опубликованы используемые в экспериментах модели машинного обучения, а также предложен контроллер локомоции (locomotion controller), использующий модель машинного обучения с подкреплением для обеспечения перемещения робота в заданную точку. Продемонстрировано использование робота в качестве манипулятора, дистанционно управляемого человеком. Ведутся эксперименты в области автономной навигации, обхода препятствий, воспроизведения мелкой моторики и координации движений при прямохождении.
Проект может быть использован другими исследователями в качестве недорогой отправной точки для изучения и проведения исследований в области робототехники. Для сборки не требуются особые навыки и при желании любой может воспользоваться предлагаемыми инструкциями и схемами для создания своего экземпляра, затратив менее 5000 долларов. Робот модульный и рассчитан на возможность доработки и адаптации для своих целей, например, после минимальной модификации может быть преобразован из прямоходящего в четвероногого или кентавроподобного.
Основным фактором удешевления производства стало использование в конструкции пластиковый деталей, изготовленных на 3D-принтере. При этом исследователям пришлось решить ряд проблем, связанных с надёжностью и долговечностью работы трансмиссий на базе пластиковых, а не металлических шестерёнок. Ограничения удалось преодолеть благодаря задействованию циклоидного редуктора.
В NPM-пакете xrpl выявлен вредоносный код (CVE-2025-32965), отправляющий на внешний сервер мастер-ключи от криптокошельков и закрытые ключи криптовалют. Пакет xrpl позиционируется как официально рекомендованная библиотека (xrpl.js) для взаимодействия JavaScript- и TypeScript-приложений, работающих через браузер или Node.js, с децентрализовнной платёжной сетью XRP Ledger (Ripple), развивающей криптовалюту XRP, занимающую 4 место по капитализации (уступает только BTC, ETH и USDT). Библиотека xrpl.js насчитывает 165 тысяч загрузок за предшествующую инциденту неделю, используется в качестве зависимости в 143 NPM-пакетах и задействована во многих криптовалютных приложениях и сайтах.
Вредоносный код
присутствовал в выпусках xrpl.js 2.14.2, 4.2.1, 4.2.2, 4.2.3 и 4.2.4, и был удалён в версиях 4.2.5 и 2.14.3. На GitHub вредоносные версии не публиковались и были размещены только в репозитории NPM. Пакеты с вредоносным кодом появились в репозитории NPM 21 апреля в 23:53 (MSK) и были удалены администрацией репозитория 22 апреля в 16:00 (MSK). Подробности разбора инцидента со стороны проекта XRP Ledger пока не опубликованы, но предполагается, что атака была совершена через компрометацию учётной записи сопровождающего, используя методы социального инжиниринга и фишинга.
Проблемные пакеты соответствовали официальному релизу 4.2.0 и отличались от него наличием изменений, осуществлявших отправку на внешний сервер закрытых ключей, используемых в криптокошельках. Изменение было оформлено в виде функции checkValidityOfSeed, преподносимой как функция проверки целостности ключа, а на деле отправлявшей запросы на хост "0x9c.xyz".
Вредоносный код внедрялся поэтапно. В версии 4.2.1 из package.json были удалены секции настроек "scripts" и "prettier", а также были внесены изменения в файлы build/xrp-latest-min.js и build/xrp-latest.js.
В версии 4.2.2 в файл src/Wallet/index.js был добавлен вредоносный код. В версиях 4.2.3 и 4.2.4 были добавлены дополнительные вредоносные изменения, затрагивающие вариант кода на TypeScript.
Компания System76, разрабатывающая Linux-дистрибутив Pop!_OS, опубликовала седьмую альфа-версию среды рабочего стола COSMIC, написанной на языке Rust (не путать со старым COSMIC, который был основан на GNOME Shell). Для тестирования предложены iso-образы со свежей версией COSMIC, сформированные поверх альфа-сборок будущего выпуска дистрибутива Pop!_OS 24.04 для систем с GPU NVIDIA (3.3 ГБ) и Intel/AMD (2.9 ГБ). Также формируются готовые пакеты для Fedora, NixOS, Arch Linux, openSUSE, Serpent OS, Redox и CachyOS.
COSMIC развивается как универсальный проект, не привязанный к конкретному дистрибутиву и соответствующий спецификациям Freedesktop. Для построения интерфейса в COSMIC задействована библиотека Iced, которая использует безопасные типы, модульную архитектуру и модель реактивного программирования, а также предлагает архитектуру, привычную для разработчиков, знакомых с языком декларативного построения интерфейсов Elm. Предоставляется несколько движков отрисовки, поддерживающих Vulkan, Metal, DX12, OpenGL 2.1+ и OpenGL ES 2.0+. Разработчикам предлагается готовый набор виджетов, возможность создавать асинхронные обработчики и использовать адаптивную компоновку элементов интерфейса в зависимости от размера окна и экрана.
Помимо использования языка Rust из особенностей COSMIC выделяются режимы гибридной мозаичной компоновки окон и стекового закрепления окон (группировка окон по аналогии со вкладками в браузере), которые могут включаться в привязке к виртуальным рабочим столам. Проектом также разрабатывается композитный сервер cosmic-comp на базе Wayland. Первый стабильный релиз COSMIC изначально был намечен на первый квартал 2025 года, новые сроки не уточняются. Предполагается, что следующему выпуску будет присвоен статус бета-версии.
Реализована возможность перегруппировки виртуальных рабочих столов или их перемещения на другой экран через перетаскивание мышью в режиме drag&drop. Добавлена функция закрепления виртуальных рабочих столов, позволяющая держать открытыми нужное количество рабочих столов, независимо от того пустые они или нет.
Добавлены всплывающие подсказки, отображаемые при наведении курсора на элементы в панели задач, виртуальных рабочих столах, каталоге приложений и меню приложений.
Реализованы глобальные комбинации клавиш, позволяющие вызывать действия в X11-приложениях, независимо от того, в фокусе приложение или нет. Для защиты конфиденциальности по умолчанию данная возможность отключена, но в качестве опции возможны варианты обработки чужих событий ввода только при нажатии клавиш-модификаторов (Ctrl, Shift, Alt).
Добавлены настройки дробного масштабирования для X11-приложений, запускаемых под управлением XWayland. Режим "Оптимизация для приложений" повышает качество отображения интерфейсов программ, не поддерживающих дробное масштабирование. Режим "Оптимизация для игр и полноэкранных приложений" допускает использование в приложениях фактического разрешения экрана, при том, что к приложениям может применяться уровень масштабирования, отличающийся от масштаба приложений, поддерживающих дробное масштабирование.
Внесены изменения в систему обработки комбинаций клавиш:
При переключении комбинацией "Super+клавиши_управления_курсором" текущая вклада продолжает отображаться до тех пор пока удерживается клавиша Super.
Виртуальные рабочие столы теперь имеют более высокий приоритет по сравнению с дисплеями - навигация при перемещении окон или смены фокуса ввода вначале охватывает рабочие столы на текущем дисплее, а затем переключается на следующий дисплей при его наличии.
Реализован цикличный перебор виртуальных рабочих столов (после последнего переключается на первый).
Для переключения между дисплеями добавлена новая комбинация "Super+Shift+клавиши_управления_курсором", для перевода фокуса на другой дисплей - "Alt+Super+клавиши_управления_курсором", для переноса окна на другой дисплей - "Shift+Alt+Super+клавиши_управления_курсором".
Для увеличения или уменьшения масштаба рабочего стола добавлены комбинации клавиш "Super+" и "Super-".
В файловый менеджер добавлена опция для упреждающего ввода файловых путей - после ввода первой буквы имени файла или каталога в адресной строке показываются образцы автозаполнения, соответствующие имеющимся файлам или каталогам. Добавлена опция для открытия файлов одним кликом. Добавлены ярлыки для активации режимов отображения файлов в виде сетки или списка. Реализован переход к редактированию при клике на каталоге в файловом пути. Добавлен диалог Open Folder для извлечения файлов в заданный каталог.
На страницу настройки звука добавлена возможность изменения баланса громкости для левого и правого уха.
В апплет Accessibility добавлены опции для включения контрастного режима, инвертирования цветов, цветовых фильтров для дальтоников и объединения звуковых каналов для людей, имеющих проблемы со слухом. Улучшена реализация интерфейса для увеличения областей на экране.
В различных компонентах реализованы оптимизации и исправления, нацеленные на снижение нагрузки на CPU.
Проектом MinC (MinC Is Not Cygwin) развивается минималистичное ядро (занимает 285Kb) и инструментарий на базе MinGW, позволяющие пересобирать и запускать типовые утилиты OpenBSD в Windows по аналогии с тем, как пакет Cygwin позволяет использовать в Windows утилиты GNU. Код проекта написан на языке Си и распространяется под лицензией BSD. Поддерживается работа в версиях Windows, начиная с Windows XP и заканчивая Windows 11.
После установки MinC пользователь получает окружение, симулирующее работу с OpenBSD в Windows и обеспечивающее производительность близкую к нативному выполнению. Работа обеспечивается при помощи библиотек
libtrace и
libposix транслирующих необходимые для OpenBSD-приложений функции и системные вызовы в формат для работы поверх Windows. Для сборки программ предоставляются типовые библиотеки
libc, libdl, libsocket и libutil из состава OpenBSD.
Состав окружения соответствует выпуску OpenBSD 6.1 и включает следующие наборы программ:
Стандартные утилиты, такие как ls, du, ps, df, find, grep, awk, mkdir, chmod, chown, wc, top и diff.
Текстовые редакторы vi и nano, а также программы, подобные less и hexedit.
Инструменты для разработки: vim, git, ImageMagick.
Пока не входят в поставку, но будут добавлены в ближайшее время серверные приложения, такие как Apache httpd, Sendmail и sshd.
Из расширенных возможностей отмечается поддержка интеграции с редактором кода Visual Studio Code для использования MinC в качестве терминала. Для установки подготовлен графический инсталлятор, позволяющий выбрать дополнительные наборы приложений, помимо базового системного окружения. MinC корректно работает при использовании в системе антивирусных пакетов, таких как Windows Defender и Kaspersky Anti-Virus, но при установке может потребоваться временное отключение антивируса.
После года разработки опубликован релиз свободного набора компиляторов GCC 15.1, первый значительный выпуск в новой ветке GCC 15.x. В соответствии со схемой нумерации выпусков, версия 15.0 использовалась в процессе разработки, а незадолго до выхода GCC 15.1 уже ответвилась ветка GCC 16.0, на базе которой будет сформирован следующий значительный релиз GCC 16.1.
При компиляции программ на языке C по умолчанию задействован стандарт С23 (обзор изменений) с расширениями GNU ("-std=gnu23"). Ранее по умолчанию использовался стандарт C17 - "-std=gnu17"). Изменение потенциально может привести к проблемам при сборке существующих проектов из-за включения константы nullptr, типа _BitInt(n) и ключевых слов bool, true и false, которые могут конфликтовать с заданными в приложениях одноимёнными идентификаторами.
Реализованы возможности стандарта C23:
Директива "#embed", предназначенная для встраивания в код бинарных ресурсов.
Атрибут "unsequenced", сигнализирующий, что результат не зависит от порядка выполнения.
Атрибут "reproducible", указывающий, что функция всегда возвращает один и тот же результат при одинаковых входных данных, т.е. не зависит от иных факторов.
Реализованы элементы будущего стандарта C2Y (-std=c2y и -std=gnu2y):
Возможность объявления переменных в операторе "if", например, "if (int x = get ()) {...}".
Поддержка присвоения имён циклам для того, чтобы ссылаться на них в коде.
outer: for (int i = 0; i < IK; ++ i) {
switch (i) {
case 1:
break; // jumps to CONT1
case 2:
break outer; // jumps to CONT2
}
// CONT1
}
// CONT2
Поддержка указания диапазонов целых значений в выражениях "case", например, "case 1 ... 10:".
Суффиксы "i" и "j" для обозначения мнимой части в комплексных числах.
Возможность использования операторов "++" и "--" с комплексными числами.
Конструкция "_Generic(type, expr1, expr2, ...)" для выбора выражения на основе типа операнда.
Поддержка обращения к байтовым массивам как к другим типам объектов, таким как структуры и объединения.
Поддержка применения оператора "alignof" к неполным массивам (объявленным без указания размера, например, "int a[]").
Добавлен новый синтаксис для восьмеричных, шестнадцатеричных и универсальных escape-последовательностей символов. Вместо "\u", "\x" и "\nnn" - предложены последовательности "\u{}", "\o{}" и "\x{}", в которых можно указывать произвольное число цифр.
Встроенные функции "__builtin_stdc_rotate_left" и "__builtin_stdc_rotate_right".
Разрешены операции с нулевой длиной на указателях NULL (например, "sizeof(*p)").
В фронтэнде для языка C++ реализованы возможности, развиваемые для будущего стандарта C++26:
Возможность использования ключевого слова "constexpr" с разновидностью оператора "new" (placement new) для размещения объекта в заранее выделенной памяти во время компиляции.
Вывод ошибки при удалении указателя на неполный тип.
Объявлен устаревшим синтаксис определения вариативных параметров с многоточием без предшествующей запятой (например, когда указывается "void e(int...)" вместо "void e(int, ...)").
Запрет некоторых применений директивы "export" и разрешение использования "export {}".
Поддержка продления времени жизни временных объектов в циклах "for", перебирающих диапазоны.
В библиотеке libstdc++ реализована экспериментальная поддержка модулей std и std.compat.
Использование инициализатора "{0}" для объединений в коде на C и C++ теперь не гарантирует очистку всего содержимого, а приводит к обнулению первого элемента объединения. Для очистки всего объединения следует использовать выражение "{}", определённое в спецификации C23, или указать опцию "-fzero-init-padding-bits=unions" для восстановления старого поведения.
Реализована поддержка атрибута "musttail" ([[gnu::musttail]] и [[clang::musttail]]) для гарантированных хвостовых вызовов. Атрибут применяется к выражениям return, в которых осуществляется рекурсивный вызов текущей функции, и гарантирует, что такой вызов будет использовать хвостовую рекурсию, при которой не выделяется дополнительная память в стеке (исключает риск исчерпания памяти при очень большом числе вызовов).
Реализована поддержка атрибута flag_enum ([[gnu::flag_enum]] и [[clang::flag_enum]]), применяемого к перечислениям для индикации, что содержимое используются в битовых операциях (исключает вывод предупреждения в режиме "-Wswitch").
Добавлена поддержка атрибута "counted_by", через который можно указать поле в структуре с гибким массивом, определяющим число элементов. Атрибут может использоваться для повышения эффективности проверок выхода за границу буфера.
Для функций добавлен атрибут "nonnull_if_nonzero", определяющий, что некоторые параметры функции с указателями могут принимать значение NULL, только если другой параметр равен нулю.
Разрешено использовать расширенные ассемблерные вставки "asm (....)" вне функций. В ассемблерных вставках разрешено перезаписывать память в красной зоне стека (область на вершине стека).
Компиляция кода на C++ ускорена благодаря улучшенному хэшированию шаблонов.
Добавлены новые оптимизации. Реализована поддержка векторизации циклов, в которых имеется код для преждевременного выхода (например, через вызов break или return), даже если подобные циклы манипулируют динамически выделяемыми массивами или буферами, размер которых неизвестен на этапе компиляции. При указании опции "-O2" включена векторизация некоторых легко векторизируемых циклов, для которых отсутствуют сведения о количестве итераций (tripcount).
Добавлен режим инкрементальной оптимизации на этапе связывания (LTO, Link-Time Optimization), существенно сокращающий время перекомпиляции при использовании LTO в ситуациях, когда внесены незначительные изменения в код (отредактирована одна функция). Для включения инкрементального режима предложена опция "-flto-incremental".
Улучшена компиляция очень больших входных файлов. Реализовано отслеживание номеров столбцов, превышающих 4096. Повышена точность указания местоположения ошибок и предупреждений в очень больших файлах.
В статическом анализаторе повышена наглядность отчётов при диагностике проблем. Например, обеспечено выделение места возникновения проблемы символом "⚠️", изменена компоновка вывода при ошибках в шаблонах C++, добавлены подсказки для упрощения перехода на стандарт C23, переработана цветовая схема. Добавлена возможность вывода диагностики в формате Sarif (-fdiagnostics-format=sarif-file).
Реализована библиотека libgdiagnostics, позволяющая интегрировать в свои проекты возможности GCC, связанные с оформление диагностических сообщений (например, можно задействовать средства цитирования, подсветки, подсказок по исправлению, вывода в формате SARIF).
Добавлена утилита sarif-replay для просмотра файлов в формате SARIF, основанном на JSON и применяемом для сохранения результатов статического анализа и сведений о предупреждениях и ошибках.
Добавлено предупреждение "-Wanalyzer-undefined-behavior-ptrdiff",
выводимое при наличии операций вычитания с указателями, ссылающимися на разные участки памяти.
Добавлены предупреждения "-Wtrailing-whitespace" и "-Wleading-whitespace" для выявления остаточных пробелов в конце строк и лишних пробелов начале строк.
Добавлено предупреждение "-Wheader-guard" для информирования о проблемах в макросах защиты заголовочных файлов, предотвращающих повторное включение заголовочного файла.
Во фронтэнд для языка Fortran добавлена поддержка беззнаковых целых чисел.
В состав включён компилятор для языка COBOL - gcobol, поддерживающий платформы x86-64 и AArch64, и не рассчитанный на использование на 32-разрядных системах. Компилятор реализует спецификацию ISO/IEC 1989:2023 и
проходит большую часть тестов NIST CCVS/85.
Продолжена реализация стандартов OpenMP 5.0, 5.1, 5.2 и 6.0 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Добавлена поддержка метадиректив и конструкций tile, unroll, interop и dispatch.
Для некоторых GPU AMD и NVIDIA добавлена поддержка унифицированной разделяемой памяти (включается через указание unified_shared_memory в директиве "requires"). Добавлена поддержка выражения "self_maps".
В бэкенд для архитектуры AArch64 добавлена поддержка платформы
MinGW (aarch64-w64-mingw32). Реализовано более 20 расширений ARM8 и улучшена поддержка расширения ACLE (Arm C Language Extensions). Внесены многочисленные улучшения в генератор кода. Добавлена поддержка CPU:
Apple A12 (apple-a12)
Apple M1 (apple-m1)
Apple M2 (apple-m2)
Apple M3 (apple-m3)
Arm Cortex-A520AE (cortex-a520ae)
Arm Cortex-A720AE (cortex-a720ae)
Arm Cortex-A725 (cortex-a725)
Arm Cortex-R82AE (cortex-r82ae)
Arm Cortex-X925 (cortex-x925)
Arm Neoverse N3 (neoverse-n3)
Arm Neoverse V3 (neoverse-v3)
Arm Neoverse V3AE (neoverse-v3ae)
FUJITSU-MONAKA (fujitsu-monaka)
NVIDIA Grace (grace)
NVIDIA Olympus (olympus)
Qualcomm Oryon-1 (oryon-1)
В бэкенде генерации кода для GPU AMD Radeon (GCN) реализована поддержка библиотеки libstdc++ и добавлена экспериментальная поддержка генерации кода для серий устройств gfx9-generic, gfx10-3-generic и gfx11-generic.
В бэкенд для архитектуры x86 добавлена поддержка расширений архитектуры набора команд Intel AVX10.2, AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, MOVRS. Добавлена поддержка CPU Intel Diamond Rapids. Удалена поддержка оптимизаций и расширений для CPU Intel Xeon Phi Knights Landing и Knights Mill.
Расширены возможности бэкендов для платформ LoongArch и AVR.
Удалена поддержка целевой архитектуры nios2, применяемой в процессорах Nios II. Объявлена устаревшей и будет удалена в следующем значительном выпуске поддержка ABI ILP32 (-mabi=ilp32) в порте для AArch64.
Компания Microsoft внесла в бинарные сборки расширения Microsoft C/C++ Extension (ms-vscode.cpptools) изменение, блокирующееработу в форках открытого редактора кода VS Code (Visual Studio Code). Расширение является проприетарным и используется для добавления в VS Code поддержки языков C/C++. После обновления до версии 1.24.5 пользователи редакторов VS Codium и Cursor, основанных на коде VS Code, столкнулись с невозможностью дальнейшего использования дополнения от Microsoft.
Инициализация дополнения завершалась ошибкой, уведомляющей, что
пакет Microsoft C/C++ Extension может быть использован только в Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server и связанных с ними продуктах и сервисах Microsoft. Для возобновления работы с проектами на C/C++ пользователи вынуждены откатиться на более старую версию и отключить автоматическую установку дополнений в настройках.
До этого компания Microsoft ещё в сентябре 2020 года добавила лицензионное соглашение, запрещающее использовать бинарные сборки дополнения в сторонних продуктах. До сих пор данное требование оставалось формальностью и не приводило к блокировке. Кроме того, условия использования магазина дополнений к VS Code запрещали подключение из ответвлений, но разработчики форка Cursor использовали для обхода прокси.
Часть кода дополнения Microsoft C/C++ Extension остаётся под лицензией MIT, а ограничения касаются только расширенных бинарных сборок, распространяемых через магазин приложений Microsoft под отдельной проприетарной лицензией. Открытым являются только компонент на языке TypeScript, а образующий основную функциональность Runtime является проприетарным и поставляется в бинарном виде.
Разработчики проекта Cursor выпустили обновление, временно решающее проблему, а в дальнейшем решили отказаться от использования проприетарных дополнений Remote access, Pylance, C/C++ и C#. В состав следующей версии планируют включить развиваемые сообществом открытые альтернативные дополнения. Аналогичный переход на открытые аналоги планируют и разработчики проекта
VS Codium.
Регистратор APNIC (Asia Pacific Network Information Centre) объявил о достижении 50% охвата IPv6 в Азиатско-Тихоокеанском регионе. Рубеж достигнут спустя 25 лет после начала внедрения IPv6 организацией APNIC. Степень внедрения IPv6 у других регистраторов: ARIN (Северная Америка) - 52%, LACNIC (Латинская Америка) - 39%, RIPE (Европа, Ближний Восток и Центральная Азия) - 28%, AFRINIC (Африка) - 4%.
По странам наиболее высокий уровень внедрения IPv6 наблюдается в Индии (78.16%, 600 млн. пользователей), Вьетнаме (60%, 54 млн. пользователей), Японии (58.2%, 109 млн. пользователей) и Таиланде (50.62%, 45 млн. пользователей). По числу пользователей IPv6 лидирует Китай, в котором поддержка IPv6 выявлена у 810 млн. пользователей. В России уровень внедрения IPv6 оценивается в 10.63%, Грузии - 12.72%, Украине - 13.42%, Беларуси - 14.35%, Литве - 16.79%, Латвии - 28.52%, Казахстане - 21.76%, Эстонии - 47.62%, Венгрии - 53.6%, Израиле - 62.83%.
Общемировой охват пользователей IPv6 оценён в 40%. Доля пользователей IPv6 из Азиатско-Тихоокеанского региона от всех пользователей IPv6 оценивается в 64%. Для сравнения доля AFRINIC (Африка) от всех пользователей IPv6 - 0.9%, ARIN (Северная Америка) - 9.4%, LACNIC (Латинская Америка) - 10.7% и RIPE (Европа, Ближний Восток и Центральная Азия) - 16%. Доля Индии от всех пользователей IPv6 составляет 27%, а Китая - 22%.
Представленные показатели учитывают число пользователей, которые способны устанавливать соединения по IPv6, но не отражают то, какой протокол фактически используется в конфигурациях, имеющих как IPv6, так и IPv4 адреса. Если рассматривать пользователей предпочитающих IPv6 в системах с двойным стеком, то доля IPv6 в Азиатско-Тихоокеанском регионе составляет 47%, а во всём мире - 36%.
Данные получены на основе ежедневного сбора статистики о примерно 25 млн пользователях. Информация собирается в сотрудничестве с Google и Comcast путём размещения проверочных объявлений в рекламных сетях. При проверке предоставляется три варианта URL для загрузки контента - в первом используется хост, доступный только по IPv4, во втором - только по IPv6, а в третьем - IPv4 и IPv6. На основе запроса данных URL делается вывод о поддержке клиентом IPv6. Если при обращению к хосту, доступному одновременно по IPv4 и IPv6 используется IPv6, поддержка данного протокола у клиента считается предпочтительной.
Исследователи из компании ARMO продемонстрировали возможность создания руткитов, не использующих специфичные системные вызовы для выполнения типовых операций, таких как чтение/запись файлов и приём команд от внешнего сервера. Вместо системных вызовов для выполнения сетевых и файловых операций предложено использовать интерфейс асинхронного ввода/вывода io_uring, поддерживаемый начиная с ядра Linux 5.1.
Суть метода в том, что вместо отдельных системных вызовов для доступа к файлам и совершения сетевых операций (read/write, recv/send/connect/bind/listen) можно использовать общие системные вызовы io_uring (io_uring_enter, io_uring_setup, io_uring_register и т.п.), которые не анализируются типовыми инструментариями для выявления вредоносной активности. Интерфейс io_uring поддерживает около 60 различных операций. В разработке находится возможность, позволяющая запускать новые процессы через io_uring.
Для демонстрации работы метода подготовлен прототип руткита
Curing, выполняющий такие действия, как приём команд от внешнего сервера и передача/изменение файлов. В демонстрации использовалась отправка запроса на TCP-порт 8888 внешнего хоста и передача содержимого файла "/etc/shadow". Подразумевается, что после успешной компрометации системы и получения прав root, атакующий устанавливает руткит для закрепления своего присутствия на взломанной системе.
В проведённом эксперименте активность руткита Curing оказалась не замечена инструментами мониторинга Falco и Tetragon, применяемыми для определение связанных с безопасностью аномалий на хостах и в контейнерах (поддерживается интеграция с инфраструктурой на базе Kubernetes). Указанные инструменты используют перехват системных вызовов для анализа таких событий, как запуск процессов, сетевая активность и работа с файлами, но не учитывают возможность использования подсистемы io_uring для подобных операций. Большая часть доступных для Linux коммерческих систем обнаружения и реагирования на инциденты с безопасностью также основывается на перехвате системных вызовов.
Для исключения обхода инструментов отслеживания сетевой и файловой активности, вместо перехвата системных вызовов рекомендовано использовать механизм KRSI (Kernel Runtime Security Instrumentation), появившийся в ядре Linux 5.7 и позволяющий прикреплять BPF-программы к любым LSM-хукам. Например, KRSI на уровне LSM-хуков даёт возможность отслеживать операции с файлами, сетевой доступ и запуск процессов, независимо от того, инициированы данные операции через специфичные системные вызовы или через io_uring.
Ранее подсистема io_uring была объектом критики из-за регулярно всплывающих серьёзных уязвимостей. В ответ на пожелания пользователей, желающих получить простой инструмент для отключения io_uring без пересборки ядра, в ядро Linux 6.6 был добавлен sysctl io_uring_disabled. Компания Google по умолчанию отключила io_uring в ChromeOS, Android и на своих серверах, пояснив, что плачевная ситуация с безопасностью в io_uring перевешивает достоинства применения io_uring для повышения производительности.
Компания AMD опубликовала исходный код GIM (GPU-IOV Module), модуля для ядра Linux c реализацией возможности аппаратной виртуализации GPU на устройствах AMD, поддерживающих технологию SR-IOV (Single Root I/O Virtualization). SR-IOV позволяет распределять ресурсы одного физического устройства между несколькими виртуальными машинами. При помощи GIM виртуальные машины напрямую могут получить доступ к ресурсам GPU, что позволяет значительно поднять производительность, благодаря исключению лишних прослоек, обеспечивая при этом необходимый уровень изоляции. Код GIM написан на языке Си и открыт под лицензией MIT. Готовые пакеты опубликованы для Ubuntu 22.04.
В настоящее время драйвер может работать только с продуктами AMD, поддерживающими механизм разделения ресурсов MxGPU, основанный на стандарте SR-IOV. Заявлена поддержка ускорителей серии AMD Instinct MI300X, предназначенных для выполнения высокопроизводительных вычислений и решения задач машинного обучения в дата-центрах. Отдельно разработчики GIM упомянули планы по адаптации модуля для использования с GPU, применяемых в потребительских дискретных видеокартах.
Модуль совместим с системами виртуализации на базе гипервизора KVM и предоставляет такие возможности, как инициализация GPU-IOV, настройка и включение виртуальных функций, планирование распределения ресурсов GPU между виртуальными машинами, определение зависаний, выполнение сброса состояния на уровне виртуальной функции (FLR, Function Level Reset), согласование взаимодействия между физическим устройством (PF) и виртуальными функциями (VF) SR-IOV.
Представлен релиз проекта QEMU 10.0.0. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к аппаратной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM в Linux, или модуля NVMM в NetBSD.
Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. При подготовке версии 10.0 внесено более 2800 изменений от 211 разработчиков.
В драйвер virtio-scsi, предоставляющий виртуальный SCSI-контроллер (SCSI Host Bus Adapter) для виртуальных машин, добавлена поддержка многоуровневой системы очередей (multiqueue), позволяющей разделить очереди для разных блочных устройств для обеспечения многопоточного доступа на многоядерных системах (разные очереди одного накопителя могут обрабатываться разными потоками ввода/вывода). По сравнению с драйвером виртуального блочного устройства (virtio-blk) виртуальный SCSI-контроллер немного отстаёт по производительности, но позволяет использовать более 28 дисков.
В VFIO (Virtual Function I/O) улучшена поддержка проброса IGD (Integrated Graphics Device) для интегрированных GPU, используемых в 11 (Rocket Lake) и 12 (Alder Lake) поколениях процессоров Intel. Добавлена поддержка старых GPU ATI (x550). Реализована базовая поддержка PCI PM (Power Management).
Значительно переработана и расширена документация к протоколу QMP (QEMU Machine Protocol), позволяющему приложениям управлять QEMU.
Добавлен новый режим Live-миграции "cpr-transfer" (CheckPoint and Restart), позволяющий переместить гостевую систему в новый экземпляр QEMU, запущенный на том же хосте. Режим минимизирует время приостановки за счёт того, что память гостевой системы отражается в виртуальное адресное пространство нового QEMU без копирования содержимого.
Добавлены графические устройства 'apple-gfx-pci' и 'apple-gfx-mmio', использующие фреймворк ParavirtualizedGraphics, предоставляемый в macOS для аппаратного ускорения графики в гостевых системах. Первый драйвер предназначен для использования на устройствах x86-64, а второй - ARM64.
В эмуляторе архитектуры x86 реализована поддержка моделей процессоров Intel Xeon Clearwater Forest и Sierra Forest v2. Ускорена эмуляция инструкций для манипуляции строковыми данными.
В эмуляторе архитектуры ARM реализована поддержка плат NPCM8445 Evaluation и i.MX 8M Plus EVK. Добавлена эмуляция расширений FEAT_AFP, FEAT_RPRES и FEAT_XS, а также физических и виртуальных таймеров EL2. Объявлена устаревшей поддержка CPU Arm PXA2xx и эмуляция инструкций iwMMXt.
В эмуляторе архитектуры RISC-V реализована эмуляция плат Microblaze V, CPU Ascalon и CPU RV64 Xiangshan Nanhu. Добавлена поддержка расширений архитектуры набора команд 'svukte', 'ssstateen', 'smrnmi', 'smdbltrp'/'ssdbltrp', 'supm', 'sspm', а так же тегов трансляции IOMMU и устройств riscv-iommu-sys.
В эмуляторе архитектуры HPPA обеспечена эмуляция плат Diva GSP BMC.
До версии 18 обновлена прошивка SeaBIOS-hppa. Повышена скорость трансляции. Улучшен код для сброса виртуального CPU. На 64-разрядных системах обеспечена эмуляция конфигураций с размером памяти до 256 ГБ.
В эмуляторе архитектуры LoongArch появилась поддержка горячего подключения CPU. Реализован паравиртуализированный IPI (inter-processor interrupt). Обеспечено отслеживание времени ожидания предоставления ресурсов от гипервизора KVM. Добавлена поддержка виртуальной маршрутизации внешних прерываний (extioi).
В эмуляторе архитектуры s390x добавлена поддержка 17 поколения CPU мэйнфреймов и реализована поддержка virtio-mem. Для повышения производительности добавлена возможность взаимодействия с PCI-устройствами в обход IOMMU.