После пяти месяцев разработки опубликован выпуск языка программирования Zig 0.17.0, развиваемого в качестве современной замены языка Си. В Zig пытаются сохранить простоту, гибкость использования и предсказуемость кодогенерации языка Си, при этом добавляя новшества для более эргономичной и безопасной разработки. Zig предоставляет возможности метапрограммирования (выполнения кода во время компиляции) и современную систему типов, созданную с оглядкой на обеспечение безопасности и производительности (опциональные типы вместо нулевых указателей, выравнивание по адресу как часть типа, целочисленные типы с размерностью от 0 до 65535 бит, кортежи и т.д.). Код инструментария распространяется под лицензией MIT.
В подготовке релиза приняли участие 206 разработчиков, которые внесли 925 коммитов. Основные изменения:
Переработана сборочная система (Build System), в которой процесс конфигурации отделён от процесса сборки. Переработана система кэширования.
Добавлен протокол Build Server Protocol, позволяющий клиентам отслеживать процесс сборки и управлять им.
Существенно улучшен собственный ELF-компоновщик.
В компиляторе реализована возможность использования инкрементальной компиляции в Linux-окружениях на системах с архитектурой x86_64.
Обновлены версии LLVM 22, musl 1.2.5, glibc 2.44, заголовочные файлы ядра Linux 7.2.
Расширена поддержка целевых платформ loongarch32 и SPARC64. добавлена поддержка трассировки стека на системах ARM и SPARC. Удалена поддержка некоторых сборочных целей для архитектуры PowerPC с glibc.
В языке предложена формальная спецификация грамматики, добавлены новые встроенные функции (@backingInt, @fromBackingInt, @divCeil, @SpirvType и др.), удалены устаревшие конструкции ("a ** b", "void{}", "errdefer |err|", "i0").
Инструменты трансляции C-кода вынесены в отдельный пакет translate-c.
В стандартной библиотеке предложена новая система выделения памяти SafeAllocator, пригодная для использования в многопоточном коде. Переработан модуль std.zon.parse.
Компания System76 внесла в правила приёма pull-запросов для среды рабочего стола COSMIC и в соглашение об участии в разработке дистрибутива Linux-дистрибутива Pop!_OS требования, запрещающие передачу в изменениях или сообщениях о проблемах содержимого, сгенерированного с использованием AI-инструментов. Запрет касается кода, комментариев и текстовых описаний. Вначале в правилах было упомянуто о допустимости использования AI для проведения исследований, тестирования и других похожих задач, но затем это примечание было удалено.
В качестве причин запрета упоминается высокая нагрузка на сопровождающих и желание сосредоточить ресурсы на рецензировании изменений от основных участников и бывалых разработчиков на фоне увеличения числа изменений, создаваемых новичками при помощи AI и часто отклоняемых после проверки.
Исключение сделано только для репозитория cosmic-flatpak, в котором каждый проект самостоятельно управляет своим Flatpak-манифестом, указывающим на код в собственном репоизитории. Через cosmic-flatpak распространяются апплеты и дополнения к COSMIC, устанавливаемые из каталога COSMIC Store и поддерживаемые сторонними разработчиками. При рецензировании изменений в cosmic-flatpak внимание уделяется не коду проекта, а корректности настройки sandbox-изоляции при запуске.
Опубликован релиз языка программирования Rust 1.99, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust нацелены на исключение ошибок при манипулировании указателями и защиту от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
Предоставлена возможность создания на языке Rust функций с переменным числом аргументов (variadic), экспортируемых для вызова из проектов на языке Си (C ABI). В качестве последнего элемента списка параметров в подобных функциях может указываться конструкция "...", которая обрабатывается в Rust при помощи специального типа VaList, работающего аналогично va_list в C.
unsafe extern "C" fn sum(mut args: ...) -> i32 {
let a = unsafe { args.next_arg::<i32>() };
let b = unsafe { args.next_arg::<i32>() };
a + b
}
fn foo() -> i32 {
unsafe { sum(0i32, 2i32) }
}
Стабилизированы функции Layout::for_value_raw, mem::size_of_val_raw и mem::align_of_val_raw, позволяющие безопасно определять размер и выравнивание по сырым указателям (raw pointer), в том числе при использовании типов с динамическим размером, таких как срезы, без необходимости создания ссылок на данные.
В документацию добавлена рекомендация избегать освобождения памяти, на которую была получена статическая ссылка с неограниченным временем жизни (&'static) через вызов Box::leak (round-trip unleaking), так как подобное действие потенциально может привести к проблемам из-за несовместимости с будущими оптимизациями компилятора и подключаемыми механизмами выделения памяти. Вместо создания статической ссылки для временной передачи владения рекомендуется использовать сырые указатели, например, через вызов Box::into_non_null.
В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
В пакетном менеджере cargo реализован новый встроенный профиль "debug", аналогичный профилю "dev" (в будущем возможности для отладки и разработки планируют разделить). При сборке в CI по умолчанию отключена инкрементальная компиляция.
Целевая платформа riscv64-unknown-linux-musl переведена на второй уровень поддержки, который подразумевает гарантию сборки, но отсутствие гарантий при прохождении тестового набора.
Дополнительно можно отметить недавно анонсированные проекты и события, связанные с Rust:
Компания Microsoft перевела Rust в число языков первого уровня и обеспечит его полную поддержку на всех этапах разработки внутри компании. До этого первый
уровень поддержки внутри компании предоставлялся для языков C++, C# и TypeScript. Отмечается, что Rust уже используется в более чем 100 репозиториях Microsoft. Среди прочего, компоненты на Rust уже применяются в таких продуктах, как Microsoft 365 и Copilot, а для компилятора MSVC подготовлен отдельный бэкенд rustc_codegen_utc для Rust, основанный на компиляторе rustc.
В качестве основной цели применения Rust в Microsoft упоминается усиление защищённости кода, критичного с точки зрения безопасности. По словам технического директора Microsoft Azure около 70% всех уязвимостей в Windows вызваны проблемами при работе с памятью, которых можно избежать при использовании Rust.
Компания Google удалила из ядра Linux старую реализацию механизма межпроцессного взаимодействия Binder, написанную на языке Си, в пользу нового драйвера Binder IPC, переписанного на Rust. Отмечается, что за 15 лет существования старого драйвера в нём накопились значительный технический долг и обилие усложнений, которые затрудняли поиск ошибок, сопровождение и добавление новых возможностей. Драйвер Binder IPC на Rust признан основным и больше не преподносится как экспериментальная разработка.
Опубликован выпуск Arti 2.7.0, реализации инструментария Tor, написанной на языке Rust. Когда код Arti достигнет уровня, способного полностью заменить вариант на Си, разработчики Tor намерены придать Arti статус основной реализации Tor и постепенно прекратить сопровождение реализации на Си. В новой версии проложено развитие функциональности для релеев и серверов директорий (Directory Authority), связанной с парсингом документов, поддержкой зеркалирования серверов директорий и обработкой DNS-трафика. Добавлена реализация RPC для изменения и проверки конфигурации. Устранено несколько уязвимостей - администраторам onion-сервисов рекомендовано срочно обновить свои системы.
Компания Cloudflare анонсировала создание собственного удостоверяющего центра, нацеленного на предоставление бесплатных TLS-сертификатов, использующих криптоалгоритмы, стойкие к подбору на квантовом компьютере. Одновременно объявлено о покупке удостоверяющего центра GlobalSign, который станет базисом для реализации задуманного проекта и позволит сразу выпускать сертификаты, для которых обеспечен максимальных охват устройств, благодаря присутствию GlobalSign в существующих списках корневых сертификатов. Помимо этого компания Cloudflare подала заявки на включение собственного корневого сертификата в списки корневых сертификатов, поддерживаемые Google, Apple, Microsoft и Mozilla.
Предполагается, что новый общедоступный удостоверяющий центр дополнит сервис Let's Encrypt, доля которого среди удостоверяющих центров оценивается в 39.2% по числу в выданных сертификатов. Завязка почти половины сайтов на один удостоверяющий центр создаёт системные риски в случае сбоев в работе Let's Encrypt из-за отсутствия похожих бесплатных альтернатив. Как и Let's Encrypt сервис Cloudflare будет полностью автоматизирован и позволит управлять сертификатами, используя открытый протокол ACME. Для получения сертификата в сервисе Cloudflare пользователям Let's Encrypt достаточно будет изменить URL в настройках.
Второй задачей нового удостоверяющего центра называется подготовка к переходу на постквантовую криптографию. В 1 квартале 2027 года компания Cloudflare планирует одной из первых реализовать в своём удостоверяющем центре поддержку упрощённого формата сертификатов
MTC (Merkle Tree Certificates), рассчитанного на использование с постквантовыми криптоалгоритмами, размер цифровой подписи у которых примерно в 40 раз превышает размер традиционных подписей.
Для сокращения размера данных при каждом TLS-подключении в MTC задействована древовидная структура "Дерево Меркла" (Merkle Tree), в которой каждая ветка верифицирует все нижележащие ветки и узлы, благодаря совместному (древовидному) хешированию. Если при традиционном подходе удостоверяющий центр подписывает каждый сертификат по отдельности, то при использовании MTC, сертификаты объединяются и добавляются в лог на основе дерева Меркла, а подписывается только корневой хэш. При подобной схеме, имея конечный хэш можно удостовериться, что конкретный сертификат включён в текущее подписанное дерево. При подключении к сайту браузер получает сокращённый MTC-сертификат и набор хэшей для математического доказательства его включения в дерево, что позволяет клиенту проверить подлинность сайта на основе подтверждения, что сертификат действительно находится в подписанном дереве.
Удостоверяющий центр Cloudflare будет поддерживать как традиционные, так и MTC-сертификаты, что позволит пользователям плавно перейти на новый формат. Публичный запуск проекта ожидается после завершения тестирования новой инфраструктуры на внутренних сервисах Cloudflare. Cloudflare обязуется обеспечить полную открытость процессов в новом удостоверяющем центре, публиковать воспроизводимые сборки ПО, задействованного для формирования цифровых подписей, проводить аттестацию аппаратных модулей безопасности (HSM), в которых хранятся закрытые ключи, и оперативно раскрывать информацию о проблемах и инцидентах.
Компания Siemens объявила о прекращении разработки OpenRadioss в форме открытого проекта и преобразовала его в проприетарный продукт. Репозиторий OpenRadioss удалён с GitHub, а сайт openradioss.org теперь перенаправляет пользователей на страницу c информацией о закрытии проекта. Предприятиям, заинтересованным в продолжении использования OpenRadioss, предлагается перейти на проприетарный продукт Simcenter Radioss, а для исследователей, учёных и индустриальных партнёров введена в строй программа Simcenter Radioss R&D Program (SCRDP), позволяющая по специальному соглашению получить доступ к коду платформы.
Код OpenRadioss был открыт в 2022 году под лицензией AGPLv3 и в течение четырёх лет развивался при участии сообщества как исследовательский проект. Теперь компания Siemens решила создать на основе OpenRadioss профессиональный продукт для инженерных расчётов и 3D-симуляции, инвестировать в его развитие и предоставить полноценную поддержку. После удаления репозитория OpenRadioss в сети остаются форки и архивные копии (1, 2, 3, 4, 5).
OpenRadioss предназначен для решения задач механики сплошных сред, таких как расчёт прочности инженерных конструкций в высоконелинейных задачах, связанных с большими пластическими деформациями исследуемой среды. Код в основном написан на языке Fortran и поддерживает работу в Linux и Windows. К решаемым проектом задачам относятся проблемы обработки металлов давлением и листовой штамповки, а также симуляция быстропротекающих процессов и механики жидкости и газа.
Опубликован выпуск CalyxOS 8.0, прошивки на основе платформы Android, избавленной от привязок к сервисам Google и предоставляющей дополнительные средства для обеспечения конфиденциальности и безопасности. Новый выпуск переведён на кодовую базу Android 17 и доступен в сборках для устройств Pixel 5-10, Fairphone 4-6, Motorola Moto G32-G84 и SHIFTphone 8.
Вместо сервисов Google в CalyxOS предлагается набор microG c альтернативной реализацией API Google Play, Google Cloud Messaging и Google Maps, не требующей установки проприетарных компонентов Google. Вместо Google Network Location Provider для определения местоположения по Wi-Fi и базовым станциям задействована прослойка, использующая сервисы Positon или BeaconDB. Для преобразования адресов в местоположение (Geocoding Service) задействован Nominatim от проекта OpenStreetMap.
Для управления доступом к сети применяется межсетевой экран Datura, позволяющий ограничивать доступ к сети в привязке к отдельным приложениям, методам подключения (Wi-Fi, мобильная сеть, VPN) и активности (например, можно запретить доступ приложений, выполняемых в фоне). Имеется интерфейс для отслеживания полномочий приложений. По умолчанию используется браузер Calyx Chromium с поисковым движком DuckDuckGo, а в качестве опции доступен Tor Browser. Для установки приложений предлагаются F-Droid и Aurora Store (альтернативный анонимный клиент для Google Play).
Интерфейс совершения звонков, ориентированный на приватность и позволяющий осуществлять вызововы через мессенджеры Signal и WhatsApp с использованием сквозного шифрования. Обеспечено скрытие из журнала звонков конфиденциальных номеров телефонов, таких как телефоны доверия.
Блокировка по умолчанию неизвестных USB-устройств.
Функция отключения Wi-Fi, Bluetooth, микрофона и камеры после определённого времени неактивности.
Режим блокировки доступа к сети недавно установленных приложений.
Возможность использования профилей для разделения рабочей и личной активности с изоляцией данных и приложений между профилями.
Интегрированная поддержка VPN c предустановкой приложений для Tor и Riseup. Возможность использования телефона в режиме точки доступа (USB или Wi-Fi) с пробросом трафика через VPN или Tor.
Верификация системы по цифровой подписи для защиты от подмены или вредоносного изменения прошивки.
Автоматическая ежемесячная доставка обновлений в режиме OTA (over-the-air).
Кнопка Panic для экстренной чистки данных и удаления определённых приложений.
Автоматическая система создания резервных копий приложений, позволяющая сохранять резервные копии на USB-накопитель или в облачное хранилище Nextcloud c шифрованием на стороне клиента.
Использования CoMaps для работы с картами, OnionShare для обмена файлами и Thunderbird для электронной почты.
Из изменений в новом выпуске, помимо перехода на Android 17, отмечается:
Предоставлены официальные сборки для смартфона Pixel 10a.
В утилите device-flasher реализованы дополнительные проверки для предотвращения окирпичивания устройства и добавлена возможность установки прошивки из окружений с macOS.
Обновлены поставляемые приложения, включая microG 0.3.17.252432, Chromium 155.0.8059.16 и календарь-планировщик Etar 1.0.57.
В файловом менеджере задействовано оформление в стиле Material Design 3.
Для планшетов Pixel Tablet добавлена опция для использования десктоп-режима на родном экране.
Компания Qt Company опубликовала релиз фреймворка Qt 6.12, в котором продолжена работа по стабилизации и наращиванию функциональности ветки Qt 6. В Qt 6.12 предоставлена поддержка платформ Windows 10+, macOS 13+, Linux (Ubuntu 22.04/24.04, openSUSE 16, SUSE 15 SP6, RHEL 9.6/10.0, Debian 11.6/12), iOS 17+, Android 9+(API 23+), webOS, WebAssembly, INTEGRITY, VxWorks, FreeRTOS и QNX. Исходный код компонентов Qt поставляется под лицензиями LGPLv3 и GPLv2.
Qt 6.12 получил статус LTS-выпуска, для которого обновления будут формироваться в течение пяти лет для обладателей коммерческой лицензии. Для некоммерческих пользователей время сопровождения составит полгода (до формирования нового значительного выпуска). Поддержка прошлой LTS-ветки Qt 6.8 продлится до октября 2029 года, а поддержка позапрошлой LTS-ветки Qt 6.5 прекращена в этом году.
Признан готовым для широкого применения модуль Qt Canvas Painter, предоставляющий API для аппаратно ускоренной отрисовки 2D-контента и использующий шейдеры для создания сложных визуальных эффектов. Отрисовка осуществляется при помощи движка RHI (Rendering Hardware Interface), поддерживающего различные 3D API (OpenGL, Vulkan, Metal и Direct 3D). На базе Canvas Painter реализован экспериментальный элемент Canvas2D, созданный с оглядкой на HTML-спецификацию Canvas 2D Context и упрощающий использования JavaScript для отрисовки фигур.
Добавлен экспериментальный модуль StyleKit, явно разделяющий структуру компонентов интерфейса пользователя и атрибуты стилей, что позволяет избавиться от дублирования кода при реализации светлых, тёмных и высококонтрастных тем оформления. StyleKit предоставляет единый QML API для описания стилей, позволяющий добиться единого стиля в гибридных приложениях, сочетающих классические виджеты и элементы на базе Qt Quick.
Расширены возможности модуля Qt Graphs. Для 2D-графиков реализованы новые свойства для кастомизации меток осей и добавлена поддержка логарифмических осей. Добавлены встроенные действия для масштабирования и панорамирования. Добавлена опция для отрисовки при помощи высокопроизводительного бэкенда на базе модуля CanvasPainter, позволяющего визуализировать большие объёмы быстро меняющихся данных.
В Qt Quick добавлены QML-типы Safe Area, Context Menu, Double Spin Box и Search Field для вывода неперекрываемого содержимого, контекстных меню, форм ввода чисел и полей отправки поисковых запросов. Расширен QML-тип FlexboxLayout, предназначенный для адаптивной раскладки элементов интерфейса в соответствии с концепцией Flexbox, применяемой в CSS для упрощения вертикального выравнивания элементов.
В модуль Vector Image, позволяющий интегрировать в сцены Qt Quick векторные изображения для создания масштабируемых элементов интерфейса, добавлены дополнительные свойства и возможности анимации для изображений в форматах SVG и Lottie.
Расширен класс QRangeModel, предоставляющий обвязку над QAbstractItemModel для прямого использования в элементах интерфейса на базе QML и Qt Quick любых перечисляемых типов из C++, включая std::vector, std::tuples и std::array. В новой версии встроена поддержка сортировки данных, реализованы новые свойства для контроля за перемещением в режиме "Drag & Drop", ускорен поиск через метод match(), а также предоставлены настройки для заголовков и отдельных строк/элементов.
А модуль gRPC добавлены средства для сжатия сообщений на стороне клиента и ограничения размера входящих сообщений от сервера.
В QML-движке реализован механизм Hot Reload, позволяющий редактировать QML-код на лету во время выполнения программы и наблюдать через qmlpreview результат без перезапуска и остановки выполнения приложения.
Предоставлена LTS-поддержка платформы HarmonyOS, что упрощает перенос существующих Qt-приложения на смартфоны, планшеты, ПК и автомобильные информационно-развлекательные системы Huawei.
Выполнены требования европейского закона Cyber Resilience Act (CRA), нацеленные на поддержание безопасности продукта, оперативное устранение уязвимостей на протяжении жизненного цикла и раскрытие сведений об уязвимостях и инцидентах с безопасностью. В исходном коде выделены компоненты, критически важные с точки зрения безопасности, организована публикация информации о тестировании безопасности и гарантирована интеграция актуальных версий сторонних библиотек.
Проект OpenMandriva опубликовал релиз OpenMandriva ROME 26.09, редакции дистрибутива OpenMandriva, использующей модель непрерывной доставки обновлений (rolling-выпуски). Предложенная редакция позволяет получить доступ к новым версиям пакетов, развиваемым для ветки OpenMandriva Lx 7, не дожидаясь формирования классического дистрибутива. Проект развивается силами сообщества после того, как в 2013 году компания Mandriva S.A. передала управление проектом в руки некоммерческой организации "OpenMandriva Association". Для загрузки подготовлены iso-образы размером 3.2 ГБ c рабочими столами KDE, GNOME, LXQt, MATE и Xfce, поддерживающие загрузку в Live-режиме.
Добавлена поддержка пакетов в формате Snap (в дополнение к Flatpak и AppImage).
Осуществлён переход на новую ветку пакетного менеджера RPM 6.1.0, которая была дополнена патчем для поддержки секции %pgo в spec-файлах для упрощения включения оптимизаций на основе результатов профилирования кода (PGO, Profile-Guided Optimization). Почти все пакеты собраны с оптимизациями LTO (Link-Time Optimization), а для отдельных пакетов включены оптимизации PGO.
Компоненты среды рабочего стола KDE обновлены до версий KDE Plasma 6.7.5, KDE Gear 26.08.1 и KDE Frameworks 6.29.0. Доступны режимы использования KDE с графическим стеком на базе X11 и с Wayland. Обновлены версии GNOME 50.3, Xfce 4.20, LXQt 2.4.0, MATE 1.28 (с экспериментальным сеансом на базе Wayland), hyprland 0.56.2,
cosmic 1.7.0,
niri 26.04,
sway 1.12,
i3-wm 4.25.1,
icewm 4.1.0,
qtile 0.36.0,
labwc 0.20.2,
miriway 26.08.1,
enlightenment 0.27.1,
enlightenment e16 1.0.32. Добавлен оконный менеджер
Spectrwm.
Приложения HPLIP и Clementine портированы на Qt6. Графический редактор Krita обновлён до ветки 6.0, использующей Qt6.
Обновлена подборка пакетов, связанных с AI:
llama-cpp 0.4.1,
ollama 0.34.3,
whisper-cpp 1.9.4,
koboldcpp 1.119,
hermes-agent 2026.9.21,
opencode 1.18.22,
aider 0.86.2,
goose 1.50.0,
bark-cpp 1.0.0,
stable-diffusion.cpp 0.841 и
comfyui 0.37.1. Многие из этих пакетов используют
GGML 0.24.0 и собраны для ускорения при помощи GPU с использованием ROCm, Vulkan и OpenCL.
Обновлены пакеты для запуска Windows-игр, такие как Wine 11.18, DXVK 3.0.2, vkd3d 2.0, vkd3d-proton, proton и proton-experimental. В репозиторий non-free добавлен инсталлятор Steam 1.0.0.86.
Обновлены системные компоненты: ядро Linux 7.2.7 (опционально доступен пакет с ядром 7.3.0-rc4), LLVM/Clang 23, GCC 16.2.0, glibc 2.44, grub2 2.16.
Проведена подготовка к возможности переключений различных реализации функций выделения памяти malloc в стандартной Си-библиотеке
Glibc. Отмечается, что выбор оптимальной для имеющихся задач реализации malloc может повысить производительность до 20%.
Ведётся работа по разделению пакетов с ядром для выноса из них отдельных модулей. Идея в том, чтобы свести к минимуму размер базового пакета с ядром за счёт выноса модулей ядра в отдельные пакеты, устанавливаемые только при необходимости в зависимости от имеющегося оборудования.
Доведён до готовности новый инструментарий для бутстрапинга, поддерживающий сборку OpenMandriva в chroot-окружении. В экспериментальную ветку OpenMandriva Cooker добавлены патчи для сборки дистрибутива для платформ RISC-V и LoongArch64.
Драйверы NVIDIA обновлены до версии 610.57.04. Открытые модули для GPU NVIDIA перенесены в состав пакета с ядром для исключения сбоев из-за рассинхронизации версий при обновлении ядра и драйверов NVIDIA. Проприетарные модули и GUI для настройки драйверов NVIDIA оставлены в пакете nvidia, доступном в репозитории non-free.
В сборку с GNOME добавлен графический интерфейс UPDragora, разработанный в рамках инициативы Tears of Mandrake и предоставляющий функции для обновления пакетов и всей системы, а также установки и удаления пакетов. Инициативой Tears of Mandrake также развиваются новые модули для управления ресурсами (System Resources), резервного копирования и управления звуком.
В качестве браузера по умолчанию в редакциях с KDE и LXQt вместо ungoogled-chromium задействован Helium, основанный на наработках ungoogled-chromium и возвращающий некоторые возможности, удалённые в процессе чистки кода от сервисов Google. На использование Helium переведён инструментарий CEF (Chromium Embedded Framework), что дало возможность использовать в OBS Studio CEF-плагин на основе Helium.
Группа исследователей из Амстердамского свободного университета разработала новый метод атаки BTR (Branch Target Reuse), относящийся к классу Spectre-v2 и позволяющий обойти механизмы изоляции памяти на системах с процессорами Intel, AMD и ARM. Инициирование утечки содержимого памяти в ходе спекулятивного выполнения инструкций при проведении атаки BTR осуществляются через манипуляции с JIT-компиляторами. Исследователями проанализирована возможность совершения атаки через JIT-движки cBPF в ядре Linux, Oracle GraalVM и SpiderMonkey в Firefox.
Для подтверждения практичности атаки подготовлены
два эксплоита, позволяющие извлечь хэш пароля пользователя root, загруженного из файла /etc/shadow в память после запуска утилиты su. Атака осуществляется через манипуляции с поставляемым в ядре Linux движком cBPF (Classic Berkeley Packet Filter), который, среди прочего, применяется в механизме seccomp для ограничения доступа к системным вызовам. Работа эксплоитов продемонстрирована в Ubuntu 24.04 с ядром 6.14.0-27-generic в конфигурации по умолчанию. На компьютере с CPU Intel скорость утечки составляет 8 байт в секунду, чего достаточно для извлечения из памяти хэша пароля за 3-5 минут.
В атаках класса Spectre-v2 для организации утечки данных используется подстановка значений в буфер адреса ветвления (Branch Target Buffer) или буфер с историей переходов (Branch History Buffer), применяемые для предсказания следующей операции ветвления. Через манипуляции с историей переходов создаются условия неверного предсказания перехода при спекулятивном выполнении инструкций. Задача атакующего в том, чтобы при выполнении спекулятивной операции ветвления адрес для перехода был взят из желаемой области памяти. После выполнения спекулятивного перехода, в процессорном кэше остаётся считанный из памяти адрес перехода (под видом адреса считываются необходимые атакующему данные из памяти). Для извлечения информации из кэша может применяться один из способов определения содержимого кэша на основе анализа изменения времени доступа к прокэшированным и не прокэшированным данным.
Атака BTR основывается на том, что кэширование предсказаний ветвления не синхронизировано с размещением JIT-компилятором инструкций в памяти. Состояние буфера адреса ветвления (BTB, Branch Target Buffer) сохраняется после модификации машинного кода JIT-компилятором, из-за чего оставшиеся в буфере BTB неочищенные устаревшие записи продолжают влиять на спекулятивное предсказание переходов. В итоге, CPU может предсказать переход по старому целевому адресу и выполнить чтение адреса из памяти в спекулятивном режиме даже если код в этот момент уже заменён.
В опубликованном эксплоите на первой стадии через JIT инициируется выполнение "тренировочного" BPF-кода (BPF-программа оформляется в виде seccomp-фильтра), приводящего к тому, что система предсказания переходов запоминает определённый адрес косвенного перехода как точку входа в исполняемый блок. На второй стадии атакующий добивается замены кода в памяти без сброса состояния буфера предсказания переходов, для чего он вначале выгружает "тренировочную" BPF-программу, а потом добивается загрузки новой BPF-программы в память, освобождённую после выгрузки прошлой BPF-программы. Новая BPF-программа содержит гаджеты - заданные атакующим цепочки инструкций.
Для обхода применяемой в JIT-компиляторах защиты "constant-blinding", не позволяющей эксплоитам кодировать гаджеты с машинным кодом в форме констант для последующего перехода на них в исполняемой памяти, в подготовленных экплоитах реализован метод кодирования гаждетов в форме операндов в инструкциях перехода. В случае изменения выравнивания потока исполнения (перехода на середину машинного кода с инструкцией jmp), вместо набора инструкций jmp начинают выполняться инструкции, закодированные в адресах перехода.
На третьей стадии в новой BPF-программе выполняется тот же косвенный переход, что использовался в первой BPF-программе. Так как состояние буфера адреса ветвления не было сброшено, процессор извлекает из него запомненный старый адрес точки входа и выполняет переход в спекулятивном режиме. В заменённом коде старая точка входа приходится на середину инструкции jmp и процессор начинает спекулятивно выполнять код закодированного через операнды гаджета.
В свою очередь, гаджет в процессе спекулятивного выполнения обращается к произвольной области памяти ядра и её содержимое оседает в процессорном кэше. В предложенном эксплоите гаджет спекулятивно перебирает структуру ядра со списком запущенных процессов, находит процесс su и выполнят обход связанных с ним таблиц страниц памяти, определяя страницу с хэшем пароля root по шаблону.
Защита для противодействия новому виду атак добавлена в ядро Linux в начале июля и вошла в состав выпусков 7.2-rc2, 7.1.4, 6.18.39, 6.12.97 и 6.6.145. Защита реализована через вызов процессорных инструкций IBPB (Indirect Branch Prediction Barriers) для сброса состояния блока предсказания переходов после каждого повторного использования исполняемой области памяти в cBPF/eBPF.
В SpiderMonkey показана возможность создания условий для спекулятивного обращения к памяти при манипуляциях с WebAssembly, но разработка рабочего эксплоита требует дополнительной работы. Компания Mozilla в качестве приоритетного метода борьбы со утечками данных рассматривает изоляцию сайтов в разных процессах.
В GraalVM эксперименты также не привели к созданию рабочего эксплоита, так как активность сборщика мусора приводила к слишком быстрой очистке буфера адреса ветвления (BTB), но исследователи не считают это полноценной защитой и полагают, что данное ограничение при желании можно обойти. Для усиления противодействия атаке BTR компания Oracle реализовала в GraalVM рандомизацию размещения кэша с кодом для JIT.
Состоялся релиз Tcl/Tk 9.1, динамического языка программирования, распространяемого совместно с кроссплатформенной библиотекой базовых элементов графического интерфейса Tk. Основное распространение Tcl получил как платформа для создания интерфейсов пользователя и как встраиваемый язык, при этом Tcl также подходит для быстрого прототипирования, web-разработки, создания сетевых приложений, администрирования систем и тестирования. Код проекта распространяется под лицензией BSD.
Среди изменений:
Добавлена команда "unicode" для нормализации Unicode-строк и сопутствующий набор Си-функций Tcl_UtfToNormalized*.
Добавлена команда "timer" с реализацией монотонного (только увеличивающегося) таймера, обеспечивающего микросекундную точность и предназначенного для измерения длительности событий.
Добавлена команда "lfilter" для выбора элементов из списка.
Добавлена команда "interp set" для доступа к переменным в дочернем интерпретаторе без использования ресурсоёмкого вызова "interp eval".
В команде "subst" реализованы опции "-backslashes", "-commands" и "-variables" для управления экранированием, выполнением команд ([cmd]) и раскрытием переменных ($var) в подстановках.
В команду "switch" добавлена опция "-integer" для сравнения значений как целых чисел, а не строк.
Добавлена возможность использования в выражениях "expr" большинства математических функций, определённых в стандарте C99.
При встраивании кода Tcl в C/C++ приложения теперь обязательно выполнение инициализации функцией Tcl_FindExecutable или TclZipfs_AppHook.
Добавлены новые Си-функции Tcl_IsEmpty, Tcl_GetEncodingNameForUser, Tcl_AttemptCreateHashEntry, Tcl_ListObjRange, Tcl_ListObjRepeat и Tcl_ListObjReverse.
Внутренний C API для работы со временем переведён c использования структуры Tcl_Time на 64-разрядный тип "long long".
Для платформы macOS реализована поддержка файловых путей, для которых не учитывается регистр символов.
На платформе Windows усовершенствован поиск исполняемых файлов при выполнении команд auto_execok и exec.
Переработан код поиска библиотек и файлов с кодировками.
Снижено потребление памяти при работе с большими списками.
Проведена работа переводу внутренних структур на 64-разрядные типы.
В библиотеке Tk добавлена поддержка экранных ридеров и двунаправленного текста. Реализованы виджет ttk::toggleswitch и команда tk attribtable. Предоставлена возможность поворота текста на метках. Прекращена поддержка визуального стиля Windows XP.
Предложен новый интерфейс пользователя, разработанный в рамках проекта Nova. Изменения сводятся к скруглению кнопок вкладок, меню и поля адресной строки, а также к изменению отступов между всеми элементами интерфейса. Упрощён доступ к группировке вкладок, вертикальным вкладкам и режиму просмотра бок о бок двух вкладок. Обновлены пиктограммы, которые теперь выглядят чище и более сбалансированы в светлых и тёмных темах. Добавлены новые встроенные светлые и тёмные темы оформления. Для отключения нового интерфейса на странице about:config можно деактивировать настройку "browser.nova.enabled".
Возвращена возможность включения компактного режима, в котором панель и строка вкладок интерфейса занимают минимум экранного пространства, оставляя больше места для содержимого web-страниц.
Для всех пользователей задействована новая реализация боковой панели, поддерживающая вертикальные вкладки. Для пользователей старой панели раскладка элементов приближена к виду, в котором переключатель панелей находится на самом верху. Из настроек удалена опция показа боковой панели, но старую панель ещё можно вернуть через отключение параметра sidebar.revamp на странице about:config. Удаление поддержки старой панели намечено на конец 2027 года.
В настройках и в выпадающей панели, появляющейся при клике на изображении щита в адресной строке, реализован вывод предупреждения о возможности перехватывать шифрованный трафик, появляющейся в случае включения функции сохранения ключей шифрования в лог через выставление переменной окружения SSLKEYLOGFILE.
В видеозвонках через WebRTC реализована возможность использования аппаратного ускорения декодирования формата AV1.
Для пользователей из Австрии, Бельгии, Чехии, Дании, Финляндии, Венгрии, Ирландии, Люксембурга, Нидерландов, Норвегии, Польши, Португалии, Словакии, Испании, Швеции и Швейцарии включён механизм показа контекстных рекомендаций и спонсируемых подсказок. Отключить рекомендации можно в настройках "Settings > Search > Firefox Suggests".
Навигация клавишей Tab теперь в первую очередь переключает фокус на область ввода в адресной строке и поле поиска, а не на кнопку выбора поисковой системы.
Из числа встроенных поисковых систем удалён поисковый сервис Amazon.
Диалоги, показываемые при вызове JavaScript-функций alert(), confirm() и prompt(), выпадающее окно автодополнения ввода
и формы выбора цвета и даты, теперь соответствуют выставленной светлой или тёмной цветовой схеме страницы.
В CSS-правило @supports добавлена функция at-rule(), при помощи которой можно определить поддержку в браузере тех или иных @-правил. Например "@supports at-rule(@scope)"
В CSS-свойства overscroll-behavior, overscroll-behavior-block, overscroll-behavior-inline, overscroll-behavior-x и overscroll-behavior-y добавлена поддержка значения "chain", которое допускает бесшовное переключение на прокрутку в родительском элементе после докручивания до конца содержимого вложенного блока, но отключает эффекты, такие как отскок при прокрутке до конца.
В Firefox для Android реализовано возвращение к прошлым результатам поиска при клике на поле поиска на домашней странице. Добавлена возможность убрать элементы на странице Downloads экранным жестом "смахивание".
Кроме новшеств и исправления ошибок, в Firefox 157 устранено 76 уязвимостей, у 38 из которых выставлен высокий уровень опасности. Большинство уязвимостей вызваны проблемами при работе с памятью, такими как переполнения буферов и обращение к уже освобождённым областям памяти. Потенциально данные проблемы способны привести к выполнению кода злоумышленника при открытии специально оформленных страниц.
Компания Microsoft представила релиз инструментария WSL 3.0 (Windows Subsystem for Linux), позволяющего запускать Linux-приложения в Windows. Новая ветка примечательна реализацией возможности для запуска Linux-контейнеров в Windows и переходом на использование ядра Linux 6.18. Код применяемых в WSL утилит командной строки, фоновых процессов для Linux-окружений, сервисов для запуска контейнеров и виртуальной машины, а также графического стека wslgоткрыт под лицензией MIT. Изменения для ядра Linux поставляются под лицензией GPLv2
WSL предоставляет виртуальную машину с полноценным ядром Linux (на базе ветки 6.18), в которой могут запускаться дистрибутивы Linux. Ядро включает специфичные для WSL изменения, такие как оптимизации для сокращения времени запуска и уменьшения потребления памяти, возможность возвращения Windows освобождённой Linux-процессами памяти и настройки для исключения лишних драйверов и подсистем. Система устанавливается в отдельный дисковый образ (VHD) c файловой системой ext4 и виртуальным сетевым адаптером.
В состав новой ветки включён инструментарий для создания, развёртывания и запуска Linux-контейнеров в Windows, включающий интерфейс командной строки wslc (WSL Containers) и сопутствующий API, позволяющий запускать Linux-контейнеры из Windows-программ.
Основные возможности wslc:
Операции для управления жизненным циклом контейнеров, такие как создание, запуск, остановка, экспорт, очистка, инспектирование, проверка работы, передача событий об активности контейнера, копирование файлов в контейнер и из него.
Ограничение потребления CPU и памяти отдельных контейнеров.
Сборка, загрузка, отправка, импорт, сохранение и проверка системных образов. Команды для просмотра списков доступных образов. Пакетные операции сразу с несколькими образами. Возможность упаковки нескольких образов в один tar-архив.
Создание и управление виртуальными сетями. Присоединение контейнеров к нескольким сетям. Создание собственных типов сетей. Проброс сетевых портов.
Создание, просмотр и удаление разделов. Работа с виртуальными дисками (VHD).
Доступ к GPU из контейнеров и предоставление библиотек для работы непривилегированных пользователей с GPU.
Создание сеансов по мере необходимости, присвоение имён сеансам, настраиваемое местоположение хранилища.
SDK c API для автоматизации работы с контейнерами из программ на C++ и C#/WinRT.
Команда "wslc logs" для просмотра и выборки данных из логов. Вывод статистики о работе контейнера. Подсветка вывода в утилите "wslc".
Интеграция с MSBuild и CMake.
Поддержка управления при помощи групповых политик ADMX.
Поддержка расширения VS Code dev container для запуска и сборки разрабатываемого кода в контейнере.
Возможность использования wslc в качестве runtime для запуска контейнеров в инструментарии Aspire.
Управление контейнерами wslc через текстовый интерфейс Lazywslc или десктоп-приложение WinUI 3.
Обвязка для запуска Linux-контенеров из дистрибутивов Linux, запущенных в WSL.
В контейнерах задействованы по умолчанию файловая система "virtiofs", демонстрирующая двукратное ускорение доступа к Windows-файлам, и режим работы сети "consomme", обеспечивающий улучшенную совместимость с различными сетевыми конфигурациями (VPN, прокси и т.п.). В режиме "consomme" Linux-трафик пересылается через Windows, что позволяет использовать для Linux приложений все возможности сетевого окружения Windows, включая политики безопасности и средства для интеграции с корпоративными системами.
За выполнение контейнеров отвечает привилегированный Windows-сервис wslservice.exe, запускающий виртуальные машины и использующий их для выполнения Linux. В отличие от WSL, сервис wslservice.exe создаёт для контейнеров дочерний процесс wslcsession.exe, выполняемый с правами текущего пользователя и берущий на себя такие операции, как создание контейнеров, монтирование каталогов и проброс сетевых портов. Разные сеансы строго изолированы между собой и работают в разных процессах. К каждому сеансу привязывается отдельное хранилище VHD, размещаемое в каталоге %AppData%\Local\wslc\sessions. Возможно монтирование в Linux-контейнере Windows-путей для совместного доступа к файлам.
Исследователи из Калифорнийского университета в Сан-Диего разработали усовершенствованную технику атаки на алгоритм RSA, позволяющую подделывать цифровые подписи без факторизации лежащих в основе RSA простых чисел и без необходимости восстановления закрытого ключа. Ресурсы, необходимые для совершения атаки на 1024-разрядный ключ RSA, оценены в 1380 лет вычислений на одном процессорном ядре, что на имеющемся университетском кластере позволило за 5 месяцев определить параметры, необходимые для формирования фиктивных RSA-подписей (в эксперименте не использовались AI-ускорители и GPU, при их применении время вычислений может существенно сократиться). Для сравнения классический метод факторизации требует для воссоздания закрытого ключа RSA-1024 от 500 тысяч до миллиона лет вычислений на одном процессором ядре.
Для проведения атаки требуется наличие возможности многократно отправлять запросы на подписание формируемых атакующим данных, например, обращаясь к сервису авторизации или HSM-модулю. Для определения параметров RSA-1024 достаточно отправить 232 подобных запросов, а для атаки на ключи RSA-2048, используемые в протоколе Privacy Pass, - 243. После получения массива подписанных данных запускается длительный процесс вычисления параметров (для RSA-1024 примерно 265 операций), после получения которых атакующий может создавать фиктивные подписи для любых данных, затрачивая на каждую подпись примерно 180 часов вычислений на одном ядре.
Метод применим только для RSA-подписей, в которых не используется форматирование и добавочное заполнение перед шифрованием (padding). Атаке подвержены реализации слепой подписи, в том числе используемые в протоколе Privacy Pass. Большинство находящихся в обиходе реализаций RSA, включая PKCS#1v1.5 и RSA-PSS (используются в TLS и SSH), применяют добавочное заполнение и атаке не подвержены.
В основе шифрования RSA лежит операция возведения в степень по модулю большого числа. В открытом ключе содержится модуль и степень. Модуль формируется на основании двух случайных простых чисел, которые известны только владельцу закрытого ключа. Предложенный метод основан на опубликованном в 2007 году исследовании, доказавшем, что извлечение корня в указанной в открытом ключе степени из зашифрованного сообщения без информации о секретных множителях является менее ресурсоёмкой операцией, чем факторизация самих множителей.
Используя специальный метод решета числового поля (SNFS) исследователям удалось свести сложность компрометации ключей RSA-1024 до 265 операций, что позволяет осуществлять практические атаки на современных кластерах. Для 2048-разрядных ключей RSA сложность атаки оценивается в 290, что теоретически осуществимо крупными корпорациями или спецслужбами. Для 4096-разрядных ключей сложность атаки составляет 2119 операций, что на практике пока недостижимо, но ниже минимума 2128, рекомендуемого АНБ, Национальным институтом стандартов и технологий и Европейским агентством по сетевой и информационной безопасности.
Представлен релиз распределенной системы управления исходными текстами Git 2.56. Код Git распространяется под лицензией GPLv2+. По сравнению с прошлым выпуском в новую версию принято 748 изменений, подготовленных при участии 104 разработчиков, 39 из которых впервые приняли участие в разработке Git. Основные новшества
(1, 2, 3):
Добавлен режим "git add --resolved" для разрешения конфликтов при слиянии веток, который проверяет файлы на наличие маркеров конфликта и при выявлении маркера хотя бы в одном файле выдаёт ошибку, не индексирует ни один из файлов и показывает список файлов требующих исправления. В отличие от команды "git add --update" в новом режиме обрабатываются только файлы, находящиеся в состоянии конфликта, а не связанные с конфликтом изменённые файлы игнорируются, что позволяет безопасно завершать слияние веток, даже если в рабочем каталоге находятся другие незавершённые правки (команда "git add --update" добавляет в индекс все ранее отслеживаемые изменённые файлы в рабочем каталоге).
Значительно ускорена работа с большими репозиториями, за счёт оптимизации алгоритма поиска последних общих коммитов при слиянии веток и сравнении коммитов. В процессе работы теперь учитываются коммиты, принадлежащие исключительно одной из веток, что позволяет остановить сканирование сразу после обнаружения всех возможных общих предков, не тратя время на дальнейший перебор истории изменений. В одном из протестированных репозиториев скорость поиска выросла в среднем в 20 раз, а в другом ускорение достигало 70 раз. При выполнении команды "git merge-base --all v4.8 v4.9" в репозитории с ядром Linux количество шагов обхода уменьшилось со 167 тысяч до 3.8 тысяч.
Для серверного применения адаптирован режим перепаковки "--path-walk", позволяющий создавать более компактные pack-файлы за счёт группировки объектов по их пути в дереве каталогов (например, для репозитория Fluent UI использование "--path-walk" позволило уменьшить размер pack-файла с 558 МБ до 164 МБ). В новой версии реализована возможность использования режима "--path-walk" совместно с битовыми картами достижимости (reachability bitmap) и дельта-островами (delta island), применяемыми git-хостингами для ускорения работы и изоляции форков от основного репозитория.
Устранены узкие места, приводившие к избыточным вычислениям в больших репозиториях: убраны лишние проверки состояния файлов при записи в reftable; исключено повторное сканирование списка при каждой вставке нового pack-файла; ускорены операции с reftable, в которых накопилось много записей об удалении; оптимизирована работа "git diff" при указании ограничений по файловым путям. После внесения оптимизаций
работа с reftable при большом числе удалений ускорилась в 65 раз (с 13 секунд до 0.2 секунды), а выполнение проблемной команды "git diff" в репозитории Chromium с 500000 элементами в индексе стало занимать 0.07 секунд вместо 8 минут.
В экспериментальную команду "git history", предоставляющую возможности для перезаписи истории изменений, добавлена операция "git history drop" для удаления выбранного коммита с автоматическим прикреплением его потомков к родительскому коммиту.
Добавлена команда "git branch --delete-merged 'origin/*' 'topic-*'" для безопасного удаления групп локальных веток, изменения из которых уже переданы во внешний репозиторий. Для фильтрации веток и репозиториев допускается использование масок. Для анализа претендентов на удаление, без фактического выполнения операции, можно использовать флаг "--dry-run".
Добавлена команда "git refs create|update|delete|rename", в которой объединены низкоуровневые операции для создания, удаления, переименования и обновления ссылок.
В команду "git bisect run" добавлена опция "--reset-when-found=[<where>]", которая автоматически возвращает репозиторий в состояние до начала поиска или оставляет активным проблемный коммит, без необходимости отдельного запуска команды "git bisect reset".
В команду "git replay" добавлен флаг "--linearize" для использования плоской топологии слияния, по аналогии с "git rebase --no-rebase-merges", но без обращения к рабочему дереву.
В команде "git log --follow" реализовано отслеживание переименования файлов в нелинейной истории изменений, например, при слиянии подветок. Путь к файлу теперь фиксируется отдельно для каждого родительского коммита, что делает результат независимым от порядка обхода истории коммитов.
Добавлена возможность применения команды "git repack -a --filter=blob:limit=1m --drop-filtered" для удаления больших blob-объектов, загруженных на лету (on demand) из внешнего репозитория и не используемых в текущем индексе. При обращении к этим объектам в дальнейшем они будут автоматически повторно загружены.
В команде "git log --graph" для графов с несколькими независимыми корнями реализовано добавление отступов для наглядного отделения несвязанных коммитов.
Обеспечено выявление типовых опечаток, таких как указание "git push origin/main" вместо "git push origin main" или
"git branch --set-upstream-to origin main" вместо "git branch --set-upstream-to=origin/main", и вывод подсказки по использованию корректного варианта.
Началось бета-тестирование минималистичного видеоредактора GoZen, созданного с использованием игрового движка Godot и пакета FFmpeg. Проект ориентирован на повседневную работу с контентом любителями и полупрофессионалами. Основной акцент сделан на простоте, стабильности и производительности без избыточной сложности традиционных систем нелинейного видеомонтажа. Код написан на языках C++ и GDScript и распространяется под лицензией GPLv3 (FFmpeg используется с флагом "--enable-gpl3"). Первичной является платформа Linux, но дополнительно поддерживаются Windows и macOS.
Ключевые особенности:
Плавное воспроизведение видео, высокопроизводительная отрисовка интерфейса и быстрое перемещение по содержимому.
Поддержка всех кодеков, предоставляемых в FFmpeg.
Унифицированная временная шкала без разделения на отдельные дорожки для звука и видео.
Минималистичный интерфейс.
Расширение функциональности и кастомизация через подключаемые модули.
Возможность переноса на временную шкалу файлов в формате .pck со сценами Godot для создания процедурной графики, титров и анимации.
Отсутствие телеметрии, рекламы и обязательной регистрации, но платные бинарные сборки.
Настраиваемое рабочее пространство и внешний вид.
Базовые эффекты для звука и видео, для ускорения которых используется GPU.
Встроенные возможности для синхронизации звука с внешнего микрофона.