После 6 месяцев разработки представлен первый предварительный выпуск композитного сервера Xfwl4, использующего протокол Wayland. Xfwl4 написан на языке Rust с использованием библиотеки Smithay. В качестве причины создания нового композитного сервера упоминается неудачная попытка реализации одновременной поддержки X11 и Wayland в существующей кодовой базе оконного менеджера xfwm4, который изначально был спроектирован с учётом тесной интеграции протокола X11, что затруднило отделение общей логики управления окнами от специфики X11.
Xfwl4 развивается с нуля и не пересекается с кодовой базой оконного менеджера xfwm4, но нацелен на реализацию всей имеющейся в xfwm4 функциональности, вплоть до возможности использования существующих настроек xfconf и интерфейса конфигурации с учётом специфики использования Wayland вместо X11. Планируется довести функциональность Xfwl4 до уровня, при котором пользователь сможет переключаться между Xfwl4 и xfwm4, не замечая различий.
Из расширенных функций Xfwl4 отмечается существенная переработка логики запуска сеансов, реализация Wayland-протокола xdg-session-management и поддержка запуска X11-приложений при помощи XWayland. Код Xfwl4 распространяется под лицензией GPLv3 (для сравнения код оконного менеджера xfwm4 распространяется под GPLv2).
Xfwl4 построен поверх библиотеки Smithay, предоставляющей реализацию почти всех официальных расширений протокола Wayland, а также протоколов wlroots и KDE. Smithay применяется в таких проектах, как Cosmic и Niri. По аналогии с wlroots библиотека Smithay предоставляет высокоуровневые абстракции, но при этом позволяет вмешиваться в работу низкоуровневых систем и адаптировать под свои потребности методы вывода графики, работу с устройствами ввода, поведение Wayland-протоколов и обработку задач, связанных с построением рабочего стола. Язык Rust выбран, как затрудняющий совершение ошибок при работе с памятью и снижающий вероятность проблем, приводящих к аварийному завершению работы.
От проекта по постепенному добавлению поддержки Wayland в xfwm4 решено отказаться из-за опасений снижения стабильности и появления новых ошибок в процессе рефакторинга. Проще оказалось оставить xfwm4 завязанным на X11 и параллельно развивать новый композитный сервер для Wayland. В качестве причин создания нового сервера также упоминается невозможность адаптировать некоторые концепции управления окнами X11 для Wayland и необходимость использования языка Си и библиотеки wlroots в случае продолжения развития xfwm4, несмотря на наличие лучших альтернатив.
Первый выпуск Xfwl4 имеет уровень качества альфа-версии и реализует не всю задуманную функциональность. Из возможностей, пока недоступных в первом тестовом выпуске:
Диалог настройки мыши и тачпада.
Диалог настройки виртуальных рабочих столов.
Определение областей по краям экрана, в которых исключается размещение окон.
Сворачивание окна с отображением пиктограммы и меню, показываемое при клике средней кнопкой мыши.
Показ эскизов с содержимым виртуальных рабочих столов в панели.
Комбинации клавиш для переключения между приложениями и окнами приложений.
Восстановления прошлого местоположения окон после перезапуска приложений.
Представлен релиз программы для обработки цифровых фотографий Darktable 5.6.0. Darktable специализируется на недеструктивной работе с raw-изображениями и может использоваться в качестве свободной альтернативы Adobe Lightroom. Программа позволяет вести базу фотографий, осуществлять наглядную навигацию по имеющимся снимкам, а также корректировать искажения, устранять шумы, управлять цветом и улучшать качество фотографии, сохраняя при этом исходный снимок и всю историю операций с ним. Код проекта написан на языке Си и распространяется под лицензией GPLv3. Интерфейс построен с использованием библиотеки GTK. Бинарные сборки подготовлены для Linux (AppImage, в процессе подготовки flatpak и snap), Windows и macOS.
Добавлена AI-подсистема, позволяющая использовать локально выполняемые AI-модели для совершения различных операций с фотографиями. Для выполнения моделей задействован runtime ONNX. Связанная с AI функциональность доступна при сборке с флагом "-DUSE_AI=ON" и по умолчанию отключена в настройках. При необходимости поддержка AI может быть активирована без перезапуска приложения. Загрузка и выбор моделей осуществляется из отдельного репозитория, а для управления в настройках добавлена вкладка "AI". Дополнительно поставляются скрипты для Linux и Windows, осуществляющие настройку аппаратного ускорения для AI в системах с GPU NVIDIA, AMD и Intel, и устанавливающие необходимые для этого runtime-компоненты.
Добавлен AI-инструмент "Маска объекта" (AI Object Mask) для выделения объектов с возможностью интерактивного уточнения границы по указанным пользователем точкам переднего плана и фона. Имеется опциональный режим чистки краёв с учётом границ объектов. Для сегментации объекта используются модели SAM2.1 и SegNext. Созданная маска может быть экспортирована в форме PNG-изображения.
Добавлен AI-модуль "Умное восстановление" (Neural Restore) для улучшения качества изображения. Поддерживается подавление шумов и воссоздание деталей при увеличении масштаба. По умолчанию для обычного подавления шумов задействована модель NIND UNet, для подавления шумов в raw-изображениях - RawNIND UtNet2, а для повышения разрешения - RealPLKSR. В качестве альтернитивы в репозитории доступны модели NAFNet и BSRGAN.
Результат raw-шумоподавления сохраняется в формате DNG (Digital Negative), а обычное шумоподавление - в TIFF с ICC-профилем. Возможно интерактивное изменение интенсивности шумоподавления, сравнение результата с оригиналом и автоматический повторный экспорт обработанных изображений в библиотеку с сохранением группировки и тегов.
Добавлен модуль "Цветовая гармония" (Color Harmonizer) для выполнения цветокоррекции в цветовом пространстве UCS и изменения насыщенности целевых цветов. Имеется возможность защиты от искажения нейтральных цветов и сглаживания резких переходов с помощью фильтра Гаусса. Доступны реализации модуля, выполняемые как на CPU, так и на GPU с использованием OpenCL.
Добавлена поддержка экспорта изображений в формате HEIF с выбором режимов сжатия с потерей или без потери качества, глубины цвета (8/10/12 бит) и всех доступных опций субдискретизации цветности.
В окружениях на базе протокола Wayland реализована подстановка собственной пиктограммы Darktable вместо типовой заглушки. Реализовано декорирование окон на стороне сервера (SSD) для композитных серверов, поддерживающих такую возможность. В противном случае, например, в окружениях с GNOME Mutter, продолжает использоваться декорирование окон на стороне клиента (CSD).
Добавлен показываемый при первом запуске экран приветствия, позволяющий сразу выставить наиболее важные настройки.
Добавлен комбинированный цветоскоп, сочетающий волновую диаграмму (waveform) и вектороскоп (vectorscope) для оценки разом яркости и цветности.
Разрешено изменение режима работы пипетки (точечное или усредненное определение цвета) прямо на холсте через нажатие Ctrl+Click.
Добавлена опция для автоцентрирования ленты снимков.
В режиме lighttable добавлена поддержка отрисовки и кэширования миниатюр и результатов полноэкранного предпросмотра изображений с разрешением 6K и 8K. Разрешение предпросмотра в режиме darkroom увеличено с 720x450 до 1440x900.
Добавлена поддержка типовых управляющих жестов на тачпаде, таких как масштабирование щипком и панорамирование двумя пальцами.
Добавлен компактный режим отображения виджетов на панелях (по умолчанию отключён).
В интерфейсе задействованы системные курсоры мыши.
В темах оформления появилась возможность разной стилизации развёрнутых и свёрнутые модулей.
Осуществлён переход на расчёт радиуса резкости по центральной области, охватывающей 60% кадра, так как по краям линзы обычно замыливают изображение.
В модуле калибровки цвета калибровочная рамка теперь инициализируется по текущим границам и при изменении масштаба остаётся видимой.
Добавлена возможность создания нового рабочего пространства, используя текущее рабочее пространство в качестве шаблона для переноса настроек. Разрешено назначение рабочего пространства по умолчанию, чтобы не показывать при запуске диалог выбора рабочего пространства.
Повышена производительность фильтров на базе OpenCL, а также модулей для размытия и перекрытия содержимого, использующих OpenCL.
После 6 месяцев разработки представлен выпуск проекта postmarketOS 26.06, развивающего дистрибутив Linux для мобильных устройств, базирующийся на пакетной базе Alpine Linux, стандартной Си-библиотеке Musl и наборе утилит BusyBox. Целью проекта является предоставление Linux-дистрибутива для смартфонов и планшетов, не зависящего от жизненного цикла поддержки официальных прошивок и не привязанного к типовым решениям основных игроков индустрии. Сборки подготовлены для 65 устройств (32 - community и 33 - testing), включая PINE64 PinePhone Pro, Purism Librem 5, OnePlus 6, Fairphone 5, Google Nexus 10, Google Pixel 3a, Nokia N900, Lenovo A60xx, ASUS MeMo Pad 7, а также различные модели Samsung Galaxy и Xiaomi. Ограниченная экспериментальная поддержка предоставлена для более чем 600 устройств.
Окружение postmarketOS унифицировано и выносит все специфичные для конкретных устройств компоненты в отдельный пакет. Все остальные пакеты идентичны для всех устройств и основаны на пакетах из дистрибутива Alpine Linux. В сборках по возможности используется ванильное ядро Linux, а если это невозможно, то ядра из прошивок, подготовленных производителями устройств. В качестве основных пользовательских оболочек предлагаютсяKDE Plasma Mobile, Phosh, GNOME Mobile и Sxmo, но имеется возможность установки и других окружений, включая MATE, COSMIC и Xfce.
В новом выпуске:
Добавлена поддержка устройств Google Asurada Chromebook,
Google Cherry Chromebook, Google Corsola Chromebook, Radxa Dragon Q6A и PINE64 PineNote. Из-за проблем с сопровождением или поставки устаревшего ядра в категорию "testing" перемещены сборки для ASUS MeMO Pad 7, Microsoft Surface RT, NVIDIA Tegra ARMv7, Samsung Chromebook и
Xiaomi Mi Pad 5 Pro.
Оболочка KDE Plasma Mobile обновлена до версии 6.6.5 (ранее поставлялась версия 6.5.6).
Окружение Phosh, основанное на технологиях GNOME и развиваемое компанией Purism для смартфона Librem 5, обновлено до версии 0.55 (ранее использовался выпуск 0.51). В состав конфигуратора Phosh Mobile Settings перенесены некоторые специфичные настройки postmarketOS, для изменения которых ранее предлагались отдельные приложения. Осуществлён переход с собственного дисплейного менеджера tinydm на рекомендуемые проектом Phosh экран входа в систему phrog и фоновый процесс greetd.
Графическая оболочка Sxmo (Simple X Mobile), основанная на композитном менеджере Sway и придерживающаяся Unix-философии, продолжает поставляться в версии 1.18.1.
Компоненты GNOME обновлены до ветки GNOME 50, но пользовательское окружение GNOME Mobile, в котором задействована редакция оболочки GNOME Shell, адаптированная для использования на смартфонах и планшетах с сенсорным экраном, продолжает оставаться на ветке GNOME 48.
Возобновлена возможность установки пользовательского интерфейса Plasma Bigscreen, предназначенного для использования на мультимедийных устройствах, подключаемых к телевизорам и проекторам. Окружение оптимизировано для работы с большими экранами и управления без клавиатуры c использованием пультов дистанционного управления или голосового помощника.
При установке среды рабочего стола KDE Plasma в окружениях с systemd по умолчанию задействован менеджер входа plasma-login-manager вместо sddm. Поддержка работы KDE Plasma в окружениях на базе системы инициализации OpenRC осталась без сопровождения, не рекомендована к применению и будет удалена в одном из следующих выпусков, если не найдётся желающий взять сопровождение данной функциональности в свои руки.
Переделана загрузочная заставка, для которой вместо pbsplash задействован пакет Plymouth. Добавлена анимация с постепенным затуханием и появлением отдельных сегментов логотипа. При нажатии клавиши ESC или кнопки Power во время показа заставки включается режим показа загрузочного лога.
На устройствах с вибромотором реализовано использование вибросигнала для индикации загрузки.
Пакетная база синхронизирована с Alpine Linux 3.24. Системный менеджер systemd обновлён до версии 261 (ранее поставлялся выпуск 257).
По умолчанию вместо утилиты doas для выполнения команд с повышенными привилегиями задействован пакет sudo-rs, написанный на Rust.
Опубликован выпуск композитного менеджера miracle-wm 0.10, использующего протокол Wayland и компоненты для построения композитных менеджеров Mir. Miracle-wm поддерживает мозаичную (tiling) компоновку окон, схожую с аналогичной в проектах i3 и Sway. В качестве панели может применяться Waybar. Код проекта написан на языке C++ и распространяется под лицензией GPLv3. Готовые сборки сформированы в формате snap, а также в пакетах rpm и deb для Fedora и Ubuntu.
Целью miracle-wm является создание композитного сервера, применяющего мозаичное управление окнами, но более функционального и стильного, чем такие продукты, как Swayfx. При этом проект позволяет использовать и классические приёмы работы с плавающими окнами, например, можно размещать отдельные окна поверх мозаичной сетки или закреплять окна к определённому месту на рабочем столе. Поддерживается виртуальные рабочие столы с возможностью выставления для каждого рабочего стола своего режима работы с окнами по умолчанию (мозаичная компоновка или плавающие окна).
Предполагается, что miracle-wm может оказаться полезным пользователям, которые отдают предпочтение мозаичной компоновке, но желают получить визуальные эффекты и более яркое графическое оформление с плавными переходами и цветами. Конфигурация определяется в формате YAML. Для установки miracle-wm можно использовать команду "sudo snap install miracle-wm --classic".
Основные новшества:
В системе плагинов реализована возможность применения шейдеров в привязке к отдельным окнам. В качестве примера подготовлен плагин focus-blur-plugin, размывающий содержимое всех окон, за исключением активного окна.
В плагинах добавлена поддержка создания фильтров вывода, использующих шейдеры. Данная возможность задействована в плагине night-light-plugin, добавляющем оранжевый оттенок в дневное время.
Задействованы Wayland-протоколы
ext-data-control-manager-v1 для управления буфером обмена. Поддержка данного протокола обеспечила возможность использования утилиты wl-copy для помещения данных в буфер обмена.
Реализован интерфейс (на базе GTK4) для вывода информации об ошибках в конфигурации. Сведения об ошибках передаются через IPC-сокет.
Реализован интерфейс для показа отладочной информации о позиционировании окон и областях ввода. Интерфейс написан на GTK4 и активируется командой "miraclemsg debug overlay".
Обеспечена автоматическая загрузка плагинов, собранных в формате WebAssembly и размещённых в каталоге ~/.config/miracle-wm/plugins с расширением ".wasm".
Опубликован выпуск проекта XLibre 25.2.0, развивающего форк X.Org Server. Первый выпуск ветки XLibre XServer 25.2.0 позиционируется как имеющий качество бета-версии и предназначен для тестирования и выявления возможных недоработок. Следом планируют выпустить ещё несколько бета-версий, после чего объявить ветку стабильной.
XLibre применяется по умолчанию в дистрибутивах Artix Linux, GhostBSD, OpenMandriva и Vendefoul Wolf. Для Arch Linux, Debian, DragonFly BSD, Fedora, FreeBSD, Gentoo Linux, GNU Guix, Linux Mint, MX Linux, RHEL, Slackware, Ubuntu и Void Linux сообществом поддерживаются пакеты для замены X.Org Server на XLibre. Причиной создания форка было несогласие с политикой сопровождающих X.Org, ведущей к стагнации разработки.
Проведён рефакторинг внутренней архитектуры механизма 2D-акселерации glamor_egl, использующего OpenGL для ускорения 2D-операций. Из glamor_egl выделен xf86-специфичный код, а реализация инфраструктуры DRI3 (Direct Rendering Infrastructure) переделана для работы без библиотеки libgbm (Generic Buffer Management), что позволило обеспечить работу GLAMOR с проприетарными драйверами NVIDIA, начиная с ветки 470. Драйверы NVIDIA 470+ теперь могут применяться для GLX и DRI3, инициализации EGL и создания контекста OpenGL.
Переделана реализация упрощённого X-сервера KDrive, в котором появилась поддержка работы с несколькими экранами, инфраструктуры DRI3, архитектуры 2D-ускорения GLAMOR, механизма ускорения воспроизведения видео X-Video, автоопределения системы ввода evdev, многопоточного ввода и переключения виртуальных терминалов.
В X-сервер Xfbdev, использующий фреймбуфер, добавлена поддержка X-Video, GLX и DRI3, которые реализованы через архитектуру 2D-ускорения GLAMOR. Добавлены новые опции командной строки для настройки
Xfbdev.
В X-сервер Xvfb (X virtual framebuffer) добавлена поддержка DRI3 и
GLX, реализованная через GLAMOR.
DDX-драйвер "modesetting", работающий поверх интерфейса KMS (Kernel Mode Setting), переведён на использование GBM Bo Wrapper (BufferObject). Налажен поворот и отражение курсора, добавлена поддержка дополнительных размеров курсора.
Реализация DRI3 теперь возвращает номер версии 1.4 и очищает кэш модификаторов при вызове метода closeScreen.
Добавлены DRM-драйверы (Direct Rendering Manager) для Coreboot, VESA и EFI. DDX-драйвер для GPU Intel ограничен использованием для оборудования до поколения Gen3.
После трёх месяцев разработки доступен релиз системного менеджера systemd 261. Ключевые изменения: подготовка к поддержке API для верификации возраста, поддержка подсистем Kexec Handover и Live Update Orchestration для перезапуска без потери состояния, подсистема IMDS (Instance Metadata Service), функциональность для защиты загрузки на системах без физического TPM (Trusted Platform Module), компонент systemd-sysinstall с реализацией инсталлятора.
Добавлен новый компонент systemd-sysinstall с реализацией простого инсталлятора операционной системы, которым можно управлять из командной строки или через интерактивный текстовый интерфейс. Функциональность systemd-sysinstall сформирована из уже существующих возможностей systemd: для настройки дисковых разделов задействован systemd-repart, для установки ядра и генерации загрузочного меню - команда "bootctl link", для установки загрузчика systemd-boot - команда "bootctl install", для начального конфигурирования устанавливаемой системы (например, выбор локали и раскладки клавиатуры) - systemd-creds.
В рамках подготовки к реализации требований законов об интеграции в ОС API для проверки возраста в БД userdb добавлено поле birthDate с датой рождения пользователя. Добавленное поле сможет использоваться в развиваемом для дистрибутивов портале xdg-desktop-portal и сервисе AccountsService для выдачи приложениям сведений о возрастной категории пользователя через D-Bus интерфейс "org.freedesktop.AgeVerification1" или "org.freedesktop.ParentalControls". Для установки возраста в утилиту homectl добавлена опция "--birth-date'.
В обработчик PID1 добавлена поддержка подсистем Linux-ядра LUO (Live Update Orchestration) и KHO (Kexec Handover), позволяющих полноценно перезагрузить и обновить ядро без остановки работы и не теряя состояние системы, устройств и процессов. KHO предоставляет возможности для запуска нового ядра из старого без потери состояния системы, а LUO реализует сохранение состояния устройств и оперативной памяти, а также обеспечивает непрерывность операций, связанных с DMA и обработкой прерываний.
В systemd для системных и пользовательских unit-ов реализована возможность сохранения файловых дескрипторов перед вызовом kexec и их восстановления после перезагрузки ядра через kexec. В unit-ах также можно создавать собственные сеансы LUO, сохраняемые и восстанавливаемые при выполнении kexec. Для включения сохранения состояния хранилища файловых дескрипторов следует использовать настройку 'FileDescriptorStorePreserve=yes'.
Реализована подсистема systemd-imdsd, предоставляющая API на базе Varlink IPC для доступа локальных программ к сервисам IMDS (Instance Metadata Service), предоставляемым разными провайдерами облачных систем. IMDS даёт возможность виртуальным машинам получать информацию об облачном окружении, например, можно получить сведения о сетевой конфигурации, географическом расположении узла, типе CPU и размере хранилища. В systemd-imdsd предоставляется как низкоуровневый API для доступа к отдельным полям, так и высокоуровневый интерфейс для запроса по типовым ключам, сопоставленными с ключами, специфичными для отдельных облачных платформ. Для взаимодействия с systemd-imdsd добавлена утилита systemd-imds, позволяющая импортировать поля из IMDS в локальную систему учётных записей.
Для распознавания облачных платформ по информации из SMBIOS и определения доступной на текущем узле функциональности IMDS добавлена новая БД hwdb.d/40-imds.hwdb. Реализовано распознавание облачных платформ Amazon EC2, Microsoft Azure, Google Compute Engine, Hetzner, Oracle Cloud, Scaleway, Tencent Cloud, Alibaba ECS и Vultr. Доступен обработчик systemd-imds-generator для автоматической подстановки сервиса для получения данных через IMDS в случае выявления работы под управлением поддерживаемой облачной платформы. Возможно создавать универсальные образы, поддерживающие использование IMDS при запуске в облачных окружениях, но способные работать и без IMDS.
В systemd-stub реализована функциональность "boot secret", позволяющая сформировать ключ на основе EFI-переменной, хранимой в недоступной для операционной системы области и инициализированной случайным значением. В initrd ключ передаётся через файл /.extra/boot-secret. Представленная возможность может потребоваться для получения специфичного для системы случайного ключа для верификации процесса загрузки или шифрования на системах без аппаратного TPM (Trusted Platform Module).
Добавлен сервис systemd-tpm2-swtpm.service для запуска эмулятора TPM-чипов swtpm (Software TPM Emulator), который можно использовать для автоматического отката на программную реализацию TPM для защищённой загрузки на системах без аппаратного TPM. Программный TPM работает в пользовательском пространстве и не позволяет добиться уровня защиты как у аппаратного TPM, но в некоторых ситуациях его применение оправдано, по сравнению с работой без TPM. Например, программный TPM может получить ключ шифрования разделов при помощи новой функциональности "boot secret" и использовать для хранения своего состояния раздел ESP (EFI System Partition) на диске. Для автоматического включения программного TPM предложен параметр командой строки ядра systemd.tpm2_software_fallback.
Объявлен стабильным и помещён в /usr/bin/ компонент systemd-sysupdate, предназначенный для автоматического определения, загрузки и установки обновлений с использованием атомарного механизма замены разделов, файлов или каталогов (используются два независимых раздела/файла/каталога, на одном из которых находится текущий работающий ресурс, а на другом устанавливается очередное обновление, после чего разделы/файлы/каталоги меняются местами).
В systemd-resolved реализована возможность переопределения или указания новых DNS-записей через размещение файлов в формате JSON в каталогах systemd/resolve/static.d/. В отличие от /etc/hosts в новых файлах можно не только привязывать IP-адреса к именам хостов, но и определять DNS-записи, отличные от "A" и "AAAA". Кроме того, в systemd-resolved добавлены настройки размера DNS-кэша: 'DNSCacheSize', 'MulticastDNSCacheSize' и 'LLMNRCacheSize'.
Добавлена утилита 'storagectl' для инспектирования устройств хранения и управления подключением блочных устройств и файловых систем.
В рамках инициативы по сокращению зависимостей у libsystemd реализована динамическая загрузка библиотек libgnutls, libmicrohttpd, libcurl, libcrypto, libssl, libfdisk и libcryptsetup
при помощи вызова dlopen() в ситуациях, когда их функции действительно необходимы.
В systemd-tmpfiles добавлен флаг "--inline", позволяющий выставлять директивы в командной строке без создания файлов конфигурации в tmpfiles.d/ и без отправки настроек через STDIN. Добавлен новый тип директив 'k/K' для выставления capabilities. Добавлен файл конфигурации tmpfiles.d/root.conf, выставляющий права доступа 0555 (-r-xr-xr-x) к корневой директории (/) для защиты от указания неверных прав при динамическом формировании корневой ФС.
В утилите bootctl обеспечено сохранение резервной копии загрузчика systemd-boot и прописывании старой версии в UEFI в качестве запасного варианта загрузки.
В systemd-vmspawn добавлена поддержка прямой загрузки ядра без использования прошивки UEFI. Реализована опция "--firmware-features" для выборочного включения или выключения отдельных возможностей прошивок. Добавлен режим "--console=headless" для запуска виртуальной машины без консоли и экрана. Добавлена опция "--image-disk-type" для выбора применяемого в VM типа блочного хранилища (virtio-blk, virtio-scsi, nvme, scsi-cd). Добавлена опция "--coco" (Confidential Computing) для включения режима шифрования памяти виртуальных машин с использованием технологии AMD SEV-SNP.
В systemd-hostnamed и /etc/machine-info добавлена поддержка прикрепления к текущей системе произвольных тегов, используя параметр "Tags". Выставленные теги затем могут применяться для выборочного применения настроек с проверкой через выражение ConditionMachineTag.
Добавлены настройки EventLoopRateLimitIntervalSec и EventLoopRateLimitBurst, ограничивающие интенсивность цикла обработки событий в PID1 для высвобождения ресурсов CPU в случае зацикливания.
В сервисном менеджере реализована настройка MinimumUptimeSec для задания минимального времени работы системы (по умолчанию 15 секунд). Если до истечения этого времени инициировано завершение работы или перезагрузка, то на завершающей стадии добавляется соответствующая задержка.
Для unit-ов реализованы новые настройки CPUSetPartition для выставление типа раздела cpuset в cgroup ("root", "isolated", "member"), RestrictFileSystemAccess для разрешения запуска только исполняемых файлов, верифицированных по цифровой подписи при помощи dm-verity, и CPUPressureWatch/CPUPressureThresholdSec/IOPressureWatch/IOPressureThresholdSec для получения уведомлений о высокой нагрузке на CPU и ввод/вывод.
Расширен список метрик, выдаваемых утилитой systemd-report. Например, добавлены сведения о размере физической памяти и активных ядрах CPU, данные о содержимом полей SMBIOS и /etc/machine-info, информация о поддержке режима Confidential Computing и сведения о производителе чипов TPM2.
В systemd-oomd реализована возможность определения правил для отсеивания процессов при возникновения нехватки памяти в системе. Правила можно задавать в каталоге /etc/systemd/oomd/rules.d/ или в сервисных unit-ах через директиву OOMRule.
В systemd-socket-proxy добавлена поддержка протокола "PROXY", соответствующего первой версии протокола "haproxy".
В systemd-networkd реализован новый бэкенд sd-dhcp-relay для релеев DHCP. Объявлены устаревшими настройки в секции "[DHCPServer]" - BindToInterface, RelayTarget, RelayAgentCircuitId и RelayAgentRemoteId, вместо которых следует использовать параметр DHCPRelay в секции "[Network]" и серию новых настроек в секции [DHCPRelay] и в файле networkd.conf. Добавлена команда 'networkctl dhcp-lease INTERFACE' для сохранения дампа c информацией о привязке IP-адресов (DHCP lease).
В утилиту systemd-nspawn добавлена опция "--restrict-address-families", а в файлы .nspawn настройка RestrictAddressFamilies для ограничения используемых в контейнере семейств адресов сокетов. В будущих выпусках по умолчанию будут разрешены только семейства AF_INET, AF_INET6 и AF_UNIX.
Прекращена поддержка старого формата БД udev (версии 0.x). Обновление на лету с версий systemd до выпуска 247 больше не поддерживается.
При сборке с Си-библиотекой musl теперь требуется как минимум выпуск musl 1.2.6.
Дополнительно можно отметить релиз проекта liberated-systemd 261, развивающего форк systemd, избавленный от кода, который может использоваться для слежки за пользователями. В предложенном выпуске изменения сводятся к удалению кода, добавляющего в userdb поле birthDate с датой рождения пользователя, а в утилиту homectl опцию "--birth-date' для установки возраста.
Кент Оверстрит (Kent Overstreet) опубликовал выпуск файловой системы Bcachefs 1.38.6 и объявил об официальном снятии с проекта метки экспериментальной разработки. Последнее время число поступающих сообщений о проблемах сократилось, а выявляемые ошибки стали менее серьёзными и замысловатыми.
Выпуск охватывает два пакета: bcachefs-kernel-dkms с модулем ядра, собираемым при помощи системы DKMS (Dynamic Kernel Module Support), и bcachefs-tools с запускаемой в пространстве пользователя утилитой bcachefs, реализующей команды для создания (mkfs), монтирования, восстановления и проверки ФС. Пакеты собраны для Debian, Ubuntu, Arch Linux и ожидаются для Fedora, openSUSE и NixOS. DKMS-модуль поддерживает работу с ядрами Linux, начиная с 6.16.
Несмотря на непримечательный номер версии, обусловленный отсутствием изменений в дисковом формате, выпуск 1.38.6 включает ряд серьёзных оптимизаций производительности. В код для работы со структурами в формате btree, журналирования и обеспечения работы файловой системы внесено около 200 изменений, повышающих производительность. Логика подтверждения транзакций ужата в 4КБ машинного кода, добавлены оптимизации для исключения возникновения конкурирующих блокировок ("lock contention") при работе с btree, полностью избавлен от блокировок процесс сброса состояния журнала (journal flush).
На сервере с 48-ядерным CPU AMD в Bcachefs удалось добиться пропускной способности 16.5 GB/sec при запуске 48 клиентов dbench (для сравнения в XFS получен результат в 16 GB/sec). Подготовлены, но отложены до следующего релиза патчи, доводящие производительность в тестах dbench до 19 GB/sec (данные патчи требуют дополнительного тестирования или изменения дискового формата). При тестировании утилитой fio производительность Bcachefs составила 700 тысяч операций в секунду при выполнении операций случайной записи 4-килобайтными блоками (XFS демонстрирует в этом тесте миллион операций в секунду, при том, что XFS ограничивается ремапингом блоков, а Bcachefs обрабатывает полный цикл CoW (Copy-on-Write) с проверкой контрольных сумм и обновлением структуры btree).
Помимо оптимизаций в выпуске Bcachefs 1.38.6 реализована поддержка подключения до 255 устройств к одной ФС. В репозитории apt.bcachefs.org началось формирование пакетов для Ubuntu 26.04. Инфраструктура непрерывной интеграции и автоматизированного тестирования переведена на проверку сборок на базе DKMS. В следующие несколько месяцев планируется сосредоточить внимание на оптимизации работы файловой системы с несколькими устройствами хранения.
Кроме того, продолжается работа по переписыванию кода на языке Rust. Отмечается, что поддержка Rust в ядре достигла знакового момента - все значительные дистрибутивы при формировании пакетов с ядром 7.0 по умолчанию активировали настройку CONFIG_RUST для сборки ядра с поддержкой Rust. В проекте Bcachefs на Rust уже переписан набор утилит
bcachefs-tools, запускаемый в пространстве пользователя, включая реализацию API для работы со структурами btree. В следующем релизе планируется интегрировать подготовленные обвязки на Rust в DKMS-модуль ядра и начать переписывание базового кода Bcachefs. Предполагается, что использование Rust повысить гибкость, стабильность и удобство работы с кодом, сделает проект более интересным для молодых инженеров и позволит в будущем реализовать формальную верификацию надёжности.
Проектом Bcachefs развивается файловая система, нацеленная на сочетание расширенной функциональности, свойственной Btrfs и ZFS, и уровня производительности, надёжности и масштабируемости, характерного для XFS. Bcachefs поддерживает такие возможности, как включение в раздел нескольких устройств, многослойные раскладки накопителей (нижний слой с часто используемыми данными на базе быстрых SSD, а верхний слой с менее востребованными данными из жестких дисков), репликация (RAID 1/10), кэширование, прозрачное сжатие данных (режимы LZ4, gzip и ZSTD), срезы состояния (снапшоты), верификация целостности по контрольным суммам, коды коррекции ошибок, хранение информации в зашифрованном виде (используются ChaCha20 и Poly1305).
Из значительных нововведений, добавленных в Bcachefs за последние месяцы, упоминаются:
Механизм "reconcile" (rebalance_v2), который в отличие от режима "rebalance" позволяет выполнить ребалансировку не только данных (например, реплицирование нескольких копий на разные накопители), но и метаданных в ФС (например, для переноса метаданных после добавления в пул дополнительного накопителя). Reconcile применим для всех операций ввода/вывода, а не только для операций фонового копирования и сжатия. В reconcile автоматически учитываются изменения настроек устройств и сразу перереплицируются деградировавшие данные и метаданные.
Поддержка кодов коррекции ошибок, позволяющих восстанавливать повреждённые данные по аналогии с RAID 5/6. Реализация основана на кодировании Рида-Соломона, способном исправить до N ошибок в страйпе (stripe) при наличии N избыточных блоков. Обеспечено автоматическое восстановление деградировавших страйпов. Возможность применения кодов восстановления применима в конфигурациях с накопителями разного размера.
Состоялся выпуск интегрированной среды разработки Qt Creator 20, предназначенной для создания кроссплатформенных приложений с использованием библиотеки Qt. Поддерживается как разработка классических программ на языке C++, так и использование языка QML, в котором для определения сценариев используется JavaScript, а структура и параметры элементов интерфейса задаются CSS-подобными блоками. Готовые сборки сформированы для Linux, Windows и maсOS.
В состав включено дополнение с AI-агентом, понимающим кодовую базу и способным отвечать на вопросы о коде в форме чата и решать такие задачи, как анализ кода, редактирование файлов, запуск команд и инициирование сборки. Агент использует протокол ACP (Agent Client Protocol) и может использовать различные AI-провайдеры, а также интегрироваться с AI-ассистентами Claude Code, Codex, Gemini CLI и GitHub Copilot. Помимо этого реализовано дополнение с MCP-сервером (Model Context Protocol), предоставляющее AI-ассистентам информацию о текущем состоянии Qt Creator и позволяющее выполнять различные типы действий в среде разработки.
Добавлено дополнение "Zen Mode" (Tools > Zen Mode), скрывающее элементы интерфейса для фокусирования внимания на редактирование кода.
Обновлена модель кода для языка C++. Инструментарий Clangd/LLVM обновлён до версии 22.1 и собран с PGO-оптимизациями (profile-guided optimization).
Добавлена возможность сворачивания блоков препроцессора (#if, #ifdef, #ifndef), областей #pragma и многострочных комментариев в стиле C++.
По умолчанию включена подсветка семантики QML и возможности рефакторинга, предоставляемые LSP-сервером Qmlls (QML Language Server).
Добавлено дополнение GN для открытия и работы с проектами GN (Generate Ninja).
Расширены возможности для работы с проектами на базе CMake. Добавлены новые пресеты "qt" и "compiler".
Из редактора Android-манифестов выделены отдельные интерфейсы для редактирования пиктограмм, заставок и прав доступа.
Обеспечено автоматическое подключение к Linux-устройствам при инициировании развёртывания, запуска или сборки приложения на этом устройстве. Реализовано предоставление доступа к локальным каталогам с кодом для внешних Linux-устройств, на которых осуществляется сборка.
В интерфейс, отображающий список открытых файлов, добавлены операции для управления версиями. Состояние управления версиями отражено в диалоге со свойствами файла. В редакторе Git-коммитов реализован вывод предупреждений о действиях, которые могут привести к потере информации. Усложнено инициирование деструктивных операций в диалоге перебазирования (rebase).
Добавлен отдельный тип конфигурации запуска для подключения отладчика к серверу отладки приложения, запущенному на внешнем устройстве.
Компания Google опубликовала график перехода к обязательной регистрации разработчиков и приложений в сертифицированных сборках Android. Предполагается, что верификация разработчиков усложнит распространение вредоносных приложений с использованием мошеннических схем, предлагающих загрузить и установить apk-пакет в обход каталога Google Play Store.
Для верификации разработчик должен платно (25 долларов) зарегистрироваться в сервисе Android Developer Console, если он до этого не зарегистрирован в Google Play, и предоставить такие данные, как ФИО, адрес проживания, email, телефонный номер и фото документа, удостоверяющего личность. Для организаций потребуется подтверждение сайта и предоставление международного идентификатора юридических лиц (DUNS). После регистрации разработчик должен добавить свои приложения и подтвердить, что он является их автором, предоставив полные имена пакетов и ключи для цифровых подписей.
Для установки сторонних приложений, созданных разработчиками, не зарегистрировавшими пакеты в Google и не подтвердившими свои персональные данные, пользователям предоставлены три варианта действий: опция, допускающая установку приложений из вручную загруженных apk-пакетов после 24-часового периода ожидания; установка пакета при помощи утилиты "adb" (Android Debug Bridge) при подключении устройства к компьютеру; регистрация бесплатной учётной записи для энтузиастов и студентов, ограниченная 20 устройствами.
Этапы введения верификации приложений:
В ближайшие несколько месяцев будут предложены API
для автоматизации регистрации приложений в пакетном режиме и интеграции с системами непрерывной интеграции (CI) и развёртывания (CD) приложений. Также будет доступен API для проверки регистрации пакетов по их имени.
До конца июня на большинство Android-устройств будет автоматически установлен новый системный сервис для проверки регистрации разработчиков.
В июле будет реализован общедоступный API Android Developer ID Status для проверки регистрации пакетов, а также начнётся ограниченное тестирование API Android Developer Console для автоматизации регистрации приложений.
В августе будут предоставлен повсеместный доступ к API Android Developer Console, реализован новый тип бесплатных учётных записей для энтузиастов и студентов и внедрён метод установки сторонних приложений от неверифицированных разработчиков.
30 сентября 2026 года обязательная верификация разработчиков будет применена для Бразилии, Индонезии, Сингапура и Таиланда, и будет действовать при установке приложений из каталогов Google (Google Play), Honor (HONOR App Market), OPlus (OPPO App Market), Samsung (Galaxy Store), Transsion (Palm Store), vivo (V-Appstore) и Xiaomi (GetApps).
В 2027 году верификация будет распространена на другие страны и все приложения на сертифицированных устройствах Android.
Компания Mozilla представила список возможностей, развиваемых для будущих выпусков Firefox. Среди намеченных для добавления в Firefox изменений:
Режим экономии энергопотребления (Power Saving Mode), выявляющий вкладки, в которых выполняются ресурсоёмкие операции, и автоматически ограничивающий для них ресурсы с целью продления автономной работы от аккумулятора. Добавление в версии для Android интерфейса для отслеживания потребления ресурсов вкладками.
Режим "Smart Window" с отдельным пространством взаимодействия с AI, дополняющий имеющийся стандартный режим навигации в Web и режим приватного просмотра. Режим выходит за рамки уже предлагаемого в Firefox чатбота, встраиваемого боковую панель, и позволяет персонализировано взаимодействовать с AI-ассистентом и получать помощь во время просмотра web-страниц.
Возможность настройки комбинаций клавиш и привязки к действиям в браузере своих вариантов горячих клавиш.
Расширение встроенных в браузер возможностей для редактирования PDF-документов. Развиваются такие возможности, как разделение документа, объединение нескольких PDF-файлов и реорганизация содержимого.
Встраивание функциональности дополнения Multi-Account Containers с реализацией концепции контекстных контейнеров, которые можно использовать для гибкой изоляции произвольных сайтов. Контейнеры предоставляют возможность изоляции различных типов контента без создания отдельных профилей, что позволяет отделить между собой информацию отдельных групп страниц. Например, можно создать отдельные, изолированные друг от друга, области для персонального общения, работы, покупок и банковских операций или организовать одновременное использование разных учётных записей пользователя на одном сайте. В каждом контейнере используются отдельные хранилища для Cookies, Local Storage API, indexedDB, кэша и содержимого OriginAttributes. При использовании Mozilla VPN для каждого контейнера можно использовать разные VPN-серверы.
Добавление встроенного VPN в версии для мобильных устройств.
Режим Quick Answers, позволяющий не покидая браузер задать голосом вопрос и получить от AI ответ и подброку источников для более детального изучения темы.
Модернизация интерфейса Firefox. Новый дизайн Nova примечателен значительным скруглением кнопок вкладок и поля адресной строки, а также объединением в отдельно выделенные блоки верхней области с панелью вкладок и панелью навигации, боковой панели, области с содержимым web-страниц и элементов страницы, показываемой при открытии новой вкладки. Изменена цветовая палитра, в которой задействованы оттенки фиолетового цвета и более светлые тёплые тона. Реализован эффект свечения вокруг кнопки активной вкладки. Разные блоки выделены своими цветовыми оттенками с градиентом. Переработана отступы между всеми элементами интерфейса. В панели инструментов размещены отдельные кнопки для перехода в режим приватного просмотра и использования встроенного VPN. Упрощён доступ к группировке вкладок, вертикальным вкладкам и режиму просмотра бок о бок двух вкладок.
Средства для обмена коллекциями ссылок из закладок или сгруппированных вкладок.
Расширение возможностей адресной строки и поисковой панели для упрощения доступа к поиску.
Упрощение работы системы автодополнения ввода.
Открытие документов и произвольного содержимого в режиме картинка в картинке (Picture-in-Picture).
Добавление на страницу приватного просмотра кнопки для быстрой очистки Cookie.
Вывод предупреждений при открытии сайтов, для которых зафиксирован взлом, приведший к утечке информации и базы пользователей.
Расширение возможностей для предотвращения отслеживания пользователей с использованием косвенных методов идентификации.
Компания Valve представила выпуск операционной системы SteamOS 3.8.10, который отмечен как первый стабильный выпуск в ветке 3.8. Операционная система SteamOS поставляется в устройствах Steam Deck и с недавних пор используется в игровых консолях некоторых других производителей, таких как Lenovo Legion Go S и ASUS ROG Ally. Для установки следует выставить канал "Steam Deck Preview" в настройках обновления "Settings > System > System Update Channel". В прошлом энтузиастами развивались неофициальные сборки HoloISO и SteamFork, но они находятся в заброшенном состоянии.
Платформа основана на Arch Linux, использует для ускорения запуска игр композитный сервер Gamescope на базе протокола Wayland, поставляется с доступной только на чтение корневой ФС, применяет атомарный механизм установки обновлений, поддерживает пакеты Flatpak, использует мультимедийный сервер PipeWire и предоставляет два режима работы интерфейса (оболочка Steam и рабочий стол KDE Plasma).
Среди изменений:
Среда рабочего стола обновлена до выпуска KDE Plasma 6.4 (ранее была ветка 6.2) с использованием по умолчанию протокола Wayland (поддержку X11 можно вернуть через steamosctl).
Добавлена начальная поддержка игровой приставки Steam Machine.
Добавлена возможность указания в настройках пароля для десктоп-сеанса.
Реализована начальная поддержка запуска виртуальных машин с использованием драйверов virtio.
Предоставлена возможность использования планировщика задач LAVD (Latency-criticality Aware Virtual Deadline), который включается через "steamosctl set-cpu-scheduler lavd". LAVD учитывает актуальность снижения задержек для конкретных задач и использует информацию о ходе выполнения процессов при принятии решений о распределении ресурсов CPU.
Осуществлена синхронизация с пакетной базой Arch Linux. Ядро Linux обновлено до версии 6.16. Задействованы свежие версии графических драйверов.
В игровом режиме (Game Mode) улучшена поддержка создания скринкастов.
Улучшена поддержка механизма VRR (Variable Refresh Rate), адаптивно меняющего частоту обновления монитора для плавности и отсутствия разрывов во время игр и показа видео. Добавлена начальная поддержка HDMI VRR.
Улучшена поддержка игр, пытающихся открывать PDF-файлы во внешних просмотрщиках.
Улучшена поддержка некоторых игровых рулей с интерфейсом USB, а также комбинированных USB-устройств (например, накопитель + модем).
При использовании HDMI для вывода звука добавлена поддержка сведений о звуковых каналах и конфигурации динамиков.
Добавлена настройка для использования микрофона из Bluetooth-гарнитур.
Улучшена поддержка поворотных мониторов.
Улучшено масштабирование при выводе на телевизор.
Добавлена поддержка внешних HDR-экранов и дисплеев с VRR.
Предоставлена возможность раздельного выбора уровня масштабирования для разных экранов.
Параметры раскладки клавиатуры и языка синхронизированы между десктопом и игровым режимом.
Добавлена начальная поддержка спящего режима c сохранением памяти на диск (hibernation).
Улучшена совместимость с новыми платформами Intel и AMD.
Значительно расширены возможности управления видеопамятью для дискретных видеокарт.
Добавлена поддержка игровых контроллеров для приставок OneXPlayer X1 и Lenovo Legion Go 2.
Улучшена поддержка игровых контроллеров для приставок ASUS ROG Xbox Allym, OneXPlayer F1, GPD Win 5, GPD Win Mini, Anbernic Win600, OrangePi NEO и Lenovo Legion Go.
Добавлена начальная возможность ограничения уровня заряда для устройств Legion Go, Legion Go S и Legion Go 2.
Инженерный комитет IETF (Internet Engineering Task Force), занимающегося развитием протоколов и архитектуры сети Интернет, придал HTTP-методу QUERY статус "Предложенного стандарта" и опубликовал связанную с ним спецификацию RFC 10008. Метод QUERY по способу отправки данных на сервер повторяет метод POST, но отличается от него ориентацией не на запись данных и изменение состояния, а на формирование запросов на чтение.
По решаемым задачам новый метод близок к GET и позволят отправлять запросы, которые могут быть повторены или перезапущены без изменения состояния на сервере. Как и в методе POST параметры запроса в QUERY передаются не в URI, а в теле запроса. Подобный подход даёт возможность передавать большой объём параметров в запросе, превышающий лимит на размер параметров в методе GET (8000 байт).
Отправленные через метод QUERY параметры не отражаются в логах серверов, что с одной стороны затрудняет анализ запросов и диагностику проблем, но с другой стороны даёт возможность скрыть конфиденциальные данные из логов прокси-серверов.
Среди областей применения метода QUERY упоминается отправка запросов к Web API, выдающих результат в формате JSON или XML, или бэкендам, генерирующим контент. Для определения возможности использования нового метода при обращении к серверу предлагается использовать метод OPTIONS, а для определения поддерживаемых форматов метод HEAD:
> OPTIONS /contacts HTTP/1.1
> Host: example.org
HTTP/1.1 200 OK
Allow: GET, QUERY, OPTIONS, HEAD
В методе QUERY предусмотрена поддержка кэширования - прокси-серверы или обработчики могут сохранить результат выполнения запроса, присвоить ему URI для последующего обращения через метод GET и вернуть информацию о выдаче прокэшированной версии через заголовок "Last-Modified". Для проверки наличия изменений с прошлого запроса может применяться заголовок "If-Modified-Since". Для указания альтернативных вариантов выполнения запроса в ответе могут указываться заголовки "Content-Location" и "Location", отличия которых в том, что первый передаёт ссылку для получения результата ранее выполненного запроса, а второй предназначен для повторения запроса с теми же параметрами.
Помимо типа "application/x-www-form-urlencoded" для передачи параметров в запросах QUERY также могут напрямую использоваться расширенные форматы, такие как JSONPath (application/jsonpath), XSLT (application/xslt+xml) и SQL (application/sql). Поддерживаемые форматы возвращаются сервером в заголовке Accept-Query.
Компания Epic Games открыла код централизованной системы управления версиями Lore, которая ранее поставлялась в составе инструментария UEFN (Unreal Editor for Fortnite) под именем Unreal Revision Control. Система оптимизирована для использования при разработке проектов, сочетающих исходный код с очень большими нетекстовыми файлами. Например, Lore подходит для разработки компьютерных игр, при создании которых приходится совместно работать над такими ресурсами, как текстуры, 3D-модели и звуковые данные. Так как организация слияния разных версий нетекстовых файлов проблематична, совместная работа над ними организована на уровне выставления эксклюзивной блокировки, не позволяющей одновременно редактировать ресурс нескольким участникам. Код проекта написан на языке Rust и распространяется под лицензией MIT.
Система масштабируется для команд разного размера и может быть запущена как на компьютере разработчика через запуск одного исполняемого файла без внешних зависимостей, так и развёрнута в форме централизованного сервера для координации работы очень больших команд.
Lore состоит из двух систем - подсистема хранения данных и подсистема управления версиями, отвечающая за создание ревизий, веток и операции слияния.
Подсистема хранения формируется из двух хранилищ - постоянное (immutable) хранилище контента с адресацией по хэшам и хранилище в формате ключ/значение для меняющихся метаданных, таких как указатели на ветки. Для хранения данных на централизованном сервере и обеспечения отказоустойчивости могут подключаться различные бэкенды, например, для постоянного хранения можно использовать AWS S3, а для метаданных DynamoDB.
Для отражения состояния репозитория и гарантирования неизменности цепочки ревизий задействована структура "дерево Меркла" (Merkle Tree), в которой каждая ветка верифицирует все нижележащие ветки и узлы благодаря древовидному хешированию. Данные в репозитории адресуются по хэшам содержимого, что упрощает операции сравнения и контроль целостности. Хэш каждой ревизии охватывает связанное с ней состояние, хэши родительских ревизий и хэши данных. Большие файлы хранятся разделёнными на фрагменты.
Предоставляются типичные для систем управления версиями возможности, такие как коммиты, staging-черновики, создание веток и оценка изменений. Среди расширенной функциональности: разграничение доступа участников; разрешение конфликтов; дедупликация на уровне фрагментов; возможность работы с неполной копией рабочего дерева (недостающие данные подгружаются по мере появления необходимости в них); кэширование хранимых данных; легковесные операции создания веток и быстрое переключение между ветками (ветки реализованы через ссылки, которые не приводят к дублированию данных).
Жан-Батист Лальман (Jean Baptiste Lallement), директор по инжинирингу в компании Canonical, представил проект Myna, развивающий приложение распознавания речи, которое намерены использовать для организации голосового ввода и распознавания команд на естественном языке в Ubuntu Desktop. Проект распространяется под лицензией GPLv3, но в репозитории пока присутствуют только наброски с описанием модульной архитектуры проекта и его интеграции с Ubuntu.
К выпуску Ubuntu 26.10 приложение планируют довести до пригодности к голосовому вводу текста. Сеанс работы с приложением сводится к активации через клавиатурную комбинацию, диктовки вслух и вставки распознанного текста в текущее приложение через симуляцию клавиатурного ввода по мере его произнесения. Во время включения микрофона в панели будет показываться специальный индикатор.
В качестве базового тестируемого окружения заявлен GNOME на базе Wayland, но приложение изначально проектируется с расчётом возможности адаптации для различных сред рабочего стола.
Для распознавания в Myna будет задействована AI-модель, выполняемая локально. Среди требований к приложению: возможность работы без подключения к интернету; включение микрофона только после явной активации режима диктовки горячей клавишей; обработка звука в памяти, очищаемой после каждого использования; запрет на передачу записей звука во внешние сервисы.
Компоненты для распознавания речи, взаимодействия с пользователем, управления диктовкой и подстановки текста развиваются в форме модулей.
Окружение для выполнения AI-моделей будет оформлено в виде snap-пакета. В качестве возможных моделей для распознавания упоминаются Whisper, Parakeet, NemoTron и Qwen3-ASR.
Сервис управления диктовкой отслеживает нажатие горячей клавиши, активирует микрофон, обращается через API к AI-модели в snap-пакете, перенаправляет в неё звуковой поток из звукового сервиса и координирует потоки данных.
Звуковой сервис обращается к звуковому устройству, как напрямую, так и через звуковые серверы PulseAudio или PipeWire, подавляет шум и выравнивает громкость. Генерируемый моделью текст передаётся в модуль постобработки для чистки, нормализации, форматирования и расстановки знаков препинания. Финальный текст подставляется в приложение через подстановку ввода, например, через Wayland-протокол input-method или IBus.
После стабилизации начальной функциональности не исключается реализация таких возможностей, как работа в роли голосового ассистента, выполнение голосовых команд, голосовое управление рабочим столом и перевод диктуемого текста с автоматическим распознаванием языка.
Организация Trifecta Tech Foundation, развивающая такие проекты, как ntpd-rs, sudo-rs, zlib-rs и bzip2-rs, рассказала о переходе Firefox на использование библиотеки zlib-rs для сжатия и распаковки c использованием метода gzip. Кроме защиты от проблем, вызванных ошибками при работе с памятью, переход с zlib на zlib-rs привёл к заметному повышению производительности - в проведённых тестах ускорение составило от 3.3 до 32.5 раз при единичных операциях декодирования и от 2.7 до 10.86 раз при декодировании непрерывного потока.
Библиотека zlib-rs была задействована в выпуске Firefox 151, но после её интеграции некоторые пользователи столкнулись с проблемой, приводившей к аварийному завершению из-за выхода за допустимые границы. Отмечается, что в коде на языке Rust проблема приводила к аварийной остановке, в то время как в Си подобная ситуация привела бы к незаметному повреждению данных без остановки работы. В качестве решения в выпуске 151.0.1 было возвращено использование старой библиотеки zlib.
Первое проявление проблемы было замечено в процессе тестирования ранних сборок более года назад, но на системах разработчиков её не удавалось воспроизвести. В конечном счёте, после года тестирования на пользователях бета-выпусков было решено активировать zlib-rs в релизе Firefox 151. После новой серии отчётов о проблемах и разбора закономерности было выяснено, что сбой вызван ошибкой в микрокоде CPU Intel на базе микроархитектуры Raptor Lake 13 и 14 поколений, связанной с использованием не того регистра.
Проблема возникала из-за того, что генератор кода LLVM использовал инструкцию "mov byte ptr [rsi + rdi + 1], ch" при записи в память результатов кодирования Хаффмана. При выполнении данной инструкции на CPU Raptor Lake вместо 8-15 битов из регистра RCX, соответствующих указанному в инструкции регистру CH, в память записывались биты 0-7, соответствующие регистру CL. При подготовке выпуска Firefox 152 ошибка была устранена обходным путём и патч перенесён в основной состав zlib-rs. Генерация проблемной инструкции замечена в LLVM 22 (в находящейся в разработке ветке LLVM 23 она не генерируется).