Вернер Кох (Werner Koch), основной разработчик и создатель проекта GnuPG (GNU Privacy Guard), основал проект LibrePGP, сосредоточенный на развитии обновлённой спецификации, альтернативной стандарту OpenPGP. Форк был создан в ответ на изменения, намеченные рабочей группой IETF для внесения в следующее обновление спецификации OpenPGP (RFC-4880) и воспринятые Кохом как сомнительные с точки зрения сохранения совместимости и обеспечения безопасности. Поддержавшие форк разработчики проектов GnuPG, RNP (реализация OpenPGP от Thunderbird) и Gpg4win опасаются, что намеченные изменения окажутся губительны для существующих внедрений приложений на базе OpenPGP, пользователи которых рассчитывают на стабильность спецификации в длительной перспективе и не готовы мириться с изменениями, нарушающими совместимость.
LibrePGP включает полезные улучшения, последние годы развивавшиеся для будущего варианта спецификации OpenPGP, но при этом исключает изменения, негативно влияющие на обеспечение совместимости. Например, по сравнению с действующим стандартом RFC-4880 в LibrePGP приняты такие возможности, как:
Поддержка алгоритма шифрования Camellia (RFC-5581),
Расширения ECC (Elliptic Curve Cryptography) для OpenPGP (RFC-6637).
Обязательная поддержка хэшей SHA2-256 (SHA-1 и MD5 отнесены к категории не рекомендованных, а возможность расшифровки данных без версификации целостности отнесена к категории полностью устаревших).
Увеличение до 256 бит размера проверочного слепка (fingerprint).
Поддержка схемы цифровых подписей EdDSA и эллиптических кривых BrainpoolP256r1, BrainpoolP384r1, BrainpoolP512r1, Ed25519, Curve25519, Ed488 и X448.
Поддержка алгоритма CRYSTALS-Kyber, устойчивого к подбору на квантовых компьютерах.
Поддержка режимов аутентифицированного шифрования OCB (Offset codebook mode).
Реализация пятой версии формата цифровых подписей с защитой метаданных.
Поддержка расширенных субпакетов с цифровыми подписями.
Рабочая группа IETF вместо постепенного инкрементального обновления спецификации попыталась заново переизобрести стандарт и внести в него значительные изменения, нарушающие совместимость.
Навязывание поддержки симметричного режима шифрования GCM (Galois/Counter Mode), который трудно реализовать правильно, игнорируя при этом режим OCB (Offset codebook mode), патенты на который истекли несколько лет назад.
Добавление опциональных пакетов со случайным добавочным заполнением для защиты от анализа трафика. По мнению создателей LibrePGP, подобные пакеты с непроверяемым начальным случайным заполнением создают угрозу использования для создания скрытых каналов передачи данных и обхода систем предотвращения утечек данных. Ранее идея включения добавочного заполнения отвергалась, как являющаяся объектом не уровня шифрования, а уровня приложения.
Применение модифицированной схемы шифрования ECDH (изменение формата OID), вместо использования уже описанного в RFC-6637 и реализованного в PGP и GnuPG варианта.
Удаление некоторых используемых на практике возможностей, таких как классический метод отзыва ключей, флаг "m" для пометки MIME-данных и флаг "t" для отделения текстовых данных от бинарных (на смену флагу "t" пришёл флаг "u" для текста в кодировке UTF-8).
Отказ включать в новый формат подписей защиту метаданных подписанного файла (например, можно не нарушая подписи изменить имя файла).
Сомнительная возможность добавления "соли" к подписям (Salted signature) для усиления защиты от коллизионных атак с заданным префиксом. Значение с солью может использоваться как неотключаемый скрытый канал для передачи 32 байт данных в подписи.
Смещение стандарта в сторону основного использования для online-коммуникации, игнорируя потребности для длительного хранения данных.
Сторонники OpenPGP уже опубликовали критику на критику. В итоге, если не удастся найти компромисс раскол может привести к нарастанию несовместимостей в реализациях OpenPGP/LibrePGP. Частично для решения этой проблемы разработчики OpenPGP зафиксировали пятую версию формата подписей в виде совместимом с LibrePGP и перешли к работе над шестой версией.
После восьми месяцев разработки опубликован релиз Minetest 5.8.0, свободного кроссплатформенного игрового движка в жанре песочница, позволяющего создавать игры в стиле MineCraft, используя различные воксельные блоки для совместного формирования игроками различных структур и построек, образующих подобие виртуального мира. Предоставляемый движком геймплей полностью зависит от набора модов, создаваемых на языке Lua. Игра написана на языке С++ c использованием 3D-библиотеки IrrlichtMt (форк Irrlicht). Код Minetest распространяется под лицензией LGPL, а игровые ресурсы под лицензией CC BY-SA 3.0. Готовые сборки формируются для различных дистрибутивов Linux, Android, FreeBSD, Windows и macOS.
Прекращена поставка вместе с движком игры по умолчанию. Наличие встроенной игры создавало ложное впечатление, что Minetest игра, а не платформа для создания и распространения игр. При первом запуске вместо запуска игры по умолчанию пользователю теперь будет предлагается выбрать интересующую игру из каталога, интерфейс для доступа к которому встроен в клиент Minetest.
Реализовано новое меню с настройками, переработанное для упрощения поиска и изменения параметров движка.
Улучшено управление на устройствах с платформой Android. Для размещения блока в игре теперь достаточно одного касания к экрану. Переделано взаимодействие с джойстиком, эмулирующим нажатие клавиш. Перемещения стали более отзывчивыми, появилась возможность движения в любом направлении и с произвольной скоростью.
Полностью переписан код, отвечающий за работу со звуком. Повышена производительность звуковой подсистемы и добавлены новые опции воспроизведения звука, например, теперь можно выбирать стартовое время и смещение в потоке. Обеспечена загрузка звуковых данных по мере необходимости, что позволяет заметно снизить потребление оперативной памяти.
Модернизирован код, обеспечивающий сглаживание текстур. Предоставлена возможность выбора между алгоритмами сглаживания FXAA и SSAA (FXAA быстрее, но менее точный, а SSAA требует больше ресурсов, но позволяет добиться более высокого качества).
Расширены возможности написания скриптов для разработчиков модов и игр, например, добавлена поддержка динамического изменения текстуры элемента на лету.
Организация Open Source Initiative (OSI), занимающаяся проверкой лицензий на предмет соответствия критериям Open Source, опубликовала результаты анализа популярности открытых лицензий, в зависимости от используемых в проектах языков программирования. В общем виде наиболее популярными признаны лицензии MIT и Apache 2.0. В зависимости от используемых языков предпочтения меняются, например, в проектах на JavaScript наиболее популярна лицензия MIT, а в проектах на Python - Apache 2.0. Лицензия BSD занимает стабильно высокие, но не лидирующие позиции. GPL также достаточно распространена, но в большинстве случаев уступает MIT, Apache 2.0 и BSD.
Популярность лицензией для разных языков:
JavaScript (репозиторий NPM): MIT (53%), Apache 2.0 (14.76%), ISC (10.48%), без указания лицензии (13.49%), BSD-3 (1.45%), GPLv3 (0.46%).
C#/.NET (Nuget): 58.71% без указания лицензии, MIT (21.55%), Apache 2.0 (13.37%), LGPLv3 (1.33%).
Java (Maven): Apache 2.0 (69.18%), без лицензии (16.89%), MIT (7.4%), LGPLv3 (1.4%).
Python (PyPI): MIT (29.14%), Apache 2.0 (23.98%), без лицензии (23.69%), BSD-2 (6.25%), GPLv3 (6.11%).
Ruby (Gem): MIT (63.11%), без лицензии (23.37%), Apache 2.0 (6.66%), BSD-3 (1.26%) .
PHP (Composer): MIT (64.37%), без лицензии (11.25%), BSD-3 (5.72%), GPLv2 (4.61%), Apache 2.0 (3.92%), LGPLv3 (1.01%).
Go: Apache 2.0 (32.49%), без лицензии (29.67%), MIT (20.1%), BSD-3 (4.04%), GPLv3 (2.42%), MPLv2.0 (2.17%).
Rust (Crate): MIT + Apache 2.0 (30.83%), MIT (27.8%), Apache 2.0 (15.82%).
После четырёх месяцев разработки представлен релиз системного менеджера systemd 255. Среди наиболее важных улучшений: поддержка экспорта накопителей через NVMe-TCP, компонент systemd-bsod для полноэкранного вывода сообщений об ошибках, утилита systemd-vmspawn для запуска виртуальных машин, утилита varlinkctl для управления сервисами Varlink, утилита systemd-pcrlock для анализа регистров TPM2 PCR и генерации правил доступа, модуль аутентификации pam_systemd_loadkey.so.
Ключевые изменения в новом выпуске:
Добавлен компонент "systemd-storagetm", дающий возможность автоматически экспортировать все локальные блочные устройства при помощи драйвера NVMe-TCP (NVMe over TCP), позволяющего обращаться к NVMe-накопителям по сети (NVM Express over Fabrics), используя протокол TCP. За предоставление доступа в режиме NVMe over TCP отвечает новый юнит "storage-target-mode.target", который можно включить на стадии загрузки, указав в командной строке ядра "rd.systemd.unit=storage-target-mode.target", например, при необходимости удалённого обращения к накопителю в диагностических целях.
Добавлен компонент "systemd-bsod" с реализацией аналога "синего экрана смерти", позволяющего на этапе загрузки выводить сообщения о критических ошибках (LOG_EMERG) в форме полноэкранного уведомления.
Добавлена утилита "systemd-vmspawn", представляющая аналог утилиты systemd-nspawn для запуска образа операционной системы в виртуальной машине (утилита systemd-nspawn предназначена для запуска контейнеров, а systemd-vmspawn предоставляет похожий интерфейс для виртуальных машин). В настоящее время для запуска виртуальных машин доступен только бэкенд на базе QEMU.
Добавлена утилита "varlinkctl" для вызова и интроспекции сервисов, использующих протокол Varlink.
Добавлена утилита "systemd-pcrlock" для анализа и предсказания состояний регистров TPM2 PCR (Platform Configuration Register) и формирования сохраняемых в индексе TPM2 NV правил доступа, разрешающих обращение к объектам TPM2, таким как ключи шифрования диска, только из заверенных цифровой подписью компонентов, запускаемых на стадии верифицированной загрузки. В качестве входных данных для анализа может использоваться результат запроса состояния PCR в TPM2, выдаваемый прошивкой UEFI лог событий текущей загрузки (/sys/kernel/security/tpm0/binary_bios_measurements) или локально сохранённый лог TPM2 (/run/log/systemd/tpm2-measure.log). Поддержка сохраняемых правил доступа добавлена в systemd-cryptsetup, systemd-cryptenroll и systemd-repart.
Добавлен PAM-модуль pam_systemd_loadkey.so, предназначенный для автоматического извлечения из хранилища ключей в ядре (keyring) парольной фразы, используемой в cryptsetup для разблокировки зашифрованной корневой ФС, и выставления этой парольной фразы в качестве токена аутентификации (PAM authtok). Модуль может применяться, например, для настройки авторазблокировки доступа к GNOME Keyring и KDE Wallet при включении автоматического входа в систему.
Добавлена поддержка перехода в спящий режим (hibernation) с сохранением содержимого памяти в файлы подкачки, хранимые в ФС Btrfs.
В юниты добавлены свойства MemoryPeak, MemorySwapPeak, MemorySwapCurrent и MemoryZSwapCurrent, соответствующие доступным через cgroup v2 свойствам memory.peak, memory.swap.peak, memory.swap.current и memory.zswap.current. Информация о данных свойствах включена в вывод "systemctl status".
Переработан способ запуска сервисов, который переведён на использование вызова posix_spawn с опциями CLONE_VM и CLONE_VFORK для запуска процесса и применение отдельного исполняемого файла systemd-executor для настройки запускаемого процесса. Ранее процессы ответвлялись функцией fork с копированием памяти управляющего процесса в режиме copy-on-write и выполнением необходимых настроек (монтирование пространств имён и выставление CGroup) до запуска целевого исполняемого фала через вызов exec, что приводило к проблемам из-за невозможности обращения к некоторым API Glibc на стадии между выполнением функций fork и exec.
Код для отслеживания внутренних процессов переведён на использование PIDFD вместо PID в окружениях с ядром, поддерживающим PIDFD (PIDFD связывается с конкретным процессом и не меняется, в том время как PID может быть привязан к другому процессу после завершения текущего процесса, ассоциированного с этим PID). Реализована возможность создания scope-юнитов, используя PIDFD вместо PID для выбора процессов.
Прекращена поддержка раздельных иерархий каталогов (когда /usr монтируется отдельно от корня или разделены каталоги /bin и /usr/bin, /lib и /usr/lib). В будущем также решено прекратить поддержку cgroups v1, скриптов сервисов System V и EFI-переменных SystemdOptions.
Команда "systemctl switch-root" ограничена для применения только в initrd. Для замены корневой ФС в обычном окружении следует использовать "systemctl soft-reboot".
Объявлены устаревшими параметры SuspendMode, HybridSleepMode, HibernateStat и HybridSleepState в секции "[Sleep]" файла systemd-sleep.conf. Данные параметры теперь игнорируются и могут принимать только значения по умолчанию.
В юниты добавлена опция SurviveFinalKillSignal, позволяющая игнорировать финальный сигнал SIGTERM/SIGKILL, выдаваемый во время завершения работы, что может оказаться полезным для оставления запущенным юнита во время мягкой перезагрузки системы в режиме soft-reboot.
Добавлена настройка NFTSet, позволяющая использовать идентификаторы cgroup для переключения логики в правилах межсетевого экрана.
Добавлена опция ConditionSecurity=measured-uki, гарантирующая, что юнит может быть запущен только в системе, загруженной с верифицированного образа ядра в формате UKI.
В systemd-boot добавлены новые горячие клавиши "B" и "O" для перезагрузки и выключения системы из загрузочного меню. Добавлена настройка "menu-disabled" для отключения показа загрузочного меню.
В утилиту systemd-repart добавлены новые опции "--copy-from" для получения описаний раздела из указанного образа ФС, "--copy-source" для указания базового каталога для параметра CopyFiles, "--make-ddi=confext", "--make-ddi=sysext" и "--make-ddi=portable" для генерации разных типов DDI, и "--tpm2-device-key" для привязки диска к определённому открытому ключу TPM2.
В утилиту journalctl в параметр "--lines" добавлено значение "+N" для вывода N старейших записей.
В udevadm добавлен флаг "--json" для вывода в формате JSON.
В утилиты systemd-analyze, systemd-tmpfiles, systemd-sysusers, systemd-sysctl и systemd-binfmt добавлена опция "--tldr" для вывода только фактических параметров конфигурации без пробелов и комментариев.
В подсистему seccomp добавлена поддержка архитектуры LoongArch64. Разрешено использование seccomp для фильтрации системных вызовов в сервисах, выполняемых не под пользователем root без включения настройки NoNewPrivileges=yes.
В утилиту systemd-mount добавлена опция "--tmpfs" для монтирования нового экземпляра 'tmpfs'.
Группа исследователей из Амстердамского свободного университета представила новую технику атаки SLAM (Spectre Linear Address Masking), предлагающую новый способ эксплуатации микроархитектурных уязвимостей класса Spectre, в котором утечка данных происходит при трансляции неканонических адресов, а для обхода проверок каноничности привлекаются предоставляемые в новых процессорах расширения для маскировки линейных адресов. Исследователями опубликован инструментарий с реализацией метода и предложена демонстрация, показывающая как можно извлечь из памяти ядра данные, соответствующие определённой маске (показано как за несколько десятков секунд в Ubuntu выделить из памяти ядра строку с хэшем пароля пользователя root).
Атака может быть совершена на системах с процессорами Intel, поддерживающими расширение LAM (Linear Address Masking), процессорами AMD с расширением UAI (Upper Address Ignore) и процессорами ARM с расширением TBI (Top Byte Ignore). Указанные расширения позволяют использовать часть битов 64-разрядных указателей для хранения не связанных с адресацией метаданных (для обычных программ не требуется столько памяти, что могут адресовать 64-разрядные указатели, поэтому верхние биты могут быть задействованы, например, для проверок, связанных с обеспечением безопасности). Интересно, что процессоры Intel, AMD и ARM с поддержкой LAM, UAI и TBI, и с 5-уровнемы таблицами страниц памяти ещё только анонсированы, но массово не производятся, что делает SLAM первой спекулятивной атакой на будущие CPU. Атака также может быть совершена на старых CPU AMD Zen+ и Zen 2, подверженных уязвимости CVE-2020-12965.
По аналогии с эксплуатацией уязвимостей Spectre для осуществления атаки SLAM требуется наличие в ядре определённых последовательностей инструкций (гаджетов), приводящих к спекулятивному выполнению инструкций. Подобные инструкции приводят к спекулятивному чтению данных из памяти в зависимости от внешних условий, на которые может влиять атакующий. После определения ошибочного прогноза результат спекулятивного выполнения отбрасывается, но обработанные данные остаются в кэше и могут затем быть извлечены при помощи анализа по сторонним каналам. Для извлечения осевших в кэше данных исследователями задействован метод Evict+Reload, основанный на создании условий для вытеснения данных из кэша (например, создаётся активность, равномерно заполняющая кэш типовым содержимым) и выполнения операций, время выполнения которых позволяет судить о наличии данных в процессорном кэше.
Для совершения атаки SLAM используются гаджеты на основе кода, в котором контролируемые атакующим данные (ниже переменная "secret") используются как указатель. Например:
void unmasked_gadget(long **secret) {
**secret;
}
Отмечается, что подобные шаблоны кода часто используются в программах, например, в ядре Linux выявлены десятки тысяч таких гаджетов, из которых как минимум несколько сотен пригодны для использования в эксплоитах. Утечка может быть предотвращена через добавление в подобные гаджеты дополнительных инструкций, блокирующих спекулятивное выполнение. Компания Intel намерена предоставить программный метод защиты от утечки до начала поставки процессоров с поддержкой LAM. Компания AMD рекомендовала использовать существующие методы блокирования атак класса Spectre v2. Разработчики ядра Linux для защиты от атаки решили отключить по умолчанию поддержку LAM до публикации рекомендаций Intel по блокированию уязвимости.
Компания Google опубликовала релиз web-браузера Chrome 120. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей при поиске RLZ-параметров. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 121 запланирован на 23 января.
Начался эксперимент по отключению поддержки сторонних Cookie, выставляемых при обращении к сайтам, отличным от домена текущей страницы. Подобные Cookie применяются для отслеживания перемещений пользователя между сайтами в коде рекламных сетей, виджетов социальных сетей и систем web-аналитики. В январе 2024 года сторонние Cookie будут отключены для 1% пользователей браузера. Изменения продвигаются в рамках инициативы Privacy Sandbox, нацеленной на достижение компромисса между потребностью пользователей сохранить конфиденциальность и желанием рекламных сетей и сайтов отслеживать предпочтения посетителей.
Вместо отслеживающих Cookie предлагается использовать следующие API:
FedCM (Federated Credential Management), позволяет создавать объединённые сервисы идентификации, обеспечивающие сохранение конфиденциальности и работающие без сторонних Cookie.
Private State Tokens, позволяет разделять разных пользователей без использования межсайтовых идентификаторов и передавать сведения о подлинности пользователя между разными контекстами.
Topics (критика), даёт возможность определять категории интересов пользователя, которые можно использовать для выделения групп пользователей со сходными интересами без идентификации отдельных пользователей при помощи отслеживающих Cookie. Интересы вычисляются на основе активности пользователя в браузере и сохраняются на устройстве пользователя. При помощи API Topics рекламная сеть может получить общие сведения об отдельных интересах без наличия информации о конкретной активности пользователя.
Protected Audience, решение задач ретаргетинга и оценки собственной аудитории (работа с пользователями, уже посещавшими ранее сайт).
Attribution Reporting, позволяет оценивать такие характеристики эффективности рекламы, как переходы и конверсия (покупка на сайте после перехода).
Storage Access API, может применяться для запроса у пользователя полномочий на получение доступа к хранилищу Cookie, если по умолчанию сторонние Cookie блокируются.
В соответствии с требованиями принятого в Евросоюзе закона DMA
(Digital Markets Act) некоторым пользователям будет показан диалог для выбора поисковой системы по умолчанию, возможности которого соответствуют настройкам chrome://settings/search. В Chrome 120 диалог будет показан 1% пользователей, а к моменту публикации Chrome 122 доведён до 100%.
Начался процесс прекращения поддержки видеокодека Theora. На начальном этапе Theora отключён для 1% пользователей, но до 16 января его планируют отключить для всех пользователей. На переходном этапе для возвращения кодека предусмотрена настройка "chrome://flags/#theora-video-codec". В качестве причины прекращения поддержки Theora упоминаются опасения, что в реализации Theora, в которой имеется достаточно сложная логика разбора бинарных данных и декодирования потоков, могут присутствовать уязвимости, похожие на недавние критические проблемы с кодировщиком VP8.
Оформление каталога Chrome Web Store переработано для упрощения поиска и управления дополнениями. Добавлены новые категории дополнений (например, добавлена категория с дополнениями на базе машинного обучения и раздел "выбор редакции"). В меню " ⋮ " добавлена возможность возвращения прошлого дизайна.
Расширена функциональность интерфейса "Проверка безопасности" (Safety check), показывающего сводку о возможных проблемах с безопасностью, таких как использование скомпрометированных паролей, состояние проверки вредоносных сайтов (Safe Browsing), наличие неустановленных обновлений и выявление вредоносных дополнений. В новой версии предложен проактивный режим, периодически выполняющий связанные с безопасностью проверки браузера и информирующий пользователя в случае выявления проблем. В настройки добавлены параметры для управления действиями в проактивном режиме.
Реализована адаптивная панель инструментов, меняющаяся в зависимости от изменения размера окна.
В менеджере паролей разрешено предоставление совместного доступа к отдельным паролям для членов группы Google Family Group, настроенной через Google Account. За один раз можно предоставить доступ только к одному паролю, после чего совместно используемый пароль не сможет быть обновлён или отозван отправителем.
Взаимодействие с принтерами перенесено в отдельный сервисный процесс, что позволило повысить стабильность браузера и улучшить отзывчивость интерфейса предпросмотра страницы перед выводом на печать.
В TLS включена реализация механизма инкапсуляции ключей (KEM, Key Encapsulation Mechanism), использующего гибридный алгоритм X25519Kyber768, устойчивый к подбору на квантовых компьютерах. Для создания сессионных ключей, применяемых для шифрования данных внутри TLS-соединений, теперь может использоваться комбинация из механизма обмена ключами X25519, основанного на эллиптических кривых и ныне применяемого в TLS, c алгоритмом Kyber-768, использующим методы криптографии, основанные на решении задач теории решёток, время решения которых не отличается на обычных и квантовых компьютерах.
В сервисе автоподавления запросов на подтверждение полномочий (Permission Suggestions Service) обеспечен учёт URL страницы, запрашивающей полномочия (на серверы Google будут передаваться хэши от запрашивающих полномочия URL).
В версии для Android прекращена поддержка платформы Android 7.0 "Nougat".
Добавлен фреймворк с реализацией концепции Close-запросов, позволяющих пользователю запрашивать закрытие модальных и всплывающих диалогов через нажатие клавиши Esc или используя экранный жест или кнопку "Назад" на смартфонах. Поддержка Close-запросов добавлена для диалогов, созданных при помощи элемента <dialog> или свойства "popover". Также добавлен API CloseWatcher, дающий возможность разработчикам приложений отслеживать Close-запросы и реагировать на их поступление (например, можно создать обработчик нажатия кнопки "назад" на Android-смартфоне).
В элемент "<details>" добавлена поддержка атрибута "name", позволяющего создавать группы через определение серии элементов "<details>" с одним именем.
В API Media Session добавлено событие "enterpictureinpicture", позволяющее сайту зарегистрировать обработчик, вызываемый при открытии содержимого в режиме "картинка в картинке".
Упрощён синтаксис вложенных CSS-блоков - вложенные CSS-правила теперь могут начинаться с любого элемента, без необходимости указания перед вложенным правилом символа амперсанда или использования функции is().
dl {
dt {
/* стиль для dl dt */
}
dd {
/* стиль для dl dd */
}
}
В CSS-свойстве "background-clip добавлена поддержка параметра "text" для отображения выбранного фона только в области, ограниченной символами текста. Например, указание "background: linear-gradient(60deg, red, yellow, red, yellow, red); background-clip: text; color: rgba(0, 0, 0, 0.2)" приведёт к отображению:
В CSS добавлен медиазапрос "scripting", который можно использовать для определения возможности выполнения скриптов, например на языке JavaScript, на текущей странице.
В CSS добавлен псевдокласс ":dir()", позволяющий выбрать элементы в зависимости от направленности текста (например, ":dir(ltr)" будет охватывать элементы, в которых текст выводится слева направо).
В CSS добавлены экспоненциальные функции pow(), sqrt(), hypot(), log() и exp().
В CSS добавлена поддержка свойств mask, mask-image, mask-repeat, mask-position, mask-clip, mask-origin, mask-size, mask-composite и mask-mode для скрытия элемента путём наложения изображения по определённым точкам.
В API FontFaceSet добавлен метод check(), позволяющий проверить может ли быть отображён текст при выбранных шрифтах без использования в FontFaceSet шрифтов, загрузка которых ещё не завершена.
В API WebGPU добавлена возможность использования в шейдерах 16-битного типа с плавающей запятой f16.
В API Media Capabilities в метод decodingInfo() добавлены поля hdrMetadataType, colorGamut и transferFunction для определения поддержки HDR.
В API MediaStreamTrack добавлена возможность получения информации о счётчиках полученных и отброшенных кадров видео.
Добавлена возможность передачи объекта ArrayBuffer в конструкторы VideoFrame, AudioData, EncodedVideoChunk, EncodedAudioChunk и ImageDecoder для прямого использования байтового массива без создания его копии.
В соответствии с изменившейся спецификацией для повышения защиты от XSS-атак и для улучшения переносимости между браузерами в SVGUseElement прекращена поддержка URL "data:", который до этого не поддерживался в движке WebKit.
Добавлена экспериментальная (origin trial) поддержка HTTP-заголовка
"Priority", через который можно передать сведения о приоритете обработки запроса (RFC 9218) на стадии первого обращения к ресурсу.
Внесены улучшения в инструменты для web-разработчиков. В отладчике по умолчанию включено игнорирование скриптов размещённых в каталогах "/node_modules/" и "/bower_components/" с модулями Node.js.
В режиме удалённой отладки реализован переключатель для выбора между мышью и сенсорным экраном. Улучшена отладка анимации. В панель Elements добавлен переключатель "media" для отладки элементов <audio> и <video>. По умолчанию включён вывод предупреждений об использовании сторонних Cookie. В утилиту Privacy Sandbox Analysis добавлен анализ используемых на сайте Cookie и вывод рекомендаций по использованию вместо Cookie новых API.
Кроме нововведений и исправления ошибок в новой версии устранено 10 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 13 премий на сумму 15 тысяч долларов США (одна премия $10000, одна премия $2000 и три премии $1000).
Компании IBM и Meta основали международное сообщество AI Alliance, нацеленное на совместное развитие открытых технологий, связанных с машинным обучением и искусственным интеллектом. В число учредителей проекта вошло более 50 компаний, университетов, организаций и научных учреждений, среди которых NASA, CERN, AMD, Intel, Oracle, Red Hat, Dell, Sony, Stability AI, NSF, Linux Foundation, Калифорнийский, Гарвардский, Бостонский, Иллинойский, Токийский, Йельский и Корнеллский университеты.
AI Alliance сосредоточен на ускорении продвижения инноваций в области искусственного интеллекта и проведении работ по развитию основополагающих возможностей AI, а также улучшению безопасности и повышения доверия к AI-технологиям. Основные задачи проекта:
Разработка и внедрения эталонных текстов, стандартов, инструментариев и сопутствующих ресурсов, связанных с разработкой и использованием систем искусственного интеллекта. Создание проверенных инструментов для обеспечения безопасности, защиты и доверия, а также продвижение использования данных инструментов при создании моделей и приложений.
Становление экосистемы открытых моделей машинного обучения для разных применений, включая многоязычные, научные и мультимодальные модели.
Развитие экосистемы аппаратных ускорителей для систем искусственного интеллекта.
Предоставление разработчикам и исследователям возможностей по изучению, внедрению и экспериментам с открытыми AI-технологиями.
Подготовка обучающих материалов и ресурсов для информирования о преимуществах, рисках, решениях и возможностях регулирования искусственного интеллекта.
Создание инициатив для продвижения безопасных открытых методов разработки систем искусственного интеллекта. Проведение мероприятий для изучения областей использования искусственного интеллекта и демонстрации применения открытых технологий при разработке систем искусственного интеллекта.
После пяти месяцев разработки опубликован релиз свободного игрового движка Godot 4.2, подходящего для создания 2D- и 3D-игр. Движок поддерживает простой для изучения язык задания игровой логики, графическую среду для проектирования игр, систему развёртывания игр в один клик, широкие возможности анимации и симуляции физических процессов, встроенный отладчик и систему выявления узких мест в производительности. Код игрового движка, среды проектирования игр и сопутствующих средств разработки (физический движок, звуковой сервер, бэкенды 2D/3D рендеринга и т.п.) распространяются под лицензией MIT.
Исходные тексты движка были открыты в 2014 году студией OKAM, после десяти лет развития проприетарного продукта профессионального уровня, который использовался для создания и публикации многих игр для PC, игровых консолей и мобильных устройств. Движком поддерживаются все популярные стационарные и мобильные платформы (Linux, Windows, macOS, Wii, Nintendo 3DS, PlayStation 3, PS Vita, Android, iOS, BBX), а также разработка игр для Web. Готовые для запуска бинарные сборки сформированы для Linux, Android, Windows и macOS.
Для разработчиков 2D-игр добавлена поддержка принудительного целочисленного масштабирования, позволяющая получить квадратную пиксельную сетку, независимо от фактического соотношения сторон. Предоставлена возможность получения барицентрических координат нормали из точек пересечения объекта с лучом. Добавлены методы Rotate_toward и Angle_difference для корректной обработки вращения и углов. В узлы Line2D добавлено свойство "closed" для создания замкнутых линий с непрерывным заполнением.
Проведена работа по повышению надёжности системы анимации. Переработаны и унифицированы узлы AnimationPlayer и AnimationTree, общие части которых выделены в промежуточный класс AnimationMixer. Добавлена опция для детерминированного смешивания. В предпросмотр анимации добавлен режим кальки (onion skinning), включающий показ полупрозрачных наложений с прошлыми и следующими кадрами анимации.
Возможности "запекания" навигационной сетки (baking, преобразование в статичную форму) для 2D приближены к возможностям, ранее доступным в 3D-навигации, например, для 2D-сеток реализована поддержка работы с физическими телами, экземплярами полигональных сеток, простыми многоугольниками и тайловыми картами (tilemap). В серверы 2D- и 3D-навигации добавлена поддержка многопоточного запекания мэшей.
Проведён рефакторинг кода для работы с тайлами и тайловыми картами. Оптимизированы операции группировки блоков и сортировки по оси Y, позволившие значительно сократить время обновления тайлов. Выполнена работа по повышению удобства создания тайловых карт и их использования. Добавлен инструмент для переворота и поворота тайлов при их размещении. Улучшены инструменты для редактирования многоугольников и тайловых сцен.
В редакторе сценариев GDScript появилась возможность создания именованных областей кода для сворачивания блоков во время редактирования и упрощения навигации. В отладчике скриптов добавлена полная поддержка многопоточного кода, стека исполнения и точек останова. В скриптах на базе C#/.NET реализована поддержка платформ Android (требуется .NET 7.0+) и iOS (требуется .NET 8.0). В скриптах GDScript расширена поддержка статически типизированного кода, добавлена поддержка строковых литералов r-string (raw string), расширены возможности оператора match.
В 3D viewport улучшена поддержка управления трансформацией в стиле Blender, используя мышь и горячие клавиши. Показ расширенной визуальной информации в 3D viewport теперь осуществляется только для выбранных объектов. Добавлены дополнительные индикаторы для таких элементов, как декали и объём тумана. Улучшена работа с гизмо (gizmo) - любую сторону объёмных форм теперь можно расширять по-отдельности в окне просмотра.
Улучшены контекстное меню и всплывающие подсказки в панелях "Инспектирование" и "Сигналы". В редактор тем добавлены подсказки с описанием свойств. В панели работы с файловой системой появилась возможность наглядного выделения каталогов через назначения им разных цветов. Переработан интерфейс редактора ресурсов градиентов. В редакторе областей текстур унифицирована работа со всеми поддерживаемыми ресурсами, включая стили и атласы.
В библиотеке ассетов улучшен вывод результатов поиска и добавлена возможность выбора иного каталога для установки дополнения или ресурса.
В менеджере проектов переработано размещение основных элементов управления и модернизирован интерфейс импорта проекта.
Расширены возможности по разработке плагинов к редактору. Обеспечен доступ ко всей функциональности редактора через класс EditorInterface.
Реализованы удобные методы для прямого доступа к 2D- и 3D-вьюпортам. Добавлена возможность вывода диалога с предупреждением о несохранённых изменениях.
Продолжено развитие экспериментальной системы расширений GDExtension, позволяющей использовать низкоуровневые языки, такие как C++, в качестве языков создания скриптов для игр, без пересборки движка и без внесения изменений в код. Добавлена возможность использования GDExtensions при экспорте в Web.
В интерфейсе пользователя изменено управление фокусом. Реализована возможность передачи фокуса на отдельные вкладки в панели вкладок, в том числе при навигации с использованием клавиатуры. В узлы управления (Control) добавлен метод для поиска следующего соседнего фокусируемого элемента.
Значительно переработаны узлы построения графов (GraphEdit и GraphNode). Расширены возможности по настройке панели инструментов основного узла GraphEdit.
Добавлена возможность изменения типа импорта ассетов на лету с автоматическим обновлением сцен и ресурсов, не требующим перезапуска редактора. Расширены доступные параметры импорта и предоставлена возможность изменения физических свойств импортируемых объектов, а также параметров теней и видимости. Добавлена возможность предпросмотра анимации в диалоговом окне импорта. Расширена поддержка импорта ассетов из Blender в формате GLTF. Добавлена поддержка импорта изображений в формате KTX.
Внесены оптимизации, нацеленные на повышение производительности рендеринга. Для ускорения работы на мобильных устройствах осуществлено разделение растровых барьеров на вершинные и фрагментные компоненты.
Ускорена генерация зашумлённых текстур. Добавлен предварительный проход для вычисления глубины. Сокращено время загрузки и компиляции шейдеров. Оптимизировано хранение полигональных сеток в памяти. Добавлена поддержка сжатия полигональных сеток для сокращения пропускной способности при их передаче.
Добавлена возможность создания своих текстурных объектов (пример использования вычислительных шейдеров для создания текстуры с эффектом воды).
Добавлен API для вызова кода в потоке рендеринга, что может потребоваться, например, когда нужно синхронизировать вычислительный шейдер с рендерингом.
Добавлена поддержка версии 2.2 технологии суперсэмплинга AMD FSR (FidelityFX Super Resolution), использующей алгоритмы пространственного масштабирования и реконструкции деталей для снижения потери качества изображения при увеличении масштаба и преобразования в более высокое разрешение.
Предложен новый подавитель шумов JNLM, использующий карты освещения (lightmapper) и вычислительные шейдеры. JNLM значительно быстрее ранее применявшейся библиотеки устранения шумов OIDN (Open Image Denoise), но в некоторых ситуациях уступает по качеству.
В методы рендеринга Forward+ и Mobile добавлена поддержка 2D-отрисовки в расширенном динамическом диапазоне яркости (HDR), позволяющая реализовать в 2D-играх некоторые 3D-эффекты, такие как свечение. В метод рендеринга Compatibility добавлена поддержка трёхмерных теней.
Для macOS и Windows предложен новый драйвер OpenGL-рендеринга, использующий прослойку ANGLE, транслирующую вызовы OpenGL в API Direct3D 11 и Metal.
Система симуляции частиц переработана для упрощения сопровождения и расширения управления движением частиц. Например, теперь можно анимировать и наследовать скорость движения, а также изменять число испускаемых частиц. Добавлен инструмент для преобразования кода генерации частиц, использующего CPU, на эквивалентный код, использующий GPU.
Добавлена поддержка использования родных для Linux, macOS и Windows диалогов выбора файлов, а также возможность копирования и вставки изображений через буфер обмена.
Переработана архитектура Godot для платформы Android, которая избавлена от привязки к Android-компоненту Fragment, что позволило сократить время запуска приложений и игр, и реализовать возможность работы с несколькими окнами.
Налажено формирование официальных Linux-сборок редактора Godot для 32- и 64-разрядных платформ ARM.
Администраторы репозитория Python-пакетов PyPI (Python Package Index) сообщили об инциденте, в результате которого злоумышленник смог захватить управление над проектами arrapi, tmdbapis, nagerapi и pmmutils, насчитывающими около 4.5 тысяч загрузок в месяц. Все проекты сопровождались одним автором (meisnate12, Nathan Taggart) и были захвачены в результате компрометации его учётной записи. Злоумышленник, получивший управление над проектами, был оперативно заблокирован и не успел внести изменения и сформировать модифицированные выпуски.
Захват произведён через замену владельца проектов. Атакующий создал учётную запись "dvolk", затем от имени основного сопровождающего "meisnate12" сформировано приглашение для включения пользователя "dvolk" в число сопровождающих, после принятия которого и получения управляющего доступа к проекту удалил из проекта изначального автора и остался одним сопровождающим. После выполнения подобных манипуляций для всех проектов был инициирован процесс удаления учётной записи "meisnate12".
Спустя 5 часов после захвата проектов администраторы PyPI получили сообщение от изначального автора о случившимся, заблокировали учётную запись злоумышленника и восстановили права на владение проектами. В качестве причины инцидента названа ненадлежащая защита учётной записи и отсутствие применения двухфакторной аутентификации, что позволило атакующему определить параметры входа под пользователем "meisnate12" и выполнить действия от его имени.
До конца этого года репозиторий PyPI намерен перевести все учётные записи пользователей, сопровождающих хотя бы один проект или входящих в курирующие организации, на обязательное применение двухфакторной аутентификации. Применение двухфакторной аутентификации позволит усилить защиту процесса разработки и обезопасить проекты от внесения вредоносных изменений в результате утечки учётных данных, использования того же пароля на скомпрометированных сайтах, взломов локальной системы разработчика или применения методов социального инжиниринга.
В качестве предпочтительных методов двухфакторной аутентификации рекомендуется использовать протокол WebAuthn с FIDO U2F токенами или приложения для аутентификации на базе одноразовых паролей, поддерживающих протокол TOTP, например, Authy, Google Authenticator, FreeOTP и oathtool. При загрузке пакетов разработчикам дополнительно рекомендовано перейти на использование метода аутентификации 'Trusted Publishers' на базе стандарта OpenID Connect (OIDC) или применять API-токены.
Представлен релиз отладчика GDB 14.1 (первый выпуск серии 14.x, ветка 14.0 использовалась для разработки). GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).
Доступен релиз проекта CoreBoot 4.22, в рамках которого разрабатывается свободная альтернатива проприетарным прошивкам и BIOS. Код проекта распространяется под лицензией GPLv2. В создании новой версии приняло участие 135 разработчиков, которые подготовили 977 изменений. Отмечается, что начиная со следующего выпуска проект перейдёт на новую схему наименования версий, использующую привязку к дате (год.месяц.обновление), например, в феврале 2024 года вместо версии 4.23 будет сформирован выпуск 24.02.00.
Добавлена начальная реализация платформы AMD openSIL (Open-Source Silicon Initialization Library), развивающей компоненты для упрощения создания прошивок.
Добавлена поддержка 17 материнских плат. 11 добавленных плат используются на устройствах с Chrome OS или на серверах Google. Платы, не связанные с Googlе:
AMD Onyx
Intel Meteorlake-P RVP
Purism Librem 11
Purism Librem L1UM v2
Siemens FA EHL
Supermicro X11SSW-F
Добавлена поддержка SoC AMD Genoa.
На архитектуре x86 на стадиях до инициализации памяти реализована поддержка секции ".data", позволяющая использовать определения глобальных переменных в коде на языке Си. На стадии загрузочного блока данные прикрепляются сразу после кода и затем размещаются в кэше, используя концепцию Cache-As-RAM (VMA).
Для систем x86 на стадии ramstage и стадиях до инициализации памяти реализована поддержка кэша для файловой системы CBFS, используемой для размещения компонентов Coreboot на Flash. Кэш CBFS позволяет распаковывать файлы CBFS, используя функцию cbfs_map() без резервирования для файла отдельной области памяти. Для настройки размера кэша предложены параметры PRERAM_CBFS_CACHE_SIZE и RAMSTAGE_CBFS_CACHE_SIZE.
Добавлена возможность встраивания romstage в загрузочный блок (bootblock). Поставка romstage в составе загрузочного блока позволяет сократить размер кода на 10-20 тысяч строк. Из ситуаций, в которых может потребоваться отдельная поставка romstage упоминаются конфигурации с vboot или fallback-режимом, а также устройства с ограниченным размером загрузочного блока (Intel APL 32K) или слишком медленным загрузочным носителем (некоторые ARM SoC).
В gfx добавлен API для определения наличия внешнего экрана на устройствах с чипами Intel.
В pci_rom реализована возможность добавления контрольной суммы для VBIOS при заполнении таблицы VFCT. Подобную контрольную сумму проверяют некоторые драйверы AMD для Windows.
Добавлены изменения, позволяющие запускать Windows на некоторых
устройствах Chromebook с Coreboot.
Реализована генерация таблицы ACPI для устройств на базе архитектуры ARM64.
Улучшена совместимость со спецификациями ACPI.
Настройки MRC (Memory Reference Code) для плат SNB+MRC перенесены в структуру DeviceTree.
Обновлены payload-компоненты на базе U-Boot и edk2.
Обновлён используемый инструментарий: GMP 6.3.0, binutils 2.41 и
MPFR 4.2.1.
Основная ветка в Git-репозитории переименована с "master" на "main".
Компания Google опубликовалавыпуск операционной системы Fuchsia 14, на базе которого сформированы предварительные обновления прошивок для фоторамок Google Nest Hub и Nest Hub Max. ОС Fuchsia развивается компанией Google c 2016 года с учётом недостатков в области масштабирования и обеспечения безопасности, имеющихся в платформе Android.
Расширены возможности прослойки Starnix, обеспечивающей
запуск немодифицированных Linux-программ через трансляцию системных интерфейсов ядра Linux в обращения к соответствующим подсистемам Fuchsia. В новой версии добавлена поддержка монтирования удалённых ФС,
в fxfs добавлены xattrs для символических ссылок, в системный вызов
mmap() добавлены точки трассировки, расширена информация в /proc/pid/stat, включена поддержка fuchsia_sync::Mutex, реализована поддержка O_TMPFILE, pidfd_getfd, sys_reboot(), timer_create, timer_delete, times() и ptrace(), в реализации ext4 задействован системный файловый кэш.
Улучшен стек Bluetooth. Добавлена поддержка звука в Bluetooth-профиле HSP (HandSet Profile) и сокращены задержки при вещании звука через профиль A2DP.
В Matter, реализацию стандарта для подключения устройств в умном доме, добавлена поддержка групп обновления и возможность обработки переходных состояний при управлении подсветкой.
В сетевом стеке для всех платформ включена поддержка сокетов FastUDP.
Добавлена поддержка многоядерных систем (SMP) на базе архитектуры RISC-V.
Добавлен API для взаимодействия с планировщиком задач.
Добавлена поддержка DeviceTree.
Драйвер для звуковых устройств с интерфейсом USB переведён на использование фреймворка DFv2.
Fuchsia базируется на микроядре Zircon, основанном на наработках проекта LK, расширенного для применения на различных классах устройств, включая смартфоны и персональные компьютеры. Zircon расширяет LK поддержкой процессов и разделяемых библиотек, уровнем пользователя, системой обработки объектов и моделью обеспечения безопасности на основе capability. Драйверы реализуются в виде работающих в пространстве пользователя динамических библиотек, загружаемых процессом devhost и управляемых менеджером устройств (devmg, Device Manager).
Для Fuchsia подготовлен собственный графический интерфейс, написанный на языке Dart с использованием фреймворка Flutter. Проектом также развиваются фреймворк для построения интерфейсов пользователя Peridot, пакетный менеджер Fargo, стандартная библиотека libc, система рендеринга Escher, Vulkan-драйвер Magma, композитный менеджер Scenic, файловые системы MinFS, MemFS, ThinFS (FAT на языке Go) и Blobfs, а также менеджер разделов FVM. Для разработки приложений предоставляется поддержка языков C/C++, Dart, в системных компонентах также допускается использование Rust, в сетевом стеке Go, а в системе сборки языка Python.
В процессе загрузки используется системный менеджер, включающий
appmgr для создания начального программного окружения, sysmgr для формирования загрузочного окружения и basemgr для настройки пользовательского окружения и организации входа в систему. Для обеспечения безопасности предлагается продвинутая система sandbox-изоляции, в которой новые процессы не имеют доступа к объектам ядра, не могут выделять память и не могут запускать код, а для доступа к ресурсам применяется система пространств имён, определяющая доступные полномочия. Платформа предоставляет фреймворк для создания компонентов, представляющих собой программы, запускаемые в своём sandbox, которые могут взаимодействовать с другими компонентами через IPC.
Исследователи из компании Binarly выявили серию уязвимостей в коде разбора изображений, используемом в UEFI-прошивках различных производителей. Уязвимости позволяют добиться выполнения своего кода во время загрузки через размещение специально оформленного изображения в разделе ESP (EFI System Partition) или в не заверенной цифровой подписью части обновления прошивки. Предложенный метод атаки может использоваться для обхода механизма верифицированной загрузки UEFI Secure Boot и аппаратных механизмов защиты, таких как Intel Boot Guard, AMD Hardware-Validated Boot и ARM TrustZone Secure Boot.
Проблема вызвана тем, что прошивки позволяют выводить указанные пользователем логотипы и используют для этого библиотеки разбора изображений, выполняемые на уровне прошивки без сброса привилегий. Отмечается, что современные прошивки включают код для разбора форматов BMP, GIF, JPEG, PCX и TGA, в котором присутствуют уязвимости, приводящие к переполнению буфера во время разбора некорректных данных.
Уязвимости выявлены в прошивках, поставляемых различными поставщиками оборудования (Intel, Acer, Lenovo) и производителями прошивок (AMI, Insyde, Phoenix). Так как проблемный код присутствует в эталонных компонентах, предоставляемых независимыми поставщиками прошивок и используемых в качестве основы для создания своих прошивок различными производителями оборудования, уязвимости не специфичны для конкретных поставщиков и затрагивают всю экосистему.
Подробности о выявленных уязвимостях обещают раскрыть 6 декабря на конференции Black Hat Europe 2023. В презентации на конференции также будет продемонстрирован эксплоит, позволяющий выполнить свой код с правами прошивки на системах с архитектурой x86 и ARM. Изначально уязвимости были выявлены в ходе анализа прошивок Lenovo, построенных на базе платформ от Insyde, AMI и Phoenix, но в качестве потенциально уязвимых также упоминаются прошивки от Intel и Acer.
Сформированы корректирующие выпуски проекта OpenZFS 2.1.14 и 2.2.2, развивающего реализацию файловой системы ZFS для Linux и FreeBSD. В обновлениях устранена проблема в коде проверки согласованности кэша dnode, приводящая к повреждению данных в файлах, содержавших пустые области, при их копировании после внесения изменений.
Изначально проблему попытались устранить в версии 2.2.1, но исправление оказалось неэффективно. Ошибка долгое время оставалась незамеченной и начала проявляться после изменений, внесённых в утилиту "cp" в пакете coreutils 9.x. Предполагается, что в Red Hat Enterprise Linux и дистрибутивах на его основе проблема не проявляется, так как в RHEL 9 используется пакет coreutils 8.x с иной логикой работы утилиты "cp".
Проблема проявляется при использовании утилит копирования файлов, умеющих определять и оптимизировать пустые области в файлах. Повреждение может возникнуть в нагруженных ФС при копировании файла, если операция выполнена почти сразу после изменения и часть данных остаётся только в dirty-кэше и ещё не сброшена на диск.
Для оптимизации работы с пустыми областями в файлах OpenZFS, начиная с выпуска 0.6.2, поддерживает операции
SEEK_HOLE и SEEK_DATA, позволяющие пропустить пустую область файла при чтении с диска. Распознавание пустых областей и сохранение информации о них производится только после сброса на диск всех остающихся в кэше данных, связанных с файлом. Для инициирования сброса в OpenZFS имеется проверка, которая оценивает присутствие в кэше несохранённых данных и производит принудительный сброс информации на диск, необходимый для использования SEEK_HOLE и SEEK_DATA.
К сожалению, проверка оказалась неполной и при некотором стечении обстоятельств данные о состоянии сброса определялись неверно, и на диске находилась старая информация о содержимом файла, если запрос попадал в небольшое временное окно между двумя операциями сброса данных из кэша. Операции чтения, оптимизирующие загрузку пустых областей, в этот момент могли пропустить чтение части данных, посчитав их пустыми, в то время как работающая с файлом программа до этого могла внести в пустые области изменения. В результате применение утилиты "cp" могло привести к созданию копии, содержащей пустые области там, где их не было в оригинальном файле.
Опубликован релиз свободной реализации API OpenGL и Vulkan - Mesa 23.3.0. Первый выпуск ветки Mesa 23.3.0 имеет экспериментальный статус - после проведения окончательной стабилизации кода будет выпущена стабильная версия 23.3.1.
В Mesa 23.3 доступна поддержка графического API Vulkan 1.3 в драйверах anv для GPU Intel, radv для GPU AMD, tu для GPU Qualcomm, в программном растеризаторе lavapipe (lvp) и в режиме эмулятора (vn). Поддержка Vulkan 1.1 реализована в драйвере NVK (NVIDIA), а Vulkan 1.0 в v3dv (GPU Broadcom VideoCore VI из Raspberry Pi 4).
В Mesa также обеспечивается полная поддержка OpenGL 4.6 для драйверов i965, iris (Intel), radeonsi (AMD), zink, llvmpipe, virgl (виртуальный GPU Virgil3D для QEMU/KVM), freedreno (Qualcomm Adreno) и d3d12 (прослойка для организации работы OpenGL поверх DirectX 12). Поддержка OpenGL 4.5 доступна для GPU AMD (r600) и NVIDIA (nvc0).
Добавлен экспериментальный драйвер NVK для видеокарт NVIDIA, реализующий API Vulkan 1.1 и поддерживающий GPU NVIDIA на базе микроархитектуры Turing (TITAN RTX, GeForce RTX 2060/2070/2080, GeForce GTX 1660, Quadro RTX 3000-8000, Quadro T1000/T2000).
В состав принят новый бэкенд компилятора, используемый в драйвере NVK, написанный на языке Rust.
В OpenGL-драйвере Asahi для GPU Apple AGX (Apple M1 и M2), добавлена поддержка OpenGL ES 3.1 и реализованы OpenGL-расширения GL_ARB_compute_shader,
GL_ARB_shader_atomic_counters,
GL_ARB_shader_image_load_store,
GL_ARB_shader_image_size,
GL_ARB_shader_storage_buffer_object,
GL_ARB_sample_shading,
GL_OES_sample_variables,
GL_OES_shader_multisample_interpolation и
GL_OES_gpu_shader5.
В драйверы RadeonSI и RADV добавлена поддержка GPU AMD GFX11.5 (RDNA 3.5), используемых в APU AMD Ryzen 8000.
В OpenGL драйвере V3D и Vulkan-драйвере V3DV добавлена начальная поддержка подсистемы Broadcom VideoCore 7.1, используемой в платах Raspberry Pi 5.
В драйвере d3d12, предоставляющем прослойку для организации работы OpenGL поверх DirectX 12, реализована поддержка OpenGL 4.6.