Опубликован релиз языка программирования Rust 1.97, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Методы работы с памятью в Rust нацелены на исключение ошибок при манипулировании указателями и защиту от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.
Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.
По умолчанию включена новая схема декорирования (mangling) имён функций, глобальных переменных и структур данных в генерируемых объектных и исполняемых файлах (-Csymbol-mangling-version=v0). Имена декорируются для предотвращения конфликтов во время компоновки разных программ, путём прикрепления специфичного контекста, такого как путь к модулю и имя crate-пакета.
Ранее используемая схема декорирования имён, основанная на Itanium ABI, имела такие недостатки, как замена параметров дженериков на нечитаемые хэши и наличие частей компилятора, не использующих Itanium ABI, что требовало использования специфичных для Rust декодировщиков имён. В Rust 1.97 задействована по умолчанию схема декорирования, разработанная специально для Rust и лишённая отмеченных недостатков. Старую схему намерены удалить в одном из следующих выпусков.
В пакетный менеджер cargo встроена возможность управления реакцией на генерацию компилятором предупреждений при сборке. Добавлена переменная окружения CARGO_BUILD_WARNINGS, которая может принимать три значения: warn (по умолчанию) - вывод предупреждения на экран; allow - скрытие вывода предупреждений; deny - обработка предупреждений как ошибок, останавливающих сборку.
В прошлых версиях для завершения сборки после вывода предупреждения приходилось указывать "-Dwarnings" в RUSTFLAGS для компилятора, но при изменении RUSTFLAGS пакетный менеджер cargo считал сборку новой, не учитывал данные в кэше и с нуля пересобирал весь проект. Перенос настройки на сторону cargo исключил сброс кэша и необходимость полной перекомпиляции при изменении режима обработки предупреждений, а также упростил включение обработки предупреждений как ошибок в системах непрерывной интеграции.
При сборке включено по умолчанию отображения сообщений, выводимых компоновщиком. Сообщения выводятся в форме предупреждений через специальное lint-правило "linker_messages", которое не входит в стандартную группу "warnings". При этом rustc отфильтровывает сообщения, которые являются типовыми ложными срабатываниями или нормальным поведением, оставляя предупреждения, которые могут свидетельствовать о проблемах, такие как предупреждения об устаревших опциях и нежелательных настройках. Ранее информация от компоновщика показывалась только при завершении с ошибкой, а иначе все сообщения скрывались. Для возвращения старого поведения в Cargo.toml можно добавить:
[lints.rust]
linker_messages = "allow"
В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:
Дополнительно можно отметить недавно анонсированные проекты и события, связанные с Rust:
Проект zinnia развивает модульное Unix-подобное ядро, написанное на языке Rust и распространяемое под лицензией GPLv2. Ядро поддерживает POSIX-интерфейсы и некоторые расширения из BSD и Linux, такие как epoll и timerfd. Для отрисовки и организации ввода доступны драйверы DRM (Direct Rendering Manager) и evdev. Реализованной функциональности достаточно для запуска среды рабочего стола Xfce под управлением X-сервера и композитного сервера Weston на базе Wayland. Поддерживается загрузка как в эмуляторе QEMU, так и на реальном оборудовании, таком как ноутбук ThinkPad E14 G7.
Представлен релиз коммуникационной библиотеки iroh 1.0, позволяющей устанавливать сетевые соединения между приложениями на разных хостах с подключением по криптографическим ключам, вместо IP-адресов (указывается ключ к которому необходимо подключиться и iroh находит связанный с ним хост и устанавливает шифрованное соединение с использованием протокола QUIC). По возможности устанавливаются прямые P2P-соединения, но если это невозможно, выполняется откат на работу через релеи, которые также применяются для обнаружения хостов по ключам. Возможен запуск своего релея или подключение к поддерживаемым сообществом публичным релеям.
Среди расширенных возможностей: поддержка Multipath QUIC для доставки пакетов одновременно по нескольким маршрутам, возможность работы из-за NAT, режим статической конфигурации для подключения к локальным устройствам без доступа к интернету, возможность сборки в промежуточный код WASM для выполнения внутри браузера, поддержка создания своих транспортов, например, для подключения через Bluetooth, WiFi Aware или LoRa. Код написан на Rust и распространяется под лицензиями Apache-2.0 и MIT. Доступны обвязки для Python, Node.js, Kotlin и Swift.
Автор серверной JavaScript-платформы Bun опубликовал статью с разбором проекта по переписыванию Bun с языка Zig на Rust, используя AI-модель Claude Fable. Отмечается, что Bun 1.3.14 станет последним выпуском на Zig и следующая версия Bun 1.4.0 уже будет на Rust. Судя по проведённым тестам, версия на Rust потребляет значительно меньше памяти и на 2-5% быстрее версии на Zig. Размер исполняемого файла в версии на Rust сократился на 20%.
Опубликован десятый выпуск среды рабочего стола Orbitiny Desktop, написанной с нуля с использованием фреймворка Qt. Проект пытается совместить некоторые инновационные идеи, которые раньше не встречались в пользовательских окружениях, с традиционными элементами, такими как панель с поддержкой плагинов, меню приложений и рабочий стол, на котором можно размещать ярлыки. Работа пока сосредоточена на запуск в окружениях на базе X-сервера, но в будущем не исключается добавление поддержки Wayland. Код написан на языке C++ и распространяется под лицензией GPL.
Из специфичных для Orbitiny возможностей отмечается: вызов действий через экранные жесты (очерчивание мышью определённого контура на пустой области рабочего стола); метки на пиктограммах (показываются для новых, изменённых, пустых или перемещённых через буфер обмена файлов, а также пустых каталогов); возможность вставки файла одновременно в несколько выбранных каталогов; поддержка размещения содержимого рабочего стола в любом каталоге (не только в $HOME/Desktop); использование отдельных десктоп-каталогов для каждого виртуального рабочего стола и монитора. Список типовых возможностей Orbitiny можно посмотреть в прошлом анонсе.
Среди изменений:
Добавлена новая панель управления, предоставляющая возможности для изменения настроек, просмотра информации о системе и доступа к внешним конфигураторам. Навигация по встроенным страницам с настройками осуществляется через боковую панель, а вызов внешних конфигураторов через настраиваемые кнопки в верхней части экрана.
Реализована поддержка закрепления панели задач в любой части экрана и изменения размера мышью, а также прокрутки содержимого панели вращением колеса на мыши.
На панель добавлена кнопка для вызова диалога со списком окон запущенных приложений и возможностью фильтрации окон по названию.
Предложен новый апплет с меню быстрого запуска, вызываемый нажатием на кнопку "…" после списка закреплённых ярлыков приложений.
В меню приложений добавлены новые секции: "Orbitiny Programs" для доступа к встраиваемым в меню апплетам конфигуратора, и "Local Programs" со списком программ, для которых в каталоге ~/.local/share/applications размещены desktop-файлы.
Появилась возможность изменения тем оформления на лету (сразу после редактирования CSS-файлов) без перезапуска среды рабочего стола.
Интерфейсы для запуска команд и отслеживания нагрузки на CPU преобразованы в однокнопочные апплеты.
В файловом менеджере список вкладок перемещён в область под заголовком окна, а слайдер для изменения размера пиктограмм - в левый нижний угол.
Опубликован проект pgrust с реализацией СУБД PostgreSQL, переписанной на языке Rust c использованием транслятора c2rust и AI-ассистента. Заявлено, что проект пока не готов для использования в рабочих проектах, но уже успешно проходит все регрессионные тесты PostgreSQL, совместим с форматом хранения данных PostgreSQL 18.3 и может использовать data-каталог от PostgreSQL 18.3. Код проекта распространяется под лицензией AGPLv3, в отличие от оригинального PostgreSQL, поставляемого под пермиссивной лицензией PostgreSQL, близкой к лицензиям BSD и MIT. Доступна online-демонстрация возможностей, основанная на сборке в WebAssembly, а также docker-образ для быстрого запуска.
В качестве цели разработки упоминается достижение полной совместимости с PostgreSQL 18.3, а также проведение экспериментов по изменению внутреннего устройства и созданию версии PostgreSQL, избавленной от архитектурных ограничений, от которых не удаётся избавиться по историческим причинам. Проект успешно проходит набор из более чем 46 тысяч регрессионных тестов PostgreSQL, но пока
несовместим с дополнениями к PostgreSQL, не предоставляет желаемых оптимизиций производительности и не полностью реализует процедурные языки PL/Python, PL/Perl и PL/Tcl.
Оптимизация для рабочих процессов, активно использующих JSON.
Возможность создания копий и ответвлений элементов БД в режиме Copy-on-Write без копирования данных.
Эксперименты с архитектурой, не требующей выполнения операции VACUUM.
Система ограничений SQL-запросов, позволяющая блокировать излишнее потребление ресурсов при выполнении некачественных запросов.
Защита от переключение оптимизатора на менее эффективные планы выполнения запросов.
По словам автора проекта, в настоящее время ведётся работа над следующей версией pgrust, в которой вместо пула рабочих процессов реализована многопоточная модель обработки соединений, а также задействованы дополнительные оптимизации, такие как пакетная обработка строк в таблицах и упреждающая загрузка данных. При тестировании инструментарием percona-tpcc при обработке транзакций новая версия pgrust оказалась быстрее штатного PostgreSQL на 50%, а при обработке аналитических запросов - в 300 раз.
При переводе на Rust использован гибридный подход, при котором код PostgreSQL вначале был обработан при помощи транслятора
c2rust, генерирующего unsafe-представление Rust, близкое по своей структуре к изначальному коду на Си. После обработки в c2rust было создано около 1000 crate-пакетов, которые параллельно переводились на идиоматический Rust при помощи AI-модели Claude и инструментария Conductor для распределения задач между одновременно запускаемыми субагентами.
Опубликован выпуск пакетного менеджера NPM 12.0, входящего в поставку Node.js и применяемого для распространения модулей на языке JavaScript. Новая версия примечательна прекращением по умолчанию запуска скриптов во время установки пакетов. Предполагается, что изменение усложнит проведение атак через компрометацию зависимостей и замедлит распространение червей, активируемых из установочных скриптов.
Для запрета автозапуска скриптов, указанных в package.json через параметры preinstall, install или postinstall, настройка allowScripts по умолчанию выставлена в значение "off". Выполнение подобных скриптов, а также запуск компиляции C/C++ кода утилитой node-gyp при наличии в пакете файла binding.gyp, теперь производится только при получении явной инструкции от пользователя. Помимо этого, параметры "--allow-git" и "--allow-remote" по умолчанию теперь выставлены в значение "none", что отключает автоматическую загрузку зависимостей из Git-репозиториев и по прямым ссылкам на сайты с tar-архивами.
Для организации запуска установочных скриптов следует использовать команду "npm approve-scripts", в качестве аргумента которой передаются имена пакетов, заслуживающих доверия, или опция "--all" для предоставления разрешения всем пакетам. Для сомнительных пакетов рекомендовано запускать команду "npm approve-scripts --allow-scripts-pending", которая выведет список претендующих на запуск скриптов. После проверки данных скриптов их можно разрешить командой "npm approve-scripts" и добавить в белый список в package.json.
Помимо этого анонсирован запрет использования в репозитории NPM GAT-токенов доступа (Granular Access Tokens), настроенных для выполнения действий без двухфакторной аутентификации (2FA). Начиная с августа подобные токены без дополнительного ручного подтверждения действий не позволят выполнять такие операции, как создание или удаление токенов, изменение профиля, пароля или email, настройка двухфакторной аутентификации, генерация кодов восстановления, изменение прав доступа и управление сопровождающими.
В январе 2027 года намерены запретить прямую публикацию пакетов с использование токенов, обходящих 2FA. При этом пакеты можно будет опубликовать в staging-разделе, в котором они будут находиться до ручного подтверждения релиза сопровождающим. После ручного подтверждения опубликованные пакеты станут доступны для установки пользователями.
Для автоматической публикации предлагается использовать механизм "Trusted Publishers", основанный на использовании стандарта OpenID Connect (OIDC) и токенов аутентификации с ограниченным временем действия, которыми обмениваются внешние сервисы и каталог пакетов для подтверждения операции публикации пакета вместо использования традиционных паролей или постоянных токенов доступа к API.
Компания Microsoft опубликовала релиз TypeScript 7.0, языка для разработки web-приложений, расширяющего возможности JavaScript, и связанного с ним инструментария. Выпуск примечателен поставкой нового компилятора typescript-go (tsgo), транслирующего код TypeScript в представление JavaScript, который был переписан на языке Go и теперь признан готовым для сборки рабочих проектов. Инструментарий распространяется под лицензией Apache 2.0, разработка ведётся в публичном репозитории через сервис GitHub. Спецификации языка открыты и опубликованы в рамках соглашения Open Web Foundation Specification Agreement.
Старый компилятор TypeScript был написан на языке TypeScript, что создавало проблемы с масштабированием при использовании в очень больших проектах. При загрузке и проверке кода подобных проектов в интегрированных средах разработки возникали большие задержки, что вынуждало разработчиков жертвовать удобством разработки в пользу сокращения задержек и отключать в редакторах возможности для проверки кода. В экосистеме также назрела потребность в инструментарии командной строки.
В новом компиляторе существенно увеличена скорость сборки, уменьшено потребление памяти и реализована новая архитектура, позволяющая распараллеливать выполнение многих операций, включая парсинг, проверку типов и генерацию кода. Парсинг и генерация кода теперь выполняются независимо для разных файлов.
Помимо этого предоставлен компактный инструментарии командной строки tsc, позволяющий быстро собирать код для проверки его работоспособности.
По функциональности язык TypeScript 7 близок к TypeScript 6 и данные ветки взаимозаменяемы, а компиляторы могут сосуществовать в одной системе. Все необходимые для ветки TypeScript 7 настройки по умолчанию были изменены в выпуске TypeScript 6, в котором также были переведены в разряд устаревших возможности языка, несовместимые с TypeScript 7.
Теоретически любой TypeScript-код, компилируемый в TypeScript 6.0, должен компилироваться и в TypeScript 7.0 при выставлении режима stableTypeOrdering и без использования флагов ignoreDeprecations. Какое-то время кодовые базы TypeScript 6.x и TypeScript 7.x будут параллельно сопровождаться и сосуществовать, пока ветка TypeScript 7 не достигнет зрелого состояния, готового полностью заменить старый инструментарий.
Что касается производительности компилятора, то по сравнению с прошлой веткой скорость сборки в TypeScript 7 возросла при пересборке vscode в 11.9 раз, sentry - в 8.9 раз, bluesky - 8.7 раз, playwright - 8.7 раз, tldraw - 7.7 раз. При этом потребление памяти уменьшилось при сборке vscode на 18%, sentry - 6%, bluesky - 26%, playwright - 11% и tldraw - 15%. Запуск в режиме проверки типов в TypeScript 7 производится в 10.6-16.7 раз быстрее, чем в TypeScript 6.
Язык Go выбран для написания нового компилятора как наиболее близкий к TypeScript по семантике и структуре кода, что позволило сохранить при портировании существующие шаблоны и упростило перенос изменений между кодовыми базами. При этом язык Go обеспечивает высокую производительность, развивается с оглядкой на многопоточное программирование, демонстрирует эффективную работу на многоядерных системах и имеет встроенные средства защиты от проблем при работе с памятью.
Язык TypeScript расширяет возможности JavaScript, оставаясь полностью обратно совместимым, что упрощает перевод существующих приложений на TypeScript. Итоговое приложение на TypeScript компилируется в обычный JavaScript, который можно выполнить в любом современном web-браузере или использовать c платформами Node.js, Bun и Deno. В программах на TypeScript можно использовать существующие JavaScript-библиотеки. От JavaScript язык TypeScript отличается средствами для явного определения типов, а также поддержкой использования полноценных классов. Статическая типизация позволяет избежать многих ошибок в процессе разработки, даёт возможность задействовать дополнительные техники оптимизации, упрощает отладку, делает код более читаемым и простым для доработки и сопровождения.
В результате конфликта с лидером проекта OpenMandriva разработчик Давиде Беатричи (Davide Beatrici), имевший доступ к репозиториям с правами администратора, совершил вредительство, которое привело к повреждению инфраструктуры разработки и нарушению работоспособности систем некоторых пользователей. Беатричи удалил часть GitHub-репозиториев, используемых для разработки компонентов OpenMandriva, а также совершил вредоносные действия в репозитории Cooker, в котором ведётся разработка нестабильной ветки дистрибутива. В частности, он опубликовал пустой пакет, который переводил в категорию устаревших все пакеты GNOME и Cosmic (при помощи тега "Obsoletes:"), что могло нарушить работоспособность систем пользователей, использующих данные среды рабочего стола.
Отмечается, что команда разработчиков OpenMandriva провела аудит активности Беатричи и не выявила других вредоносных действий, помимо вышеупомянутых. В настоящее время ведётся работа по восстановлению удалённых репозиториев и возвращению работоспособности пакетов, переведённых в разряд устаревших. Действия Беатричи стали реакцией на череду событий, возникших после удаления из чата его товарища, отличавшегося токсичным поведением.
Давиде Беатричи известен как один из главных разработчиков приложения для голосового общения Mumble и у команды OpenMandriva не было оснований не доверять ему. Беатричи не внёс большой вклад в разработку OpenMandriva, но выступал с инициативой перевода инфраструктуры разработки с GitHub на принадлежащий ему сервер с платформой OneDev. Инициатива была воспринята неоднозначно, так как часть разработчиков была против перевода репозиториев на систему, контролируемую одним участником, и дело не продвинулось дальше создания зеркал на OneDev.
В связанном с инцидентом заявлении лидера OpenMandriva, указано, что вместе с Беатричи к проекту OpenMandriva присоединились два его знакомых. Один из них через какое-то время стал вести себя оскорбительно по отношению к другим разработчикам и пользователям, некоторые из которых после этого покинули проект. Недопустимое поведение не было замечено сразу, так как по большей части проявлялось в личной переписке. После открытых нападок на одного из участников в matrix-чате и в обсуждениях на GitHub, лидер проекта удалил обидчика из чата.
Удаление вызвало недовольство двух участников, включая Беатричи, которые в знак протеста покинули проект. Не видя смысла поддерживать зеркала в инфраструктуре, контролируемой Беатричи, лидер проекта решил отключить для них доступ. В ответ Беатричи злоупотребил остающимися у него правами администратора и совершил вредительство.
Следом за портированием Linux на Sega MegaDrive реализована возможность запуска ядра Linux с набором утилит Busybox на игровой консоли Atari Jaguar, выпущенной в 1993 году. Приставка комплектовалась CPU Motorola 68000, поставлялась с 2 МБ ОЗУ и в качестве постоянного хранилища могла использовать картриджи, объёмом до 6 МБ. Устройство было оснащено двумя сопроцессорами: Tom (GPU c 32-разрядной архитектурой RISC + 64-разрядный процессор обработки видео + 64-разрядный процессор для выполнения логических операций) и Jerry (DSP с 32-разрядной архитектурой RISC для работы со звуком).
По аналогии с портом для Sega MegaDrive для выполнения ядра Linux на CPU Motorola 68000, не имеющем аппаратного модуля управления памятью (MMU), штатное ядро 7.2.0-rc1 было собрано в применяемом для микроконтроллеров режиме "NOMMU", позволяющем использовать плоскую модель памяти с линейным адресным пространством (ранее наработки для работы без MMU развивались в форке ядра uClinux, но затем были приняты в основной состав ядра в форме опции "NOMMU"). Проблема с нехваткой оперативной памяти была решена иначе, через задействование механизма execute-in-place (XIP), позволяющего напрямую выполнять код ядра из ПЗУ без копирования в оперативную память.
ОЗУ на устройстве отражено по адресу 0x000000, а ПЗУ (картридж) - по адресу 0x80000, соответственно компоненты ядра Linux были разделены на две отдельные области памяти: секции .rodata и .text с константами и кодом были размещены на картридже, а секции .data и .bss с изменяемыми данными в оперативной памяти. Так как CPU 68000 ищет таблицу векторов прерываний по адресу 0x0, а ядро фактически размещается на картридже, содержимое которого отражено по адресу 0x80000, дополнительно был применён хак с копированием векторов прерываний в ОЗУ.
Проблема с отсутствием таймера в CPU Motorola 68000 была решена через задействование таймеров, используемых в DSP для синтеза звука. Данные таймеры были применены для генерации прерываний для активации планировщика задач. Для вывода сообщений ядра во время загрузки был написан отдельный драйвер консоли, осуществлявший вывод с симуляцией параллельного порта через выводы TXD и RXD, управляемые через DSP-процессор.
Для сборки компонентов пространства пользователя был задействован инструментарий Buildroot с патчами от проекта LinuxMD. Для экономии памяти при инициализации напрямую вызывалась командная оболочка "/bin/busybox sh", функция malloc в библиотеке uClibc была заменена на упрощённый вариант malloc-simple, не сохраняющий дополнительные метаданные,
а вместо полноценного загрузчика, такого как U-Boot, выполнялась прямая передача управления ядру командой "jmp $80000".
Опубликован релиз дистрибутива Deepin 25.2, развивающего собственный рабочий стол Deepin Desktop Environment (DDE), а также около 40 пользовательских приложений, среди которых музыкальный проигрыватель Deepin Music, видеоплеер Deepin Movie, инсталлятор и центр установки программ Deepin Store. Проект основан группой разработчиков из Китая, но трансформировался в международный проект и поддерживает русский язык. Репозиторий дистрибутива включает более 8000 пакетов. Все наработки распространяются под лицензией GPLv3. Размер загрузочных iso-образов 6.5 ГБ (amd64, arm64, riscv64 и loongarch64).
Компоненты рабочего стола и приложения разрабатываются с использованием языков C/C++ и Go. Графический интерфейс построен с использованием библиотеки Qt. Ключевой особенностью рабочего стола Deepin является панель, которая поддерживает несколько режимов работы. В классическом режиме осуществляется более явное отделение открытых окон и предлагаемых для запуска приложений, отображается область системного лотка. Эффективный режим чем-то напоминает Unity, смешивая индикаторы запущенных программ, избранных приложений и управляющих апплетов (настройка громкости/яркости, подключённые накопители, часы, состояние сети и т.п.). Интерфейс запуска программ предоставляет два режима - просмотр избранных приложений и навигация по каталогу установленных программ.
Значительно повышена стабильность экспериментального десктоп-окружения Treeland Desktop Environment, построенного на базе композитного сервера Treeland Window Compositor, отличающегося высокой производительностью анимированных эффектов и поддержкой управления жестами на тачпаде. Добавлены возможности для управления устройствами ввода, настройки параметров экрана, персонализации и управления энергопотреблением. Расширены средства для многомониторных конфигураций - появился режим клонирования вывода на несколько экранов, продления содержимого на другой экран, выставления разных разрешений экрана и коэффициентов масштабирования для подключённых мониторов. Обеспечена корректная работа динамических обоев рабочего стола и перехода в ждущий режим или отключения экрана при неактивности.
Расширены возможности поиска. Добавлены настройки индексации файлов, позволяющие включать, отключать и обновлять индексы в разделе расширенной конфигурации файлового менеджера. Ускорен поиск по именами файлов. Добавлена опция для включения при индексации оптического распознавания текста на изображениях, что может быть полезным для поиска скриншотов и отсканированных документов. В результатах поиска для наглядности реализован показ отрывков текста и участков изображений, совпадающих с заданными в запросе ключевыми словами. Улучшено извлечение содержимого документов при поиске. Внесены изменения для повышения точности поиска.
В файловом менеджере оптимизирована работа с совместными сетевыми хранилищами, повышена безопасность монтирования и отмонтирования, улучшена работа с внешними накопителями.
В среде рабочего стола DDE (Deepin Desktop Environment) в панели задач в режиме раздельного показа окон реализовано отображение разных пиктограмм для разных окон одного приложения.
В настройках экрана предоставлена возможность объединения нескольких рядом расположенных мониторов в один неразрывный логический экран, на котором, например, можно показывать презентации или визуализировать данные с систем мониторинга.
Реализован умный режим выбора зеркал для загрузки обновлений, автоматически предлагающий наиболее близкое зеркало или позволяющий пользователю вручную выбрать зеркало после тестирования скорости загрузки с разных зеркал.
Оптимизированы операции, связанные с запуском программ, использованием сенсорного экрана, работой панели задач, выставлением фокуса ввода, показом всплывающих уведомлений и переключением между окнами. Оптимизирована логика определения доступных сетей и переключения между сетями в конфигурациях с несколькими сетевыми адаптерами.
Обновлены пакеты с ядром, поставляемые с ветками 6.6 и 6.18. Обновлены версии Qt6, initramfs, ALSA, PipeWire, libvirt, os-config, deepin-debug-config, OpenSSL, OpenSSH, curl, poppler, xorg-server, xwayland, ffmpeg и других базовых пакетов.
В эмуляторе терминала оптимизировано выполнение команд и применение темы оформления.
В архиваторе оптимизирована обработка архивов, переделаны диалоги ввода пароля и улучшено извлечение файлов с длинными именами.
В почтовом клиенте улучшен перенос учётных записей.
В просмотрщике документов реализована построчная прокрутка с помощью стрелок управления курсором.
Обновлены конфигуратор методов ввода, голосовой блокнот, просмотрщик логов, системный монитор и другие компоненты.
Компания Valve опубликовала релиз проекта Proton 11.0-1, основанного на кодовой базе проекта Wine и нацеленного на обеспечение запуска в Linux игровых приложений, созданных для Windows и представленных в каталоге Steam. Выпуск 11.0-1 отмечен как первый стабильный релиз ветки 11.0. Наработки проекта распространяются под лицензией BSD.
Proton позволяет напрямую запускать в Linux-клиенте Steam игровые приложения, поставляемые только для Windows. Пакет включает в себя реализацию DirectX 8/9/10/11 (на базе пакета DXVK) и DirectX 12 (на базе vkd3d-proton), работающие через трансляцию вызовов DirectX в API Vulkan, предоставляет улучшенную поддержку игровых контроллеров и возможность использования полноэкранного режима независимо от поддерживаемых в играх разрешений экрана. Для увеличения производительности многопоточных игр поддерживаются механизмы "esync" (Eventfd Synchronization) и "futex/fsync".
До версии 2.7.1 обновлена прослойка DXVK, транслирующая вызовы в API Vulkan. VKD3D-Proton, ответвление от vkd3d, созданное Valve для улучшения поддержки Direct3D 12 в Proton, обновлено до состояние репозитория от 10 апреля.
Проект LineageOS ввёл в строй новый раздел со статистикой использования прошивок. Заявлено, что проект насчитывает почти 1.5 млн активных установок, из которых только 26% (374 тысячи) приходится на официальные сборки, а 74% (1.1 млн) затрагивают неофициальные сборки, собранные сторонними проектами. В рейтинге устройств лидирует не смартфон, а Waydroid - окружение для запуска Android-приложений в Linux. На втором месте смартфон Xiaomi Mi 8, который по числу установок более чем в 2 раза отстаёт от Waydroid.
Наибольшее число установок приходится на США (339 тысяч установок), Китай (298 тысяч), Бразилию (280 тысяч), Россию (62 тысячи) и Вьетнам (55 тысяч). В России и в США 2/3 установок произведено не на смартфоны: в США пользуются популярностью установки в Waydroid, Nintendo Switch и Raspberry Pi, а в России почти все установки приходятся на запуск в Waydroid. В Китае, Бразилии и Вьетнаме большая часть установок приходится на смартфоны: в Китае по числу установок с большим отрывом лидирует Xiaomi Mi 8, в Бразилии - Motorola moto g7, а во Вьетнаме - Samsung Galaxy S7.
Общий рейтинг применения LineageOS:
Waydroid - 231 тысяча установок.
Xiaomi Mi 8 - 111 тысяч.
Motorola moto g7 power - 50 тысяч.
Samsung Galaxy S7 - 42 тысячи.
Motorola moto g7 play - 39 тысяч.
Xiaomi Mi 10T и Xiaomi Redmi K30S Ultra - 38 тысяч.
Samsung Galaxy S7 Edge - 27 тысяч.
Xiaomi Mi 6 - 26 тысяч.
Только в 8.8% установок используется последняя версия LineageOS 23.2, а в 8.1% и 5.4% - версии 22.2 и 21.1, для которых оперативно формируются обновления с устранением уязвимостей.
73.4% установок приходится на устаревшие версии 20.0 (29.9%), 18.1 (23.7%), 17.1 (14.3%) и 19.1 (5.5%). Для веток LineageOS 18, 19 и 20 бэкпортирование патчей с устранением уязвимостей продолжается и на данный момент для них доступны исправления из июльского обновления Google. Для веток LineageOS 14, 15, 16 и 17 процесс бэкпортирования существенно усложнён из-за изменений в кодовых базах. Для веток LineageOS 16 и 17 пока доступны обновления по состоянию на ноябрь 2025 года. Для веток LineageOS 14 и 15 в ближайшие время планируют адаптировать патчи за ноябрь 2025 года.
Из других недавних достижений LineageOS можно отметить начало разработки LineageOS 24 на базе Android 17 и появление web-интерфейса для установки прошивки через браузеры на движке Chromium, поддерживающие API WebUSB. Возможна перепрошивка в режимах ADB (Recovery mode),
Fastboot (Fastboot / Fastbootd) и Odin (Samsung).
Также упоминается значительное обновление приложения Updater, в котором задействован новый интерфейс, использующий концепцию дизайна Material 3 Expressive. Осуществлён переход на использование по умолчанию режима потоковой установки пакетов A/B OTA-обновлений, которые распаковываются в неактивный системный раздел по мере загрузки, без предварительного сохранения в файл, что снизило потребление памяти и ускорило установку обновлений.
Во FreeBSD устранено 22 уязвимости, из которых одна потенциально позволяет удалённо выполнить код с правами root, а 13 дают возможность повысить свои привилегии в системе. Уязвимости устранены в обновлениях FreeBSD 15.1-RELEASE-p1, FreeBSD 15.0-RELEASE-p11, 14.4-RELEASE-p7 и 14.3-RELEASE-p16.
Наиболее опасная уязвимость (CVE-2026-49420) вызвана переполнением буфера в библиотеке libalias, применяемой в работающем на уровне ядра пакетном фильтре ipfw и в выполняемом в пространстве пользователя фоновом процессе natd для трансляции адресов отправляемых или принимаемых сетевых пакетов. Переполнение возникало в обработчике протокола RTSP (Real Time Streaming Protocol), который перезаписывал исходящие сетевые пакеты с использованием буфера фиксированного размера без проверки того, помещается ли в него результат перезаписи пакета.
Во время обработки на NAT-шлюзе специально оформленного RTSP-трафика может возникнуть переполнение стека, потенциально способное привести к удалённому выполнению кода на уровне ядра или процесса natd, выполняемого в системе с правами root.
В качестве обходных путей для блокирования уязвимости можно блокировать загрузку модуля ядра alias_smedia.ko и убрать упоминание обработчика libalias_smedia.so из файла конфигурации /etc/libalias.conf. Если не используется протокол RTSP на межсетевом экране можно заблокировать трафик на сетевые порты 554 и 7070 в правилах, указанных до срабатывания правил NAT.
Уязвимости, приводящие к получению прав root непривилегированным локальным пользователем:
CVE-2026-49415 - состояние гонки в системном вызове execve, позволяющее локальному пользователю при выполнении исполняемых файлов с флагом SUID root модифицировать адресное пространство процесса через procfs или linprocfs в небольшое временное окно, возникающее после настройки нового виртуального адресного пространства процесса, но до обновления данных о его владельце.
CVE-2026-49422 - обращение к уже освобождённой памяти (Use-after-free) в модуле ядра tcp_rack.ko с реализацией алгоритма определения потери TCP-пакетов RACK (Recent ACKnowledgment). Уязвимость можно эксплуатировать для повышения привилегий через манипуляции с локальным сокетом.
CVE-2026-49419 - переполнение счётчика ссылок за нижнюю границу (underflow) в реализации механизма изоляции Jail. Через манипуляции c jail-окружениями с использованием jail-дескрипторов при помощи функций jail_set и jail_get атакующий может добиться сброса счётчика ссылок и освобождения памяти под структуру, которая продолжает использоваться в ядре, что потенциально может быть эксплуатировано для повышения своих привилегий.
CVE-2026-49429 - переполнение буфера в OpenZFS, позволяющее локальному пользователю с ZFS-правами "userused" повысить свои привилегии через манипуляции с ioctl ZFS_IOC_USERSPACE_MANY.
CVE-2026-49427, CVE-2026-49428 - уязвимости в реализации объектов разделяемой памяти "largepage", приводящие к обращению к уже освобождённой памяти в ядре, что может быть эксплуатировано для повышения своих привилегий через манипуляции с функцией sendfile с флагом SF_NOCACHE или функциями open и fspacectl с флагом O_TRUNC.
CVE-2026-49421 - некорректная обработка флага AT_RESOLVE_BENEATH в системных вызовах unlinkat и funlinkat может использоваться для удаления файлов за пределами базовой директории в конфигурациях с ограниченным доступом к ФС.
CVE-2026-49418 - обращение к памяти после её освобождения в подсистеме виртуальной памяти, возникающее при вызове функции msync(MS_INVALIDATE) для маппинга памяти устройства. Атакующий, имеющий доступ к устройству с поддержкой маппинга в память, может использовать уязвимость для повышения своих привилегий.
CVE-2026-49416 - целочисленное переполнение в драйвере консоли vt, позволяющее локальному пользователю потенциально повысить свои привилегии через отправку ioctl CONS_HISTORY, указав слишком большой размер.
CVE-2026-49413 - уязвимость в Linuxulator, позволяющая непривилегированному пользователю подставить свою разделяемую библиотеку через переменную окружения LD_PRELOAD в исполняемый файл с флагом suid и выполнить свой код с привилегиями данного исполняемого файла.
CVE-2026-49412 - обращение к уже освобождённой памяти в обработчике опции IPV6_MSFILTER в сокетах, позволяющее повысить свои привилегии.
CVE-2026-45258 - проблемы с реализацией поддержки маппинга памяти (mmap) в драйвере sound, позволяющие читать и записывать данные в области памяти ядра через манипуляции с устройством /dev/dsp, по умолчанию доступным всем на запись.
CVE-2026-45257 - уязвимость в модуле ядра ktls, позволяющая перезаписать в страничном кэше любой файл, доступный на чтение атакующему. Перезаписав подобным образом suid root файл, например, /bin/su, атакующий может получить права root в системе (эксплоит).
Менее опасные уязвимости:
CVE-2026-49430, CVE-2026-49431 - уязвимости в OpenZFS, приводящие к повреждению памяти ядра и возможности выставления флага "$hasrecvd", не имея на это полномочий.
CVE-2026-49426 - некорректное создание записей аудита для вызовов ptrace. Может использоваться атакующим для обхода систем обнаружения вторжений.
CVE-2026-49423 - удалённая DoS-уязвимость в подсистеме ядра KTLS, эксплуатируемая через отправку специально оформленных TLS-пакетов. Проблема проявляется только на системах использующих KTLS для ускорения обработки TLS (kern.ipc.tls.enable=1).
CVE-2026-49424 - утечка 104 байт из неинициализированного стека ядра в реализации системного вызова waitid() в Linuxulator.
CVE-2026-49425 утечка данных из неинициализированного стека ядра в подсистеме compat32.
CVE-2026-58081, CVE-2026-58082 - переполнения буфера в библиотеке iconv, которые могут быть использованы для атаки на приложения, использующие iconv для преобразования не заслуживающих доверия внешних данных в кодировках HZ, UTF-7, VIQR, ZW и ISO-2022.
Рави Шарма (Ravi Sharma) из команды Ubuntu Foundations Team подвёл итоги работы, проведённой за последний год для обеспечения полноценной поддержки архитектуры ARM64 в Ubuntu. Отмечается, что благодаря улучшению инструментария и инфрастурктуры, а также продвижению изменений в основной состав ядра Linux, за год удалось решить специфичные для ARM64 проблемы, такие как распространение пакетов через отдельный репозиторий, отсутствие поддержки live-патчей для ядра, ограниченные возможности для любителей компьютерных игр и недоступность Secure Boot на ноутбуках с чипами Qualcomm Snapdragon.
Основные достижения:
Пакеты для архитектуры ARM64 перенесены из портов (ports.ubuntu.com) в основной архив Ubuntu (archive.ubuntu.com), что позволило задействовать для их распространения ту же инфраструктуру, что используется для архитектуры x86_64. Пакеты для ARM64 теперь доставляются через первичную систему зеркал, что повысило скорость и надёжность при их загрузке. Миграция потребовала внесения изменений в пакеты cloud-init, live-build, livecd-rootfs и ubuntu-release-upgrader. Изменения вошли в состав Ubuntu 26.04 и в процессе бэкпортирования для Ubuntu 24.04 LTS.
Cервис Livepatch, позволяющий вносить исправления в ядро Linux на работающей системе без перезагрузки, распространён на системы на базе архитектуры ARM64. Ранее Live-патчи распространялись только для архитектуры x86_64, так как в ядре Linux для архитектуры ARM64 отсутствовала поддержка надёжных трассировок стека (CONFIG_HAVE_RELIABLE_STACKTRACE) для выявления активности, связанной с обработкой прерываний, а в инструментарии objtool и kpatch отсутствовали полноценные возможности для оценки состояния до и после применения патча. Поддержка Live-патчей для ARM64 предоставлена для Ubuntu 26.04 LTS и Ubuntu Core 26.
Сформирован стабильный snap-пакет с клиентом Steam, собранный для архитектуры ARM64. Так как клиент Steam для Linux доступен только для архитектуры x86, для его запуска на системах ARM64 задействован слой эмуляции на базе пакета FEX. При эмуляции поддерживается проброс GPU и использование Wine, Proton, DXVK и vkd3d для выполнения компьютерных игр, собранных для архитектуры x86_64 и распространяемых через каталог Steam. Работа snap-пакета протестирована на ноутбуках с чипами Qualcomm Snapdragon X Elite, NVIDIA DGX Spark и Radxa Orion O6.
Добавлена поддержка ноутбуков на базе чипов Qualcomm Snapdragon X Elite, таких как Lenovo Thinkpad X13s/T14s и Dell XPS 9345. Изначально поддержка данных устройств была добавлена в базовый iso-образ для систем ARM64, но его невозможно было использовать для загрузки в режиме Secure Boot из-за использования отдельных конфигураций Device Tree, которые прошивка ноутбуков не передавала ядру Linux. Необходимые настройки Device Tree загружались загрузчиком GRUB из отдельного файла, который не охватывался цифровой подписью.
Для решения проблемы ядро и база данных Device Tree были объединены в одном монолитном EFI-файле, похожем на UKI (Unified Kernel Image), подписанном цифровой подписью дистрибутива. Для загрузки этого файла была создана новая EFI-прослойка "stubble", при загрузке определяющая модель устройства через SMBIOS, выбирающая нужные данные Device Tree и подставляющая их в ядро, не нарушая цепочку доверия Secure Boot. Ведётся работа над реализацией поддержки ноутбуков на чипах Snapdragon X2 Elite.
Подготовлен прототип загрузочного образа на базе Ubuntu 26.04 для ноутбуков на ARM64 SoC CIX P1, который в отличие от Snapdragon позволяет определять конфигурацию через таблицы ACPI без применения Device Tree.
Компания Google анонсировала публикацию официальных сборок Chrome для Linux-систем на базе архитектуры ARM64, что позволит запускать в ARM64-сборках Ubuntu браузер Chrome, содержащий CDM-модуль (Content Decryption Module) Widevine, который недоступен в Chromium. Поставка Widevine даст возможность без сторонних патчей просматривать медиаконтент, защищённый авторскими правами (DRM), размещаемый на таких сервисах, как Netflix, Spotify и Disney+. Кроме того, поддержку Widevine намерены интегрировать в snap-пакеты с Firefox и Spotify.
Добавлены новые сборки приложений, доступные в формате snap для архитектуры ARM64. Среди прочего, для ARM64 началась публикация snap-пакетов с OnlyOffice, FreeCAD и Teams for Linux.
В прошивках, применяемых в потребительских и промышленных маршрутизаторах, коммутаторах, беспроводных точках доступа и системах видеонаблюдения компании Tenda, выявлен бэкдор (CVE-2026-11405), позволяющий получить доступ к web-интерфейсу с правами администратора в обход штатного процесса аутентификации и независимо от настроек учётной записи администратора. Предоставляемые права доступа позволяют управлять всеми настройками, манипулировать трафиком, отключить средства защиты и использовать устройство как плацдарм для атаки на системы в локальной сети.
Проблема вызвана наличием в процессе /bin/httpd недокументированной функциональности, встроенной в функцию login(). В случае неудачного завершения штатной проверки пароля по хэшу на основе алгоритма MD5 для любого логина, в коде вызывалась функция GetValue("sys.rzadmin.password"), проверяющая совпадение пароля со значением, предопределённым в прошивке в открытом виде. В случае совпадения, независимо от указанного логина, создавался сеанс с правами администратора.
Для использования бэкдора достаточно наличия доступа для отправки запросов к устройству по HTTP или HTTPS. В качестве обходной меры защиты рекомендуется запретить обращение к встроенному в прошивки HTTP-серверу из внешних сетей.
После трёх месяцев разработки опубликован выпуск OpenSSH 10.4, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP. Основные изменения:
Добавлена экспериментальная поддержка комбинированной схемы формирования цифровых подписей "mldsa44-ed25519", сочетающий постквантовый алгоритм ML-DSA 44 и алгоритм на базе эллиптических кривых Ed25519. Для включения поддержки следует добавить "mldsa44-ed25519" в директивы HostKeyAlgorithms и PubkeyAcceptedAlgorithms. Для генерации ключей можно использовать команду "ssh-keygen -t mldsa44-ed25519".
В ssh и sshd задействована новая реализация системы сопоставления по шаблону, основанная на недетерминированном конечном автомате и не подверженная проблеме экспоненциального роста сложности вычислений при использовании масок, содержащих много символов "*".
Изменено поведение Linux-сборок sshd с включённой фильтрацией системных вызовов при помощи seccomp. Ранее сбой при активации
SECCOMP или NO_NEW_PRIVS на Linux-системах без их поддержки приводил к записи в лог предупреждения и продолжения работы без изоляции, а теперь станет приводить к аварийному завершению.
При использовании опции "sshd -G" в дамп конфигурации директивы теперь записываются с использованием прописных и строчных букв, вместо записи только строчными буквами (т.е. "PubkeyAuthentication" вместо "pubkeyauthentication").
Поведение ssh и sshd приведено к соответствию стандарту RFC 4253: отправка во время повторного обмена ключами сообщений, не связанных с обменом ключами, теперь будет приводить к завершению соединения. Ранее злоумышленники могли устроить DoS-атаку, бесконечно отправляя в процессе обмена ключами сторонние сообщения, которые буферизировались на сервере и расходовали память.
Устранено несколько проблем с безопасностью:
В утилите ssh устранено потенциальное обращение к памяти после её освобождения (use-after-free) при обращении к вредоносному серверу. Проблема эксплуатируется через изменение хостового ключа в процессе повторного обмена ключами.
Уязвимость в sftp, позволяющая организовать загрузку файла в другую директорию при обращении к вредоносному серверу с использованием команды вида "sftp host:/path .".
Уязвимость в scp, позволяющая при копировании файлов между двумя внешними серверами, один из которых подконтролен атакующему, организовать запись файлов в родительскую директорию, находящуюся на уровень ниже целевой директории.
Устранена проблема в sshd, проявляющаяся при использовании внутренней реализации SFTP-сервера ("internal-sftp"), отключённой по умолчанию. Проблема связана с отсечением длинных последовательностей в командной строке после 9 аргумента, приводящей к отбрасыванию следующих аргументов. Таким образом потенциально могут быть отброшены опции, связанные с обеспечением безопасности.
В sshd устранена недоработка, из-за которой директива "DisableForwarding=yes" не отключала возможность создания туннелей, разрешённых опцией "PermitTunnel=yes" (по умолчанию не выставляется).
В sshd устранена проблема, которую можно использования для инициирования отказа в обслуживании на стадии до прохождения аутентификации при включении в настройках директивы GSSAPIAuthentication (отключена по умолчанию). Проблема не блокируется через лимит "MaxAuthTries", но подпадает под действие ограничения "PerSourcePenalties".
В sshd устранены недоработки, из-за которых не всегда добавлялась минимальная задержка между попытками аутентификации.
Компания Google опубликовала релиз web-браузера Chrome 150. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей RLZ-параметров при поиске. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 151 запланирован на 28 июля.
Предложены первые результаты инициативы по обновлению оформления интерфейса на разных операционных системах и его избавления от излишеств. Задействованы новые пиктограммы с более сглаженными границами и анимационные эффекты для кнопок, таких как кнопки открытия главного меню и перезагрузки страницы. Упрощена структура контекстных меню, из которых исключены редко используемые или дублирующиеся элементы. Задействовано более современное оформление конфигуратора, менеджера загрузок и страницы для навигации по закладкам.
Продолжено развитие AI-режима, позволяющего взаимодействовать с AI-агентом из адресной строки или со страницы, показываемой при открытии новой вкладки. В новой версии добавлена возможность подключения Chrome к AI-агенту Gemini Spark для автономного выполнения действий в текущей активной вкладке в процессе решения поставленных задач, требующих взаимодействия с web-контентом (нажатие на кнопки, переход по ссылкам, заполнение форм и т.п.). Кроме того, добавлен вывод контекстных рекомендаций по задействованию Gemini при работе с браузером, например, при открытии большой статьи Chrome предложит резюмировать информацию при помощи Gemini, а при редактировании текста в форме порекомендует проверить или исправить текст через Gemini.
У части пользователей задействован единый упрощённый интерфейс для привязки к учётной записи в Google и синхронизации данных, таких как сохранённые пароли и закладки. Синхронизация интегрирована с входом в учётную запись и не преподносится как отдельная возможность в настройках. Пользователи могут подключить Chrome к учётной записи в Google и использовать её для хранения паролей, закладок, истории посещений и вкладок. Данные для автозаполнения адресов и автодополнения ввода теперь не синхронизируются между устройствами и хранятся только на локальной системе.
У части пользователей, активировавших режим расширенной защиты браузера (Enhanced Safe Browsing), включена функция "HTTPS-First", выполняющая автоматическое перенаправление HTTP-запросов на HTTPS. Для обеспечения работы с сайтами, не поддерживающими HTTPS, реализован откат на HTTP, если после перенаправления не удаётся выполнить запрос по HTTPS или возникают проблемы с сертификатами. При попытке открытия сайта по HTTP выводится специальное предупреждение. В Chrome 154 режим планируют включить по умолчанию для всех публично доступных сайтов, размещаемых не в интранет сетях, таких как 192.168.0.1/16 и 10.0.0.0/8.
Удалена поддержка флага kExtensionManifestV2Disabled, позволявшего вернуть возможность установки из каталога Chrome Web Store дополнений, использующих вторую версию манифеста Chrome. В следующем выпуске Chrome 151 будет удалён параметр AllowLegacyMV2Extensions, позволявший вручную в режиме разработчика загружать дополнения на базе второй версии манифеста. Отмеченные флаги позволяли обходным путём установить дополнение uBlock Origin.
Обработчики Web Worker, созданные с использованием URI "data:" (например, через "new Worker('data:text/javascript....')", теперь изолируются от страницы, на которой были созданы, и не имеют доступа к локальным хранилищам и Cookie в контексте текущего домена. Изменение позволяет блокировать использование Web Worker-ов, не загруженных с сервера, а на лету созданных через "data:", для доступа к конфиденциальным данным в процессе XSS-атак.
Реализована защита от атак, манипулирующих ограничением на максимальное число соединений к прокси в качестве скрытого канала связи между JavaScript-кодом, выполняемым в разных вкладках, или для определения посещался ли определённый сайт ранее. Например, атакующий может занять все доступные соединения к прокси, оставив не занятым лишь один сокет, после чего анализировать его доступность при обращении к статичному ресурсу - если сокет не занят, ресурс с проверяемого сайта отдан из кэша, т.е. пользователь уже загружал его ранее. Лимит на максимальное число соединений к TCP-сокетам прокси теперь варьируется случайным образом.
Запрещено применение SVG-фильтров к чужим (cross-origin) или изолированным (sandboxed) iframe-блокам, а также к плагинам (например, встроенному PDF-просмотрщику). Ограничение позволяет защититься от атак по сторонним каналам, типа GPU.zip, и атак класса SVG Clickjacking, при которых SVG-фильтры используются для наложение прозрачного содержимого на другой контент с целью подстановки невидимой кнопки, например, поверх кнопки закрытия окна с рекламой.
Для обособленных web-приложений (PWA, Progressive Web App) предоставлена возможность переноса на новый поддомен в пределах одного базового домена (например, замены drive.example.com на fileman.example.com) без участия пользователя (ранее PWA-приложение привязывалось к исходному домену и в случае смены поддомена, например, при ребрендинге или реструктуризации, требовалась ручная переустановка).
В TLS включена по умолчанию поддержка алгоритма формирования цифровой подписи ML-DSA (CRYSTALS-Dilithium), стойкого от подбора на квантовом компьютере.
В версии для Android реализована поддержка стандарта FIDO Alliance Credential Exchange, позволяющего импортировать и экспортировать сохранённые пароли и параметры биометрической идентификации с использованием сквозного шифрования на стороне клиента, например, для защищённого переноса между Google Password Manager и сторонними менеджерами паролей.
В версии для Android в конфигураторе предложен новый унифицированный интерфейс для управления сохраняемыми паролями и данными автозаполнения форм. Идея в том, чтобы пользователь разом мог получить информацию о разных классах сохраняемых браузером конфиденциальных данных, таких как пароли, данные биометрической аутентификации, адреса и паспортные данные.
Добавлено CSS-свойство "text-fit" для автоматического масштабирования размера шрифта, чтобы текст вписывался в ширину родительского контейнера (например, когда нужно разместить заголовок в заданной области без переноса хвоста на другую строку или адаптировать шрифт для разных разрешений экрана).
В CSS-свойство "background-clip добавлена поддержка параметра "border-area", упрощающего создание границ с градиентом, благодаря отрисовке фона элемента строго в зоне, которую занимает рамка.
Добавлена CSS-функция image(), позволяющая сгенерировать изображение с заливкой заданным цветом.
В режиме Origin trials началось тестирование протокола EVP (email verification protocol) для автоматического криптографического подтверждения владения email без необходимости отправки на почту одноразовых кодов подтверждения.
Добавлен HTML-атрибут focusgroup для декларативного управления переключением фокуса ввода с клавиатуры внутри составных компонентов, таких как меню, без использования JavaScript. Например, после выхода из группы элементов клавишей Tab и возвращения обратно, браузер вернёт фокус на последний активный элемент, а не на первый элемент в списке.
Внесены улучшения в инструменты для web-разработчиков. Добавлены возможности для инспектирования и отладки инструментария WebMCP, применяемого для интеграции сайтов с AI-агентами при помощи протокола MCP. В панели со стилями разрешено редактирование по месту
правил "@container", "@counter-style" и "@function".
Кроме нововведений и исправления ошибок в новой версии устранено 433 уязвимости. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Двадцати проблемам присвоен критический уровень опасности, подразумевающий, что уязвимости позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения. 14 критических проблем вызваны обращением к уже освобождённой памяти (use-after-free), 3 - недостаточной проверкой не заслуживающих доверия входных данных, 2 - переполнением буфера и 1 - неправильной обработкой типов (Type Confusion). В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 319 тысяч долларов США (одна премия в 250 тысяч долларов (CVE-2026-14382 в библиотеке ANGLE), три премии по $10000, $2500, $2000 и $1000, две премии $3000 и по одной премии $8000, $5000 и $4000.