Стабильный релиз Wine 10.0
После года разработки и 29 экспериментальных версий представлен стабильный релиз открытой реализации Win32 API - Wine 10.0, который вобрал в себя более 6000 изменений. Из ключевых достижений в новой версии выделяется полная поддержка архитектуры ARM64EC, масштабирование на экранах с высокой плотностью пикселей, включение по умолчанию драйвера Wayland, реализация панелей для настройки экрана и джойстика, альтернативный мультимедийный бэкенд на базе FFmpeg, драйвер Bluetooth, поддержка Vulkan 1.4, возможность эмуляции переключения видеорежимов.
В Wine подтверждена полноценная работа 5372 программ для Windows (год назад 5336, два года назад 5266, три года назад 5156), ещё 4435 программ (год назад 4397, два года назад 4370, три года назад 4312) прекрасно работают при дополнительных настройках и внешних DLL. У 4020 программ (год назад 3943, два года назад 3888, три года назад 3813) наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.
Ключевые новшества Wine 10.0:
- ARM64
- Обеспечена полная поддержка архитектуры ARM64EC (ARM64 Emulation Compatible), уровень поддержки в Wine которой достиг паритета с архитектурой ARM64. Архитектура ARM64EC разработана для упрощения портирования на системы ARM64 приложений, изначально написанных для систем x86_64, и позволяет выполнять в окружении ARM64 отдельные модули с кодом x86_64 при помощи эмулятора.
- Реализована полная поддержка формата PE-файлов ARM64X, который позволяет совмещать в одном исполняемом файле код для архитектур ARM64EC и ARM64. Для сборки Wine в формате ARM64X необходимо установить LLVM из Git (необходимая функциональность войдёт в состав релиза LLVM 20) и при запуске скрипта "configure" указать опцию "--enable-archs=arm64ec,aarch64".
- Реализован интерфейс для эмуляции 64-разрядных систем x86. При использовании ARM64EC сам Wine выполняется как есть, а эмуляция применяется только для кода приложений x86-64. Библиотека с эмулятором пока не включена в основной состав Wine, но для запуска кода x86-64 в окружении ARM64 можно использовать внешний эмулятор FEX, собранный с поддержкой ARM64EC.
- Для поддержки ARM64 необходимо использование в системе страниц памяти размером 4КБ, как того требует ABI Windows (запуск в окружениях с ядрами Linux, использующими страницы памяти 16K или 64K пока не поддерживается).
- Графическая подсистема
- Реализовано более точное масштабирование на экранах с высокой плотностью пикселей (High-DPI). Обеспечена поддержка режима DPI Awareness для организации отображения приложений на экранах с высокой плотностью пикселей, с учётом того поддерживает приложение адаптацию к изменению DPI или нет (приложения, которые не учитывают DPI, масштабируются автоматически). Добавлены опции для переопределения поддержки High-DPI в привязке к отдельным приложениям или префиксам Wine.
- В драйвер для графического API Vulkan добавлена поддержка спецификации Vulkan 1.4 (в Wine 9.0 поддерживался Vulkan 1.3.272). Добавлена поддержка расширений Vulkan для кодирования и декодирования видео.
- При использовании бэкенда X11 реализована возможность отрисовки дочерних окон Vulkan для приложений, использующих подобные окна для вывода 3D-контента (ранее подобная возможность была доступна только для OpenGL).
- В библиотеку GdiPlus добавлена поддержка механизма связывания шрифтов ("Font Linking"), позволяющего при отображении текста задействовать несколько шрифтов, если отсутствуют шрифты по отдельности охватывающие все встречающиеся в тексте символы.
- Wayland
- Интеграция с рабочим столом
- Добавлен экспериментальный механизм эмуляции "modesetting", позволяющий эмулировать переключение видеорежимов без фактического изменения настроек экрана. Видимость изменения разрешения экрана без переключения видеорежима создаётся через расширение и масштабирование окон.
- Добавлен новый апплет Desktop Control Panel (desk.cpl) с реализацией интерфейса управления настройками дисплея (например, можно изменять виртуальное разрешение десктопа или настраивать эмулируемые параметры дисплея).
- Добавлена возможность сброса настроек экрана в значения по умолчанию в случае невозможности восстановить состояние после аварийного завершения процесса.
- Добавлена поддержка отключения показа пиктограмм в системном лотке (в "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" следует указать "NoTrayItemsDisplay=1").
- Добавлена поддержка отключения оболочек (Shell launcher) в режиме десктопа (в "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" следует указать "NoDesktop=1").
- Direct3D
- Для отрисовки с использованием OpenGL теперь требуется поддержка GLSL 1.20, а также расширений EXT_framebuffer_object и ARB_texture_non_power_of_two. Поддержка старого бэкенда ARB shader и настройки OffscreenRenderingMode прекращена.
- Для Direct3D 9 и более старых версий добавлен графический конвейер фиксированных функций (в старых Direct3D предоставлялись только предопределённые графические операции, которые нельзя было изменять), реализованный при помощи языка шейдеров HLSL и позволяющий эмулировать фиксированные функции при отрисовке через API Vulkan или OpenGL.
- При отрисовке с использованием Vulkan задействованы Vulkan-расширения для динамического изменения состояния графического конвейера, позволяющие сократить подвисания в играх.
- Добавлен альтернативный бэкенд glsl-vkd3d для шейдеров GLSL, использующий vkd3d-shader.
- Предоставлена начальная поддержка компиляции эффектов Direct3D, используя vkd3d-shader.
- В библиотеке D3DX9 реализована возможность генерации MIP-текстур (MipMap) при загрузке объёмных текстур. Добавлена поддержка форматов представления цвета 64bpp RGBA и 48bpp RGB в изображениях PNG, а также форматов X8L8V8U8, A2W10V10U10, A8P8, V16U16 и Q16W16V16U16.
- Звук и видео
- В качестве альтернативы бэкенду на базе GStreamer реализован новый мультимедийный бэкенд, основанный на использовании FFmpeg и пригодный
для обеспечения работы фреймворка Media Foundation. Для включения альтернативного бэкенда в секции реестра "HKCU\Software\Wine\MediaFoundation" следует указать "DisableGstByteStreamHandler=1".
- Улучшена реализация API Media Foundation, которая теперь лучше сочетается с приложениями, зависящими от компонентов демультиплексирования и декодирования.
- В API DirectMusic добавлена поддержка загрузки файлов MIDI.
- Устройства ввода
- Добавлена начальная версия драйвера Bluetooth.
- Добавлен апплет Joystick Control Panel (joy.cpl) c реализацией настроек для джойстика.
- Внесены улучшения, связанные с устройствами управления указателем (тачпады, мыши), использующими протокол HID (Human Interface Device). Добавлен драйвер mouhid.sys для HID-устройств. Реализован корректный разбор составных устройств ввода и обеспечена передача информации о них в Windows-приложения, как о раздельных устройствах.
- Для бэкенда X11 добавлена поддержка сенсорных экранов и реализована возможность использования режима мультитач через обработку сообщений WM_POINTER* (WM_POINTERENTER, WM_POINTERLEAVE и т.п.).
- Реализовано размещение некоторых внутренних структур библиотеки user32 в разделяемой памяти, что повысило производительность и снизило
нагрузку на Wine Server.
- В winex11 добавлена поддержка обработки событий XInput2 в привязке к отдельным окнам.
- Реализована корректная поддержка клавиатур с раскладкой Dvorak.
- Ядро (интерфейсы ядра Windows)
- Добавлена поддержка повышения привилегий процессов (процессу, изначально запущенному под обычным пользователем, могут быть предоставлены привилегии администратора). При создании серверных процессов (msi action server), а также процессов, вызывающих функции RtlCreateUserProcess() и CreateProcessInternal(), по умолчанию задействован ограниченный токен администратора.
- При получении информации о метках дисков по возможности теперь используется обращение к системным сервисам через DBus, вместо попытки прямого доступа к устройству.
- Однонаправленный механизм межпроцессного взаимодействия (IPC) Mailslots теперь реализован непосредственно в Wine server, что позволило добиться полной поддержки семантики Windows.
- Реализовано ожидание событий последовательного порта в асинхронном режиме.
- Добавлена полная поддержка процессорных расширений XSTATE в контекстах потока, что позволило использовать новые векторные расширения, такие как AVX-512.
- Встроенные приложения
- Переписан движок обработки входных данных, используемый в командном интерпретаторе cmd.exe. В cmd.exe добавлена поддержка операций "||" и "&&".
- В утилиту findstr добавлена поддержка регулярных выражений и поиска без учёта регистра символов.
- В утилиты regsvr32 и rundll32 добавлена возможность регистрации модулей ARM64EC.
- Добавлены утилиты: sort для сортировки входных данных, fc для сравнения файлов и where для поиска файлов.
- В приложении wmic реализован интерактивный режим работы.
- В Explorer добавлена опциональная поддержка стартового меню и панели инструментов. Обеспечен запуск explorer.exe с урезанными правами доступа.
- Инструменты для разработки
- В winebuild добавлена опция "-marm64x" для генерации гибридных библиотек ARM64X.
- В winegcc добавлена опция "-marm64x", обеспечивающая сборку для ARM64X.
- В файлах, генерируемых с использованием языка описания интерфейса IDL (Interface Definition Language), задействованы компоненты, полностью поддерживающие выполнение в режиме интерпретации.
- В компилятор языка описания интерфейса IDL (Interface Definition Language) добавлена поддержка генерации библиотек типов (TypeLib) в старом формате (SLTG).
- В утилиту winedump добавлена поддержка сохранения дампов таблиц minidump, информации об исключениях C++ и ресурсов typelib.
- Разное
- Улучшена поддержка протокола обмена ключами Диффи-Хеллмана (DH). Добавлена возможность настройки и получения параметров DH. Реализованы обработчики для создания пар из открытого и закрытого ключей.
- Обеспечено использование добавочного заполнения OAEP (Optimal Asymmetric Encryption Padding) вместе с алгоритмом RSA.
- В API DirectPlay реализована поддержка сетевых сеансов.
- Налажена обработка состояний асинхронного ввода/вывода при работе в режиме WoW64 (64-bit Windows-on-Windows), позволяющем выполнять 32-разрядные Windows-приложения в 64-разрядных Unix-системах.
- Добавлена поддержка загрузки ODBC-драйверов к СУБД, собранных для Windows.
- Для платформы ARM реализована полная поддержка RPC/COM, C++ RTTI (Run-Time Type Information) и исключений C++.
- В C runtime в ANSI-функциях реализована поддержка кодировки UTF-8.
- Расширены возможности движка MSHTML. Добавлена поддержка прототипов и конструкторов объектов. В JavaScript-движок добавлен новый интерфейс
связывания объектов для MSHTML. Встроенные функции MSHTML преобразованы в корректные объекты JavaScript. Улучшен сборщик мусора для JavaScript, который теперь охватывает все контексты выполнения скрипта в потоке. Добавлена поддержка JavaScript-объектов ArrayBuffer и DataView.
- В систему непрерывной интеграции на базе Gitlab добавлена поддержка статического анализа с использованием Clang и отчётов о прохождении тестов JUnit.
- В состав встроена библиотека Capstone 5.0.3, через которую реализовано дизассемблирование в отладчике WineDb.
- Обновлены до новых версий компоненты:
Vkd3d 1.14,
Faudio 24.10,
FluidSynth 2.4.0,
LDAP 2.5.18,
LCMS2 2.16,
LibJpeg 9f,
LibMPG123 1.32.9,
LibPng 1.6.44,
LibTiff 4.7.0,
LibXml2 2.12.8,
LibXslt 1.1.42 и
Zlib 1.3.1.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62592
Выпуск минималистичного набора системных утилит Toybox 0.8.12
Опубликован релиз набора системных утилит Toybox 0.8.12, оптимизированного для минимального потребления системных ресурсов. По аналогии с BusyBox все утилиты набора доступны через один исполняемый файл. Проект развивается бывшим мэйнтейнером BusyBox и распространяется под лицензией 0BSD. Целью создания Toybox является предоставление производителям возможности использования минималистичного набора стандартных утилит без открытия исходных текстов модифицированных компонентов. По возможностям Toybox пока отстаёт от BusyBox, но уже реализовано 316 базовых команд (235 полностью и 81 частично) из 392 запланированных.
Среди новшеств Toybox 0.8.12:
- В tar добавлена поддержка алгоритма сжатия zstd и реализована возможность работы с устаревшими форматами архивов.
- В getconf реализована обработка переменных окружения NPROCESSORS_CONF и NPROCESSORS_ONLN.
- В netcat добавлены опции "-o" и "-O".
- В devmem реализованы опции "--no-mmap", "-f FILE" и "--no-sync".
- В test добавлены опции "-ef", "-ot" и "-nt".
- В dmesg добавлена опция "-W".
- В mount добавлена поддержка "LABEL=".
- В lsusb и lspci учтено содержимое /usr/share/hwdata.
- Устранены ошибки и улучшены реализации утилит grep, host, find, chmod, tar, ps, test, file, patch, cp, lsusb, top, blkid,
ionice, microcom.
- Добавлена поддержка сборки для платформ riscv32 и riscv64.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62591
Выпуск 9front 10931, ответвления от операционной системы Plan 9
Представлен выпуск операционной системы 9front 10931, опубликованный под кодовым именем "THIS TIME DEFINITELY". Проект 9front с 2011 года развивает независимый от компании Bell Labs форк распределённой операционной системы Plan 9. Готовые установочные сборки сформированы для архитектур i386, x86_64 и плат Raspberry Pi 1-4. Код распространяется под лицензией MIT. Доступна приуроченная к релизу музыкальная композиция.
Основная идея Plan 9 связана со стиранием различий между локальными и удалёнными ресурсами. Система представляет собой распределённую среду, базирующуюся на трёх базовых принципах: все ресурсы можно рассматривать как иерархический набор файлов; нет различия в доступе к локальным и внешним ресурсам; каждый процесс имеет собственное изменчивое пространство имён. Для создания единой распределённой иерархии файлов-ресурсов используется протокол 9P.
Форк 9front примечателен реализаций дополнительных механизмов защиты, расширением поддержки оборудования, улучшением работы в беспроводных сетях, добавлением новых файловых систем, реализацией звуковой подсистемы и кодировщиков/декодировщиков звуковых форматов, поддержкой USB, созданием web-браузера Mothra, заменой загрузчика и системы инициализации, применением шифрования данных на диске, поддержкой Unicode, наличием эмулятора режима реальных адресов, поддержкой архитектуры AMD64 и 64-разрядного адресного пространства.
Значительные изменения:
- В инсталляторе включена новая файловая система gefs, созданная специально для Plan 9, поддерживающая снапшоты и оптимизированная для быстрого перебора файлов в очень больших каталогах. ФС спроектирована для сохранения целостности в случае сбоев, таких как экстренное отключение питания, и имеет средства для самодиагностики, не допускающие скрытого повреждения данных и возвращения некорректных данных. При этом gefs полностью совместима с традиционной файловой системой 9p, возможности которой воссозданы с использование режима copy-on-write и структуры Bε-tree.
- В утилиты ip и ipconfig добавлена поддержка динамического выделения IP-адресов через DHCPv6 и обработки истечения времени действия префиксов для IPv6.
- Устранена уязвимость CVE-2024-8158, вызванная ошибкой в механизме аутентификации, реализованном в библиотеке lib9p. Уязвимость позволяет пользователю, имеющему учётную запись в системе, выдать себя за любого другого пользователя при работе с файловой системой. Причиной уязвимости является отсутствие должного сопоставления имени пользователя, передаваемого в 9p-сообщениях Tauth и Tattach, с UID-идентификатором клиента, выдаваемом после прохождением пользователем аутентификации. Проблема проявляется во всех версиях 9front (ошибка допущена в коде Plan 9 ещё до создания форка), но затрагивает только конфигурации с файловой системой hjfs (в системах с ФС cwfs и gefs уязвимость не проявляется).
Источник: https://www.opennet.ru/opennews/art.shtml?num=62590
Доступен полностью свободный вариант ядра Linux-libre 6.13
Латиноамериканский Фонд свободного ПО опубликовал полностью свободный вариант ядра Linux 6.13 - Linux-libre 6.13-gnu, очищенный от элементов прошивок и драйверов, содержащих несвободные компоненты или участки кода, область применения которых ограничена производителем. В Linux-libre также отключены функции ядра для загрузки внешних несвободных компонентов, не входящих в поставку ядра, а из документации удалены упоминания об использовании несвободных компонентов.
Для очистки ядра от несвободных частей проектом Linux-libre создан универсальный shell-скрипт, который содержит тысячи шаблонов для определения наличия бинарных вставок и исключения ложных срабатываний. Также доступны для загрузки готовые патчи, созданные на основе использования вышеупомянутого скрипта. Ядро Linux-libre рекомендовано для использования в дистрибутивах, соответствующих критериям Фонда СПО по построению полностью свободных дистрибутивов GNU/Linux. Например, Linux-libre используется в таких дистрибутивах, как Dragora Linux, Trisquel, Dyne:Bolic, gNewSense, Parabola, Musix и Kongoni.
В выпуске Linux-libre 6.13-gnu добавлен код для чистки блобов в новых драйверах rtw8812a, rtw8821a, bmi270, aw88081, ntp8835, ntp8918.
Произведена чистка имён блобов в dts-файлах (devicetree) для архитектуры Aarch64. Обновлён код удаления блобов в драйверах wilc1000, rt1320, sh4-siu, ivpu, btnxpuart, adreno и r8169, а также в коде, связанном с поддержкой сенсорных экранов на системах с архитектурой x86. Прекращена чистка драйверов rtl8192e, rtl8712, vt6656 и ti-st, которые были удалены из состава ядра.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62589
Открыт инструментарий для программируемых Ethernet-коммутаторов Intel Tofino
Компания Intel открыла инструментарий, позволяющий создавать собственные приложения для обработки пакетов в программируемых Ethernet-коммутаторах серии Tofino. Под лицензией Apache 2.0 открыт исходный код бэкеда к компилятору p4c и компонентов среды разработки Intel P4 Studio, таких как драйверы, модель симуляции коммуатора, сервер и клиент для протокола BF Runtime. Для создания приложений применяется предметно-ориентированный язык программирования P4 (Programming Protocol-independent Packet Processors), предназначенный для определения логики обработки пакетов в сетевых устройствах, таких как сетевые карты, коммутаторы, маршрутизаторы и межсетевые экраны.
Опубликованный бэкенд позволяет транслировать программы на языке P4 в представление, пригодное для установки на коммутаторах серии Intel Tofino. Благодаря этому пользователи коммутаторов могут создавать приложения, расширяющие штатную функциональность, изменяющие логику работы или адаптирующие устройство к специфике своих сетей.
Программы на языке P4 компилируются в представления для целевых платформ, которые могут быть как аппаратными (FPGA, программируемые ASIC), так и программными (x86, BPF). Вместе с кодом для установки на целевые системы компилятор генерирует runtime для управления приложением с использованием протоколов Protobuf/gRPC и API P4Runtime.
Типовая логика работы программ сводится к классификации пакетов по их заголовкам и выполнению действий над входящими пакетами, таких как перенаправление, отбрасывание, изменение TTL и замена полей. Язык не привязан к сетевым протоколам и вместо вшитой поддержки типовых протоколов, таких как IP, Ethernet, TCP и VxLAN, предоставляет разработчикам возможность определения любых протоколов в привязке к компилируемым приложениям (разработчик прикрепляет описание форматов заголовков и полей протокола).
Кроме опубликованного бэкенда для коммутаторов Intel Tofino проектом P4 предоставляется бэкенд для компиляции P4-приложений в код на языке Си, который затем может быть скомпилирован в формат, пригодный для исполнения в виртуальной машине eBPF внутри ядра Linux. Проектом также развивается открытый симулятор коммутатора, который можно использовать для проведения экспериментов в виртуальной сети Mininet, и бэкенд для компиляции P4-программ для симулятора.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62586
В Mesa принят amdgpu_virtio для использования OpenGL и Vulkan в гостевых системах
В кодовую базу, используемую для формирования выпуска Mesa 25.0, принята прослойка amdgpu_virtio, позволяющая гостевой системе использовать OpenGL- и Vulkan-драйверы radeonsi, radeonsi_drv_video и radv, предоставляемые хост-окружением. Доступ осуществляется через VirtIO, что обеспечивает высокую производительность 3D-ускорения в виртуальной машине. На данный момент использование драйвера возможно только в связке QEMU+KVM.
Заявлено, что производительность amdgpu_virtio выше, чем при использовании драйверов virgl и venus, ранее разработанных для доступа к Vulkan и OpenGL из гостевых систем. При проведении тестов Unigine Heaven и Superposition производительность в гостевых системах составила примерно 99% по сравнению с производительностью при запуске тестов на стороне хоста.
Из достоинств нового метода также упоминается упрощение сопровождения, так как в гостевой системе используются те же драйверы, что и при работе без виртуализации, за исключением того, что вместо прямого обращения к libdrm (amdgpu) используется дополнительная прослойка на основе VirtIO.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62571
Для ядра Linux предложен драйвер с реализацией режима NVMe PCI Endpoint
Компания Western Digital разработала для ядра Linux драйвер с реализацией NVMe PCI Endpoint Function Target. При наличии контроллера PCIe, поддерживающего режим endpoint, драйвер позволяет системе под управлением Linux изображать из себя контроллер PCI NVMe, который для других систем будет выглядеть как накопитель с интерфейсом NVMe.
Как пример, подобный накопитель был реализован на основе платы Rock5B, использующей SoC Rockchip RK3588 с контроллером PCI Gen3x4, умеющем работать в режиме endpoint. При использовании блочного устройства null_blk и в конфигурации с 4 очередями ввода/вывода накопитель показал пропускную способность в 2.8 GB/sec при последовательном чтении блоков 512KB и производительность в 131 тысяч операций ввода/вывода в секунду при случайных операциях чтения блоками 4K.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62588
Релиз ядра Linux 6.13
После двух месяцев разработки Линус Торвальдс представил релиз ядра Linux 6.13. Среди наиболее заметных изменений: режим ленивого вытеснения в планировщике задач, поддержка атомарной записи в XFS и Ext4, механизм "multigrain timestamps", адаптивный режим включения полинга в сетевой подсистеме, возможность сборки с оптимизациями AutoFDO, поддержка механизма защиты ARM65 Guarded Control Stack, раздельные стеки в BPF, удаление ReiserFS, режим монтирования tmpfs учёта регистра символов, поддержка POSIX-расширений в SMB3.
В новую версию принято 14172 исправлений от 2086 разработчиков,
размер патча - 46 МБ (изменения затронули 15375 файлов, добавлено 598707 строк кода, удалено 406294 строк). В прошлом выпуске было 14607 исправлений от 2167 разработчиков, размер патча - 37 МБ. Около 52% всех представленных в 6.13
изменений связаны с драйверами устройств, примерно 13% изменений имеют
отношение к обновлению кода, специфичного для аппаратных архитектур, 11%
связано с сетевым стеком, 4% - с файловыми системами и 3% c внутренними
подсистемами ядра.
Основные новшества в ядре 6.13:
- Дисковая подсистема, ввод/вывод и файловые системы
- Добавлен механизм "multigrain timestamps", позволяющий получать информацию о времени изменения или доступа к файлам c более чем с миллисекундой точностью, но без негативного влияния на производительность. Повышение точности меток приводит к дополнительным накладным расходам из-за увеличения интенсивности записи метаданных на диск, поэтому в предложенной реализации более точные метки создаются не для всех файлов, а только для тех, для которых процессы запрашивают подобные метки через вызов getattr().
- Добавлена поддержка атомарных операций записи, при которых запись данных, размер которых превышает размер сектора, осуществляется атомарно на устройствах хранения, предоставляющих подобную возможность. В настоящее время атомарная запись реализована для XFS, Ext4 в режиме O_DIRECT (Direct I/O) и md RAID 0/1/10.
- Предложен новый механизм подсчёта ссылок для файлов, обеспечивающий прирост производительности на 3-5% в рабочих нагрузках, имеющих более 255 потоков.
- Удалена реализация файловой системы ReiserFS, которая в позапрошлом году была объявлена устаревшей.
- Добавлен sysctl-параметр "fs.dentry-negative" для выставления в VFS политики очистки записей "dentry" (внутреннее представление элементов каталогов) после удаления связанных с ними файлов. Для каких-то видов нагрузки оптимальнее оставлять подобные записи об удалённых файлах, а для каких-то - удалять, поэтому в ядре предоставлена возможность выбора (по умолчанию "dentry" автоматически не удаляются).
- В системный вызов statmount() добавлен флаг STATMOUNT_OPT_ARRAY для возвращения списка опций файловой системы в виде массива из строк, завершающихся нулевым символом и не использующих экранирование "\000". Добавлена поддержка возвращения подтипа ФС (fs_subtype, для определения использования FUSE), опций безопасного монтирования и исходного суперблока (sb_source).
- В OverlayFS предоставлена возможность указания слоёв через файловые дескрипторы, а не имена файловых путей.
- В файловую систему tmpfs добавлена опция монтирования "casefold" для работы без учёта регистра символов и опция "strict_encoding" для блокирования создания файлов с именами, содержащими некорректные символы UTF-8.
- Предложен новый набор системных вызовов для управления расширенными атрибутами файлов: setxattrat(), getxattrat(), listxattrat() и removexattrat(). В отличие от системных вызовов setxattr(), getxattr(), listxattr() и removexattr() новые варианты требуют указания файлового дескриптора каталога, относительно которого осуществляется поиск файлового пути.
- В Btrfs добавлена ioctl-операция BTRFS_IOC_SUBVOL_SYNC_WAIT, включающая ожидание завершения очистки подразделов, что позволяет выполнить команду "btrfs subvolume sync" непривилегированным пользователем, не имеющим доступа к ioctl SEARCH_TREE (полезно в приложениях резервного копирования, очищающих подразделы). Добавлена ioctl-операция ENCODED_READ для чтения через io_uring закодированных данных, например, для чтения напрямую сжатых экстентов без распаковки. Продолжена работа по переходу на использование фолиантов страниц памяти (page folios). Сокращено возникновение конкурирующих блокировок ("lock contention") при поиске встроенных обратных ссылок и при переборе буферов экстентов. Повышена эффективность сжатия карты экстентов.
- В файловой системе EROFS (Extendable Read-Only File System), предназначенной для использования на разделах, доступных в режиме только для чтения, реализована возможность использования в системном вызове lseek() опций SEEK_HOLE и SEEK_DATA.
- В F2FS добавлена поддержка отражения устройств ("device aliasing"), позволяющая временно зарезервировать область в F2FS для использования части блочного устройства в другой ФС. После завершения внешней операции зарезервированную область можно вернуть в F2FS. Например, можно создать ФС командой "mkfs.f2fs -c /dev/vdc@vdc.file /dev/vdb", после чего содержимое устройства /dev/vdc будет зарезервировано и отражено в файл vdc.file и раздел /dev/vdc можно использовать для своих нужд, например, отформатировать под другую ФС. Для возвращения зарезервированного содержимого достаточно удалить файл vdc.file.
- В XFS включена поддержка квот для realtime-устройств. Добавлена поддержка директории с метаданными (metadata directory), в которой размещаются все inode с метаданными.
- В механизме FUSE включена возможность динамического изменения максимального числа страниц (FUSE_MAX_MAX_PAGES), используя "sysctl fs.fuse.max_pages_limit". В работе задействованы фолианты страниц памяти (page folios).
- В SMB реализована поддержка POSIX-расширений для SMB3, необходимых для хранения специальных типов файлов, таких как fifo, файлы устройства и символические ссылки. Добавлена возможность монтирования раздела с альтернативным паролем, применяемым при ротации паролей. Добавлена новая опция монтирования "cifs.upcall" для определения пространства имён. Обеспечено распознавание файлов символьных и блочных устройств, созданных в Windows NFS
Server. Добавлена поддержка символических ссылок в стиле WSL (Windows Subsystem for Linux).
- Файловые системы UBIFS, ADFS, BEFS, HFS, HFSPLUS, HPFS, JFS и ECRYPTFS переведены на использование нового API монтирования разделов.
- Файловые системы и ECRYPTFS, UFS и NILFS2 переведены на использование фолиантов страниц памяти (page folios).
- Память и системные сервисы
- В планировщике реализована модель ленивого вытеснения задач (PREEMPT_LAZY, lazy preemption), которая аналогична модели полного вытеснения ("full preemption") для realtime-задач (RR/FIFO/DEADLINE), но задерживает вытеснение обычных задач (SCHED_NORMAL) до границы тика. Указанная задержка приводит к сокращению случаев вытеснения держателей блокировок, что позволяет приблизить производительность к конфигурациям, использующим модель добровольного вытеснения (voluntary preemption). Таким образом, новая модель позволяет сохранить возможности полного вытеснения в отношении realtime-задач, но сводит к минимуму проседание производительности для обычных задач. Кроме того, новая модель упрощает логику операций вытеснения в ядре, благодаря сокращению вовлечения в процесс планирования обработчиков, находящихся в компонентах ядра, вне планировщика задач.
- При сборке компилятором Clang предоставлена возможность использования оптимизаций AutoFDO и добавлена конфигурация для инструментария Propeller. Оптимизация AutoFDO (Auto-Feedback-Directed Optimization) использует результаты профилирования c информацией о частоте выполнения различных участков кода для повышения производительности часто выполняемых операций. Проведённое тестирование показало снижение задержек на 10% при сборке с AutoFDO. Propeller используется для накопления статистики о выполнении кода для её дальнейшего использования компилятором при принятии решений, связанных с оптимизацией.
- В системный вызов madvise(), предоставляющий средства для оптимизации управления памятью процесса, добавлен флаг MADV_GUARD_INSTALL для подстановки в указанный диапазон адресов сторожевых страниц памяти (guard page), попытка доступа к которым вызывает исключение и аварийное завершение процесса (SIGSEGV). По сравнению с маппингом в режиме PROT_NONE сторожевые страницы позволяют более эффективно блокировать выполнение кода за пределами выделенной области памяти, так как их создание не требует выделения новой области виртуальной памяти.
- Новые возможности подсистемы асинхронного ввода/вывода io_uring: изменение размера уже созданного кольцевого буфера; отправка в синхронном режиме сообщений в другой кольцевой буфер; частичное клонирование буфера; фиксированные области ожидания; гибридный полинг ввода/вывода; расширенный API для регистрации кольцевых буферов и областей памяти.
- На системах с CPU AMD реализована возможность выявления расщеплённых блокировок ("split-lock"), возникающих при доступе к невыровненным данным в памяти, когда при выполнении атомарной инструкции данные пересекают две линии кеша CPU. Подобные блокировки приводят к значительному падению производительности (на 1000 циклов медленнее, чем атомарная операция с данными, попадающими в одну линию кеша).
- Добавлен драйвер AMD Cache Optimizer, позволяющий использовать технологию AMD 3D V-Cache для повышения производительности отдельных ядер CPU за счёт увеличения размера доступного им L3-кэша (режим Cache) или повышения частоты (режим Frequency).
- Для архитектуры MIPS добавлена поддержка систем с многокластерными (multi-cluster) контроллерами прерываний (для каждого кластера в CPU предусмотрен отдельный контроллер прерываний).
- Добавлена новая ioctl-операция PIDFD_GET_INFO, позволяющая получить сведения о процессе по его идентификатору PIDFD. Идентификатор PIDFD связывается с конкретным процессом и не меняется, в то время как PID может быть привязан к другому процессу после завершения процесса, ассоциированного с этим PID.
- В планировщик задач добавлены компоненты, необходимые для реализации механизма Proxy Execution, решающего проблему с перестановкой приоритетов (ситуация, когда низкоприоритетная задача удерживает ресурс, необходимый высокоприоритетной (realtime) задаче, и тем самым блокирует её). Осуществлено разделение контекстов планировщика и исполнения процессов.
- Добавлен основанный на netlink API для выставления ограничений температуры в привязке к устройствам. При превышении данных ограничений в обработчик в пространстве пользователей передаются уведомления.
- Продолжен перенос изменений из ветки Rust-for-Linux, связанных с использованием языка Rust в качестве второго языка для разработки драйверов и модулей ядра (поддержка Rust не активна по умолчанию, и не приводит ко включению Rust в число обязательных сборочных зависимостей к ядру). Добавлены обвязки над структурами данных и интерфейсами VFS, необходимые для работы драйвера Binder, переписанного на Rust. Добавлена поддержка событий трассировки в коде на Rust. Добавлены дополнительные обвязки для написания драйверов. Добавлены обвязки для pid_namespace.
Предложен модуль 'alloc' с системой выделения памяти и специфичная для ядра реализация типажа Allocator, не привязанная к внешнему модулю Alloc и в отличие от последнего не использующая нестабильные возможности языка. На базе Allocator подготовлены реализации Kmalloc, Vmalloc и KVmalloc, а также созданы типы Vec и Box.
- В подсистеме BPF предоставлена возможность использования в BPF-программах отдельного стека с целью снижения риска переполнений при обработке больших цепочек вызовов.
Реализован итератор kmem_cache для получения из BPF-программы данных о состоянии механизма распределения памяти slab (slab allocator). Добавлена функция bpf_send_signal_task(), позволяющая BPF-программам отправлять сигналы другим процессам. Добавлен механизм разделяемой памяти BPF map, который можно использовать, например, для передачи сведений о нагрузке обработчикам планировщика задач sched_ext.
- В систему трассировки добавлена возможность генерации исключения (page fault) при срабатывании точек трассировки на входе или выходе из системного вызова для чтения параметров, передаваемых из пространства пользователя.
- Добавлен параметр командной строки ядра "transparent_hugepage_shmem" для управления использованием больших страниц памяти в ФС tmpfs и shmem.
- Реализована поддержка работы в режиме реального времени на системах с архитектурой Loongarch.
- Для систем RISC-V реализована поддержка расширений Smmpm", "Smnpm" и "Ssnpm" для маскирования указателей в пространстве пользователя (использования части битов указателей для хранения не связанных с адресацией метаданных).
- Виртуализация и безопасность
- Для систем на базе архитектуры ARM64 добавлена поддержка запуска Linux в виртуальных машинах, изолированных при помощи технологии ARM CCA (Confidential Compute Architecture). ARM CCA предоставляет гарантии целостности памяти виртуальных машин и защищает их от модификации и анализа со стороны администратора хост-системы, способного выполнить код на уровне гипервизора.
- Добавлена поддержка расширения ARM64 GCS (Guarded Control Stack) для аппаратной защиты адресов возврата из функций и блокирования эксплоитов, использующих методы возвратно-ориентированного программирования (ROP - Return-Oriented Programming, эксплоит формируется из уже имеющихся кусков машинных инструкций, завершающихся инструкцией возврата управления). ARM64 GCS позволяет использовать для защиты процессов в пространстве пользователя технику теневого стека (shadow stack) - после передачи управления функции, адреса возврата сохраняются процессором не только в обычном стеке, но и в отдельном теневом стеке, который не может быть изменён напрямую. Перед выходом из функции адрес возврата извлекается из теневого стека и сверяется с адресом возврата из основного стека.
- В SELinux реализована поддержка управления политиками безопасности в привязке к отдельным операциям Netlink. Объявлен устаревшим и будет удалён одном из будущих выпусков конфигурационный интерфейс /sys/fs/selinux/user, который до 2020 года использовался в библиотеке libselinux.
- В криптоподсистему ядра добавлен внутренний API Asymmetric Signature для генерации цифровых подписей по открытым ключам.
- В подсистеме "iommufd", позволяющей управлять таблицами страниц памяти ввода/вывода IOMMU (I/O Memory-Management Unit) через файловые дескрипторы из пространства пользователя, реализованы операции IOMMU_IOAS_MAP_FILE, IOMMU_IOAS_CHANGE_PROCESS, IOMMU_VIOMMU_ALLOC и IOMMU_VDEVICE_ALLOC. Добавлена возможность использования ARM SMMuv3 (System Memory Management Unit) для вложенной трансляции адресов.
- Добавлен виртуализированный драйвер virtual-cpufreq для ядер, запускаемых в гостевых системах. Драйвер позволяет отправлять хосту запросы на изменение частоты виртуального CPU (vCPU), которые могут использоваться на стороне хоста при планировании изменения частоты реального CPU.
- Сетевая подсистема
- Добавлен новый режим доставки пакетов, адаптивно переключающийся между активным полингом (NAPI/busy polling, периодический опрос устройства ядром) и генерацией прерываний в зависимости от периодов активности приложения. Когда приложение находится в состоянии простоя (idle) используется обработка прерываний, а когда фиксируется высокая нагрузка - используется полинг.
- Добавлен netlink API для управления полингом (NAPI) в сетевых драйверах, позволяющий настраивать отдельные экземпляры NAPI вместо настройки всего сетевого интерфейса.
- Добавлен netlink API net-shaper для настройки ограничения интенсивности отправки пакетов (TX H/W shaping) с поддержкой интроспекции аппаратных возможностей сетевой карты для шейпинга.
- В сетевом стеке проведена работа по избавлению от конкурирующих блокировок - глобальная блокировка RTNL (rtnl_lock) преобразована в блокировку, привязываемую к отдельным пространствам сетевых имён, что позволило сократить конкуренцию между блокировками в системах, активно использующих пространства имён, например, в конфигурациях с изолированными контейнерами. Оптимизация пока объявлена экспериментальной и отключена по умолчанию. Для включения следует использовать при сборке параметр DEBUG_NET_SMALL_RTNL.
- Оборудование
- Продолжена работа над drm-драйвером (Direct Rendering Manager) Xe для GPU на базе архитектуры Intel Xe, которая используется в видеокартах Intel семейства Arc и интегрированной графике, начиная с процессоров Tiger Lake.
- В драйвер i915 добавлены идентификаторы новых GPU на базе микроархитектуры Arrow Lake. Добавлена поддержка GPU на базе микроархитектуры Panther Lake.
- В драйвере Nouveau реализована поддержка механизма drm_panic (отображает при сбоях подобие "синего экрана смерти") для GPU начиная с nv50.
- В драйвере AMDGPU реализована возможность сброса очередей SDMA
Добавлена поддержка SMU 13.0.6 и JPEG 4.0.3.
- В DRM-драйвер msm (GPU Qualcomm Adreno) добавлена поддержка GPU
Adreno A663, чипсетов MSM8917, MSM8937, MSM8953 и MSM8996, а также платформы Qualcomm SA8775P.
- В звуковой подсистеме ALSA предложен новый режим обращения к аппаратным устройствам, предоставляющим функции для ускорения вычислений, связанных с обработкой звука (например, преобразование частоты дискретизации, распаковка и декодирование потоков).
- Добавлена поддержка звуковых кодеков Realtek RT721 SDCA, Everest Semi ES8323, NXP UDA1342, Cirrus Logic CS42L84. Добавлена поддержка усилителей NeoFidelity NTP8918/NTP8835/NTP8835C, Awinic aw88081 и Iron Device SMA1307. Добавлена поддержка звуковых систем устройств Samsung Galaxy Book3 360, ASUS Zenbook UM5606WA, ASUS Zen AIO 27 и Ayaneo System CS35L41.
- Прекращена поддержка платформы PowerPC Maple, которая давно не используется на практике.
- Добавлена поддержка ARM-плат, SoC и устройств: Nothing Phone 1, Microsoft Surface Pro 9 5G, Redmi 5A (MSM8917/PM8937), Samsung Galaxy S9, Samsung Exynos 8895, 9810 и 990 (применялись в смартфонах Samsung Galaxy), Apple A7*/A8*/A9*/A10*/A11*, FriendlyARM NanoPi R3S, Orange Pi 5b, Radxa ROCK 5C, Rockchip RK3528, Microchip sam9x7, TI J742S2, Renesas R-Car Gen4 E-FUSE, Marvell PXA1908, Nuvoton Arbel NPCM8XX, Kobo Clara 2E,
Kontron OSM-S i.MX8MP, Freescale Ivy, Boundary Device Nitrogen8MP, i.MX8M Plus Gateworks GW82XX-2X, iMX8MP, X1E Dell XPS 9345, CS9100, Powkiddy RGB20SX, Rockchip RK3528, IPQ5424, IPQ5404.
- Добавлена поддержка экранных панелей Samsung AMS581VF01, Samsung AMS639RQ08, Samsung S6E3HA8 и Microchip AC69T88A LVDS.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62587
Релиз минималистичного web-браузера Dillo 3.2.0
Представлен релиз web-браузера Dillo 3.2.0. Браузер предоставляет графический интерфейс на основе вкладок и поддерживает HTML 4.01, CSS и HTTPS (нет поддержки JavaScript). Функциональность Dillo может расширяться через плагины, например, имеются плагины для протоколов IPFS и Gemini. При открытии стартовой страницы Dillo расходует 12 МБ ОЗУ, а установочный deb-пакет занимает около 600 КБ. Графический интерфейс построен с использованием библиотеки FLTK2. Код проекта распространяется под лицензией GPLv3.
В новой версии:
- Через подключение библиотеки nanosvg реализована поддержка векторных изображений в формате SVG и возможность отрисовки математических формул.
- Добавлена возможность сборки с библиотекой libwebp для поддержки изображений в формате WebP. Для выбора обрабатываемых форматов изображений может использоваться параметр "ignore_image_formats".
- Добавлен режим постраничной прокрутки содержимого, упрощающий навигацию по многостраничным документам. Режим включается через параметр "scrollbar_page_mode" и позволяет прокручивать содержимое на страницу вниз или вверх при щелчке левой или правой кнопкой мыши на вертикальной полосе прокрутки. Степень перекрытия прокручиваемой области можно настроить через параметр scroll_page_overlap.
- Добавлен параметр "scrollbar_on_left" для перемещения полосы прокрутки в левую сторону.
- Добавлен параметр "link_action allows" для привязки собственных обработчиков ссылок (например, можно добавить кнопки для открытия ссылок в другом браузере или в мультимедийном проигрывателе).
- Реализованы клавиатурные комбинации "Ctrl +" и "Ctrl -" для изменения уровня масштабирования текста на странице. Комбинация "Ctrl 0" сбрасывает масштаб с исходное состояние. Для задания масштаба по умолчанию добавлен параметр "zoom_factor option".
- Предоставлена возможность перезагрузки текущей страницы через отправку процессу сигнала SIGUSR1, что может оказаться полезным, например, для организации работы экранов, отображающих обновляемые данные с системы мониторинга.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62585
Выпуск uutils 0.0.19, варианта GNU Coreutils на языке Rust
Опубликован выпуск проекта uutils coreutils 0.0.29, развивающего аналог пакета GNU Coreutils, написанный на языке Rust. В состав coreutils входит более ста утилит, включая sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Целью проекта является создание кроссплатформенной альтернативной реализации Coreutils, способной работать в том числе на платформах Windows, Redox и Fuchsia. В отличие от GNU Coreutils реализация на Rust распространяется под пермиссивной лицензией MIT, вместо копилефт-лицензии GPL. Дополнительно той же командой разработчиков развиваются написанные на Rust аналоги наборов утилит util-linux, diffutils, findutils и bsdutils.
В новой версии uutils:
- Учтены изменения в выпуске GNU Coreutils 9.6.
- Улучшена совместимость с эталонным тестовым набором GNU Coreutils, при прохождении которого успешно выполнено 506 теста (в прошлой версии 476), 67 (94) тестов завершилось неудачей, а 41 (43) тест был пропущен.
- Обеспечена полная совместимость с GNU Coreutils для утилит
df, dircolors, chmod, chroot, comm, seq, split, uniq и more.
- Проведена оптимизация производительности утилит du, echo и seq.
- Расширены возможности, улучшена совместимость и добавлены недостающие опции для утилит basenc, base32, base64, checksum, chmod, chroot, comm, cp, csplit, cut, date, dd, df, dircolors, du, echo, env,
fmt, head, install, kill, ls, mkfifo, more, mv, numfmt, printf, rm, seq, sort, split, stat. tail, tr, tsort, uniq, wc и uucore.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62584
Выпуск отладчика GDB 16
Представлен релиз отладчика GDB 16.1 (первый выпуск серии 16.x, ветка 16.0 использовалась для разработки). GDB поддерживает отладку на уровне исходных текстов для широкого спектра языков программирования (Ada, C, C++, D, Fortran, Go, Objective-C, Modula-2, Pascal, Rust и т.д.) на различных аппаратных (i386, amd64, ARM, Power, Sparc, RISC-V, LoongArch и т.д.) и программных платформах (GNU/Linux, *BSD, Unix, Windows, macOS).
Наиболее заметные улучшения:
- Для Linux-окружений на системах с архитектурой LoongArch реализована поддержка записи и повторного выполнения (record/replay).
- Для теггированных указателей, часть битов в которых используется для хранения дополнительных данных, реализована поддержка точек останова, срабатывающих при изменении данных (watchpoint).
- На системах с архитектурой AArch64 реализована поддержка отладки механизма защиты MTE (Memory Tagging Extension). MTE даёт возможность привязать теги к областям в памяти и организовать проверку корректности использования указателей для блокирования эксплуатации уязвимостей, вызванных некорректной работой с памятью.
- Добавлен bash-скрипт gstack, использующий GDB для вывода трассировок стека работающих процессов.
- Для точек остановка в состоянии ожидания (pending) ключевые слова 'thread' и 'task' теперь разбираются во время создания точки останова, а не после выхода из состояния ожидания.
- Обеспечена подстановка точек останова, привязанных к потокам, только в ту область программы, в которой выполняется необходимый поток.
- Расширены возможности трассировки на процессорах Intel: при пошаговой отладке, а также в командах "record instruction-history" и "record function-call-history" реализован вывод асинхронных событий и данных, сохраняемых при использовании инструкции ptwrite.
- В Python API добавлены: модуль gdb.missing_objfile, событие gdb.tui_enabled, атрибут gdb.Symbol.is_artificial и функция gdb.record.clear.
- Расширены возможности протокола DAP (Debugger Adapter Protocol), связанные с обработкой запросов "scopes", "launch" и "attach".
- В протокол удалённой отладки добавлена поддержка пакетов "vFile:stat" и "x addr,length".
- Прекращена поддержка QNX Neutrino, Nios II и Intel MPX.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62582
Выпуск VPN Lanemu 0.12
Состоялся выпуск Lanemu P2P VPN 0.12 - реализации децентрализованной виртуальной частной сети, работающей по принципу Peer-To-Peer, при котором участники подключены друг к другу, а не через центральный сервер. Участники сети могут находить друг друга через BitTorrent-трекеры или BitTorrent DHT, либо через других участников сети (peer exchange). Приложение является бесплатным и открытым аналогом VPN Hamachi, написано на языке Java (c отдельными компонентами на языке Си) и распространяется под лицензией GNU LGPL 3.0. Поддерживается запуск в Windows, GNU/Linux и FreeBSD.
Изменения в версии 0.12:
- Для пирингового шифрования задействован алгоритм AES-128-GCM. Из-за изменения алгоритма шифрования новая версия приложения не сможет взаимодействовать с предыдущими версиями. Изменения в приглашениях не требуется.
- Добавлена возможность получения IPv6-адресов с BitTorrent-трекеров.
- Bouncy castle обновлён до версии jdk18on-1.79.
- Частично исправлена проблема с загрузкой 32-битной библиотеки libTunTapWindows.dll.
- Улучшен алгоритм поиска сетевого устройства в Windows.
- Добавлена возможность ручного удаления IP-адресов из списка известных IP-адресов, показываемого при нажатии правой кнопки мыши на записи.
- Переработано внутреннее поведение модуля системного трея для Linux и FreeBSD.
- Добавлен загрузчик OpenJDK, который скачивает архив OpenJDK и устанавливает его в директорию "jdk" рядом с исполняемым файлом программы.
- Календарь теперь использует системный язык при создании приглашения, что влияет на порядок дней недели.
- Обновлены параметры сети по умолчанию, применяемые при неработающем BitTorrent-трекере.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62581
Рейтинг языков программирования TIOBE за январь 2025 года
Компания TIOBE Software опубликовала январский рейтинг популярности языков программирования. Языком года назван Python, который сохранил 1 место и обогнал другие языки по росту популярности за год (+9.3%). По сравнению с январём 2024 года выделяется смещение языка Си со 2 на 4 место, при этом язык С++ поднялся с 3 на 2 место, а язык Java с 4 на 3 место.
Значительный рост популярности зафиксирован для языка Go, который переместился с 11 на 7 место. Язык PHP при этом опустился с 7 места на 13. Рост популярности отмечен для языков: Rust (19 → 14), R (23 → 18), SQL (9 → 8), Fortran (12 → 10), Delphi/Object Pascal (13 → 11), Ruby (18 → 16). Снижение популярности наблюдается для языков: Visual Basic (8 → 9), Scratch (10 → 12), MATLAB (14 → 15), Ассемблер (15 → 17), Swift (16 → 19).
Индекс популярности TIOBE строит свои выводы на основе анализа статистики поисковых запросов в таких системах, как Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu.
В январском рейтинге PYPL, в котором используется Google Trends, лидеры за год не изменились: первое место занимает язык Python, далее следуют Java, JavaScript, С/C++ и C#. По сравнению с январём прошлого года выросла популярность языка Rust, который переместился с 11 на 9 место, а также языков Ada (16 → 15), PowerShell (18 → 17), Abap (23 → 22) и Cobol (28 → 26). Снизилась популярность Swift (9 → 11), Dart (15 → 16), Ruby (17 → 18), Visual Basic (22 → 23), Perl (26 → 27) и Haskell (27 → 28).
По данным рейтинга IEEE Spectrum лидерами остаются языки Python и Java. С 5 на 3 место поднялся язык JavaScript, с 9 на 5 язык TypeScript, с 18 на 11 язык Rust. Язык С++ сместился с 3 на 4 место, а Си - с 4 на 9 место. Рейтинг IEEE Spectrum подготовлен Институтом инженеров электротехники и электроники (IEEE) и учитывает сочетание 12 метрик, полученных от 10 различных источников (в основе метода заложена оценка результатов поиска по запросу "{название_языка} programming", анализ упоминаний в Twitter, число новых и активных репозиториев в GitHub, число вопросов в Stack Overflow, число публикаций на сайтах Reddit и Hacker News, вакансии на CareerBuilder и EEE Job Site, упоминания в цифровом архиве журнальных статей и докладов с конференций).
В рейтинге RedMonk, построенном на основе оценки популярности на GitHub и активности обсуждений на Stack Overflow, двадцатка лидеров выглядит следующим образом: JavaScript, Python, Java, PHP, C#, TypeScript, CSS, C++, Ruby, C, Swift, R, Shell, Kotlin, Scala, Objective-C, PowerShell, Rust и Dart.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62580
Haiku ограничит доступ из Великобритании из-за риска нарушения закона Online Safety Act
Александр фон Глюк (Alexander von Gluck), входящий в совет директоров некоммерческой компании Haiku Inc, курирующей разработку операционной системы Haiku, сообщил о намерении до 16 марта заблокировать доступ пользователей из Великобритании к форуму проекта и другим платформам, на которых осуществляется взаимодействие с сообществом. Решение объясняется юридическими и финансовыми рисками, возникшими из-за принятого в Великобритании закона Online Safety Act, вступающего в силу 16 марта.
Отмечается, что у проекта нет ресурсов для юридического анализа и приведения инфраструктуры к требованиям закона. Выполнение требований усложняет необходимость выполнения большого объёма бюрократических процедур, связанных с подготовкой документации, описывающей процессы и оценивающей имеющиеся риски (перечень рисков занимает 84 страницы с запутанными и неоднозначными формулировками).
Компания Haiku Inc зарегистрирована в США, а закон Online Safety Act принят в Великобритании, но является экстерриториальным, т.е. под его действие подпадают сайты, работающие за пределами Великобритании,
если считается, что они "связаны с Великобританией", т.е. ими пользуются жители Великобритании. Предполагается, что без привлечения юристов сложно корректно заполнить все документы и выполнить требования закона. Игнорирование же закона создаёт существенные риски, например, размер штрафа за зарушение закона достигает 22 млн долларов.
Для вывода проекта Haiku из области действия закона Online Safety Act решено полностью заблокировать доступ из Великобритании к площадкам для взаимодействия с сообществом, по крайней мере до тех, пор пока не будет найдено другое решение. Кроме форума блокировка вероятно будет распространена на сервисы Gerrit и Haiku Depot, в которых допускается оставление комментариев. Сайт Haiku и репозитории проекта блокироваться не будут.
Требования закона Online Safety Act связаны с модерацией контента, отправляемого пользователями, удалением содержимого, нарушающего законы Великобритании, и ограничением доступа детей к контенту для взрослых. Сайты, насчитывающие более 700 тысяч пользователей, обязаны на этапе публикации отслеживать, фильтровать и сканировать отправляемое пользователями содержимое (ссылки, тексты, изображения). Требования к остальным ограничивается необходимостью реагировать на жалобы, но дополнительно может потребоваться проведение анализа рисков, назначение ответственных и создание регламента рассмотрения жалоб.
Закон касается сайтов, имеющих значительное количество пользователей из Великобритании (что считается значительным не детализируется) или предоставляющих услуги для граждан Великобритании, при наличии рисков причинения вреда таким гражданам.
Исключение предусмотрено для сервисов, допускающих публикацию комментариев к авторским статьям и собственному контенту, но при этом не уточняется, подпадают ли под исключение площадки, допускающие публикацию ответов на другие комментарии.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62579
Выпуск набора утилит GNU Coreutils 9.6
Опубликована стабильная версия набора базовых системных утилит GNU Coreutils 9.6, в состав которого входят такие программы, как sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln, ls и т.д.
Ключевые новшества:
- В утилиту cksum добавлена опция "-a crc32b" для расчёта контрольных сумм в соответствии со спецификацией ITU V.42, используемой, например, в gzip. Добавлена оптимизация производительности с использованием инструкции pclmul. Для ускорения работы команды "cksum -a crc" задействованы SIMD-расширения AVX2, AVX512 и ARMv8, в тестах сокращающие время вычислений на 40%, 60% и 80%, соответственно.
- В утилиту ls добавлена опция "--sort=name" для явного выставления сортировки по имени файла.
- В printf добавлена поддержка представленных с стандарте POSIX:2024 индексированных аргументов в формате "%‹i›$", где '‹i›' целочисленный номер аргумента.
- В утилиту test добавлена возможность использования операторов '<' и '>' со строками (POSIX:2024).
- В утилиту timeout добавлены появившиеся в стандарте POSIX:2024 опции "-f" и "-p", являющиеся короткими вариантами опций "--foreground" и "--preserve-status".
- В утилите sort ускорены операции над файлами в псевдо-ФС, таких как /proc.
- В утилиты stat и tail добавлена поддержка типов ФС "bcachefs" и "pidfs". Для вывода типа ФС добавлена команда "stat -f -c%T". В команде "tail -f" задействован механизм inotify для ФС "bcachefs" и "pidfs".
- В утилите wc минимальный размер читаемого за раз блока увеличен с 16KiB до 256KiB. При чтении прокэшированных файлов производительность "wc -l" повышена примерно на 10%.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62577
Выпуск Cozystack 0.22, открытой PaaS-платформы на базе Kubernetes
Доступен выпуск свободной PaaS-платформы Cozystack 0.22.0, построенной на базе Kubernetes. Проект нацелен на предоставление готовой платформы для хостинг-провайдеров и фреймворка для построения частных и публичных облаков. Платформа устанавливается напрямую на серверы и охватывает все аспекты подготовки инфраструктуры для предоставления управляемых сервисов. Cozystack позволяет запускать и предоставлять кластеры Kubernetes, базы данных и виртуальные машины. Код платформы доступен на GitHub и распространяется под лицензией Apache-2.0.
В качестве базового стека технологий используется Talos Linux и Flux CD. Образы с системой, ядром и необходимыми модулями формируются заранее, и обновляются атомарно, что позволяет обойтись без таких компонентов как dkms и пакетный менеджер, и гарантировать стабильную работу. Предоставляется простой метод установки в пустом дата-центре с помощью PXE и debian-подобного установщика talos-bootstrap.
Платформа включает свободную реализацию сетевой инфраструктуры (fabric) на базе Kube-OVN, и использует Cilium для организации сервисной сети, MetalLB для анонса сервисов наружу. Хранилище реализовано на LINSTOR, где предлагается использование ZFS в качестве базового слоя для хранилища и DRBD для репликации. Имеется преднастроенный стек мониторинга на базе VictoriaMetrics и Grafana. Для запуска виртуальных машин используется технология KubeVirt, которая позволяет запускать классические виртуальные машины прямо в контейнерах Kubernetes и уже имеет все необходимые интеграции с Cluster API для запуска управляемых Kubernetes-кластеров внутри "железного" Kubernetes-кластера.
В новой версии добавлен cozystack-controller и новые сущности: Workload и WorkloadMonitor — которые позволяют следить за состоянием pod-ов, управляемых операторами, и оценивать уровень сервиса по заранее определённым правилам. Приложения в Cozystack управляются разными операторами, поэтому было решено создать единый формат для отображения статуса каждого сервиса.
Как это работает: При развёртывании приложения устанавливается и WorkloadMonitor, который следит за состоянием pod-ов по селектору. Как только под селектор попадает один из pod-ов, для него создаётся новая сущность Workload, которая отображает роль для каждого pod-а и его состояние. В статусе WorkloadMonitor можно увидеть количество существующих реплик и минимальное количество реплик, необходимое для обслуживания сервиса. Как только нагрузка (workload) становится меньше, чем значение minReplicas для WorkloadMonitor, сервис помечается неработающим (non-operational).
Для приложений, которым нельзя задать точное значение minReplicas (например, worker-ы Kubernetes могут масштабироваться автоматически), реализована возможность вообще не указывать это значение в WorkloadMonitor. В этом случае WorkloadMonitor просто будет считать общее количество запущенных экземпляров.
Такой механизм позволяет использовать любые операторы и механизмы управления pod-ами в Kubernetes и легко расширять платформу, предоставляя единый интерфейс для отображения текущего состояния сервиса.
WorkloadMonitor для сбора информации о репликах и их работоспособности добавлен в приложения Kubernetes, Postgres, Monitoring, VirtualMachine, VMInstance, Redis, etcd и SeaweedFS. Dashboard Cozystack теперь отображает количество реплик приложения и уровень сервиса для каждой группы Workload.
Другие изменения:
- Реализованы и опубликованы под лицензией Apache 2.0 клиент и сервер телеметрии. Сбор метрик для телеметрии осуществляется в соответствии с рекомендациями "LF Telemetry Data Collection and Usage Policy" и его можно отключить с помощью опции "telemetry-enabled: false" в конфигурации Cozystack. Сами данные анонимы и полностью обезличены. К следующим релизам платформы планируется собрать публичный Dashboard на основе данных телеметрии.
- Обновлён компонент cluster-autoscaller для Kubernetes, а также его настройки, которые позволяют более эффективно масштабировать кластеры, как вверх так и вниз.
- Обновлён файл MAINTAINERS, в котором перечислены участники, сопровождающие проект, и сферы их ответственности.
- В Cozystack добавлено сервисное приложение builder, позволяющее производить сборку платформы прямо в Kubernetes.
- Для СУБД VictoriaMetrics добавлена возможность указывать собственные параметры и повышены выставляемые по умолчанию ограничения.
- Для Grafana и Alerta реализован сбор метрик из баз данных.
- Добавлены алерты о состоянии виртуальных машин и postgres-кластеров.
- Для KubeVirt настроен сбор метрик и добавлен Grafana dashboard.
- В конфигурацию Cozystack добавлена опция extra-keycloak-redirect-uri-for-dashboard, позволяющая настроить дополнительные перенаправления для Keycloak.
- В VMInstance исправлена ошибка, блокирующая подключение VMdisks к виртуальным машинам.
- Обновлены Flux Operator 0.12.0, Flux Instance chart 0.12.0,
Cilium 1.16.5, Kube-OVN 1.13.2, CNPG PostgreSQL Operator 1.25.0, Talos Linux 1.9.1.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62576
Уязвимость в pam-u2f, позволяющая обойти аутентификацию на базе аппаратного токена
Разработчики проекта openSUSE выявили уязвимость (CVE-2025-23013) в PAM-модуле pam-u2f, применяемом при аутентификации через токены YubiKey,
Yubico Security Key, YubiHSM и другие FIDO-устройства, поддерживающие протокол U2F (Universal 2nd Factor). Уязвимость позволяет пользователю, имеющему непривилегированный локальный доступ к системе, в определённых конфигурациях PAM пройти аутентификацию без вставки аппаратного токена. На практике модуль pam-u2f как правило подключается для двухфакторной или беспарольной аутентификации с использованием токенов (например, для подтверждения полномочий выполнения команд через утилиты su и sudo).
Уязвимость вызвана некорректным возвращением функцией pam_sm_authenticate() значения PAM_IGNORE. Данное значение возвращается в случае ошибки выполнения вызовов gethostname(), pam_modutil_drop_priv(), pam_modutil_regain_priv() или resolve_authfile_path(), а также при проблемах выделения памяти в strdup() или calloc(). Проблема в том, что библиотека libpam, получив от PAM-модуля результат с кодом PAM_IGNORE, вернёт итоговый код PAM_SUCCESS, обозначающий успешное прохождение аутентификации, если в цепочке проверок какой-то другой PAM-модуль вернул успешный результат аутентификации.
При использовании модуля pam-u2f в связке с pam_unix для двухфакторной аутентификации, уязвимость позволяет успешно пройти аутентификацию в случае успешной проверки пароля, без подтверждения второго фактора. При выполнении беспарольной аутентификации по аппаратному токену pam-u2f может применяться в связке с PAM-модулем pam_faillock, ограничивающим число попыток аутентификации и возвращающим PAM_SUCCESS, если лимит не исчерпан.
В качестве примера атаки называется обход проверки токена при выполнении локальным пользователем привилегированных команд, используя утилиты sudo и su. Во время запуска этих команд атакующий может создать условия для возвращения модулем pam-u2f значения PAM_IGNORE, например, через исчерпание доступной памяти. Проблема устранена в версии pam-u2f 1.3.1.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62575
Обход дискового шифрования, использующего TPM2 для автоматической разблокировки
Один из сопровождающих пакеты в NixOS представил технику атаки, позволяющую получить доступ к данным на зашифрованных дисковых разделах, в конфигурациях, не требующих ввода пароля разблокировки при загрузке, благодаря размещению в TPM2 (Trusted Platform Module) информации для расшифровки. Такие конфигурации часто используются на серверах или многопользовательских рабочих станциях, на которых проблематично после каждой перезагрузки вручную вводить пароль.
При применении подобного метода шифрования дисков, расшифровка выполняется с использованием дополнительного ключа, хранимого в TPM и выдаваемого только при подтверждении исходного состояния системы. Состояние системы сохраняется в виде хэшей в регистрах PCR (Platform Configuration Register) и привязывается к цифровой подписи, которой заверен загрузчик, а также к контрольным суммам загрузчика и начального загрузочного окружения (initrd). Доступ к ключу в TPM предоставляется только когда все привязанные к нему регистры PCR находятся в том же состоянии, что и при сохранении ключа.
Подразумевается, что цепочка загрузки операционной системы верифицируется при помощи UEFI Secure Boot и доступ к ключам можно получить только из немодифицированного образа initrd. При успешной проверке диск автоматически разблокируется, но доступ к расшифрованным данным можно получить только через вход в свою учётную запись в системе. При обращении без верифицированной загрузки или при попытке замены или внесения изменений в initrd с целью перехвата ключей, цепочка доверия будет нарушена, состояние регистров PCR
изменится и TPM2 не отдаст сведения, необходимые для расшифровки.
Опубликованный метод атаки позволяет обойтись без изменения содержимого initrd в конфигурациях, не идентифицирующих шифрованные разделы LUKS. Отмечается, что включение подобной проверки разделов не описывается во всех найденных инструкциях по настройке дискового шифрования, так как идентификация раздела заметно усложняет конфигурацию (требуется привлечение дополнительного регистра PCR для проверки ключа раздела и генерация initrd с учётом его значения).
Примеры совершения атаки продемонстрированы для Fedora Linux в связке с инструментарием clevis и для NixOS в связке с systemd-cryptenroll. Для совершения атаки необходим физический доступ к компьютеру и возможность извлечения накопителя.
Метод основывается на том, что атакующий может заменить существующий корневой шифрованный раздел на собственный зашифрованный раздел, созданный с тем же UUID-идентификатором и известными атакующему ключами расшифровки. Окружение initrd передаст управление init-процессу в разделе атакующего. Так как содержимое initrd не было изменено, состояние TPM не будет нарушено и получив управление в своём окружении атакующий cможет использовать TPM для расшифровки ключа исходного дискового раздела.
Атака сводится к следующим шагам:
- Извлечение диска и проведение на другом компьютере анализа незашифрованных данных в разделе /boot. Определение информации о зашифрованном разделе и его UUID-идентификаторе из initrd-образа, находящегося в разделе /boot.
- Создание резервной копии первых 64МБ зашифрованного LUKS-раздела.
- Замена указанных 64МБ на образ с собственным корневым разделом, зашифрованным с использованием известного атакующему ключа и имеющим UUID-идентификатор как у старого раздела.
- Возвращение диска в исходный компьютер и загрузка с подменённым корневым разделом. Так как автоматическая разблокировка по ключу из TPM для подменённого раздела завершается неудачей, initrd выводит запрос для ручного ввода пароля.
- Получение из TPM исходного ключа, используя метаданные о TPM и зашифрованный токен из LUKS-заголовка старого раздела.
- Перестановка диска на компьютер атакующего, восстановление перезаписанной части LUKS-раздела из резервной копии и использование полученного исходного ключа для доступа к данным.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62574
В GCC 15 решено убрать поддержку ABI ARM64 ILP32
В кодовую базу GCC, используемую для формирования ветки GCC 15, внесено изменение, удаляющее поддержку ABI ARM64 ILP32. ILP3 напоминает субархитектуру x32 для систем x86_64 и также позволяет использовать 32-разрядные указатели и 32-разрядную модель адресации памяти, при работе процессора в 64-разрядном режиме с поддержкой 64-разрядных регистров и расширенных инструкций. Ограничением ABI ILP32 является невозможность адресации из приложения более 4 ГБ памяти.
Изначально ABI ILP32 был разработан для упрощения переноса 32-разрядных приложений на 64-разрядные процессоры AArch64, но не получил должного распространения. Поддержка ILP32 так и не была принята в ядро Linux и системную библиотеку Glibc. Отдельно развивались порты Linaro и Debian для ILP32, но они уже более пяти лет находятся в заброшенном состоянии. Из редких систем, поддерживающих ILP32, отмечена операционная система watchOS, применяемая в устройствах Apple Watch, но GCC не поддерживается для данной ОС.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62568
Обновление OpenVPN 2.6.13 с устранением проблемы с безопасностью
Опубликован выпуск пакета для создания виртуальных частных сетей OpenVPN 2.6.13, позволяющего организовать шифрованное соединение между двумя клиентскими машинами или обеспечить работу централизованного VPN-сервера для одновременной работы нескольких клиентов. В новой версии устранена проблема с безопасностью, приводящая к переполнению буфера на стороне сервера OpenVPN при получении от клиента логина или пароля, размер которых превышает значение USER_PASS_LEN. CVE-идентификатор уязвимости пока не присвоен и не ясно насколько проблема пригодна для создания рабочих эксплоитов.
Из не связанных с безопасностью изменений можно отметить:
- Реализована отправка клиентом параметра IV_PLAT_VER, содержащего информацию о релизе операционной системы, выдаваемую функцией uname(), что позволяет на серверах собирать статистику о версиях ОС, используемых клиентами.
- На системах с Linux обеспечен запуск процесса systemd-ask-password с параметром "--timeout=0" для отключения применяемого по умолчанию 90-секундного таймаута.
- Устранены утечки памяти, проявляющиеся во FreeBSD.
- При запуске с опцией "--auth-nocache" реализовано удаление из памяти параметров аутентификации для прокси, после их использования.
- В Windows-клиенте задействована функция CryptProtectMemory() для защищённого хранения в памяти прокэшированных паролей и токенов. Задействован новый API для получения версии драйвера dco-win.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62573
Релиз дистрибутива Linux Mint 22.1
Представлен релиз дистрибутива Linux Mint 22.1, продолжающий развитие ветки на пакетной базе Ubuntu 24.04 LTS. Дистрибутив полностью совместим с Ubuntu, но существенно отличается подходом к организации интерфейса пользователя и подбором используемых по умолчанию приложений. Разработчики Linux Mint предоставляют десктоп-окружение, соответствующее классическим канонам организации рабочего стола, которое является более привычным для пользователей, не принимающих новые методы построения интерфейса GNOME 3. Для загрузки доступны DVD-сборки на базе оболочек MATE (3 ГБ), Cinnamon (3 ГБ) и Xfce (3 ГБ). Ветка Linux Mint 22 отнесена к выпускам с длительным сроком поддержки (LTS), обновления для которых будут формироваться до 2029 года.
Основные изменения в Linux Mint 22.1:
- Модернизирован стек управления пакетами, связанный с пакетным менеджером APT. Вместо инструментария aptdaemon задействован собственный сервис Aptkit, также реализующий фоновый процесс и DBus-интерфейс для выполнения непривилегированными пользователями операций управления пакетами. Вместо приложений, использующих aptdaemon, таких как GDebi, synaptic и apturl, реализован новый интерфейс установки пакетов Captain, который можно вызвать из других приложений при попытке открытия файлов с расширением deb или задействовать в качестве обработчика URL "apt://pkgname".
Отмечается, что основанный на aptdaemon инструментарий устарел, не развивается основным проектом и сопровождается через накопление отдельной коллекции патчей в дистрибутивах. Замена aptdaemon позволила решить проблемы с локализацией и переводом в средствах управления пакетами; избавила дистрибутив от компонентов, оставшихся без сопровождения; упростила архитектуру; сократила трудозатраты разработчиков. Переход на Aptkit позволил реализовать в приложении Software Sources графический режим для отката на прошлые версии для пакетов, отсутствующих в репозиторих Ubuntu. В приложении Update Manager удалось улучшить поддержку Wayland и обновить код для многопоточного и многопроцессного выполнения операций.
- Реализована поддержка профилей энергопотребления, позволяющих пользователю выбрать приемлемый для себя баланс между энергопотреблением и производительностью. Доступно три режима: экономия энергии, высокая производительность и сбалансированный. В среде рабочего стола Cinnamon режим можно выбрать в секции конфигуратора "Preferences → Power Management" или через апплет в панели. В Xfce и MATE выбор режима осуществляется командой "powerprofilesctl set power-saver|performance|balanced".
- Среда рабочего стола Cinnamon обновлена до выпуска 6.4.
- Интегрирован режим ночной подсветки ("Night Light"), который меняет цветовую температуру в зависимости от времени суток и может использоваться в окружениях на базе X11 и Wayland. При работе в ночное время автоматически уменьшается интенсивность синего цвета на экране, что делает цветовую гамму более тёплой для снижения напряжения глаз и сокращения факторов возникновения бессонницы при работе перед сном.
- Предложена новая тема оформления, которая отличается использованием более тёмных цветов, выраженным контрастом, скруглением элементов интерфейса и увеличенными отступами между апплетами и панелью.
- Изменено оформление диалоговых окон. Добавлена возможность использования цветных кнопок в диалогах. Для отрисовки ключевых всплывающих диалоговых окон задействована библиотека Clutter. Переделан диалог для принудительного завершения работы приложений, показываемый в случае зависания программы и прекращения её реагирования на действия пользователя.
- Переработан внешний вид экранных индикаторов (OSD), используемых при изменении яркости и громкости медиа-кнопками, а также при переключении виртуальных рабочих столов.
- Улучшен интерфейс смены задач по Alt-tab. Добавлена опция для показа только окон, размещённых на текущем мониторе. Переделана работа со свёрнутыми окнами.
- Обновлён стиль и увеличены отступы в основном меню. Добавлена поддержка навигации по меню с использованием клавиш управления курсором на цифровой клавиатуре. Упрощена анимация при работе с меню.
- Улучшена совместимость с Wayland. Добавлена опциональная возможность установки сессионных файлов для Wayland. На собственные диалоги заменён устаревший пакет policykit-1-gnome, что позволило при использовании Wayland наладить в Cinnamon корректную работу приложений, запрашивающих права администратора.
- В менеджере приложений (Software Manager) ускорены операции установки и навигации по пакетам.
- В файловый менеджер Bulky добавлена функция удаления диакритических знаков из имён группы файлов (например, "résumé.pdf" может заменить на "resume.pdf").
- Включена генерация миниатюр для файлов с расширением ".ora" (OpenRaster).
Источник: https://www.opennet.ru/opennews/art.shtml?num=62570
Выпуск web-браузера Chrome 132
Компания Google опубликовала релиз web-браузера Chrome 132. Одновременно доступен стабильный выпуск свободного проекта Chromium, выступающего основой Chrome. Браузер Chrome отличается от Chromium использованием логотипов Google, наличием системы отправки уведомлений в случае краха, модулями для воспроизведения защищённого от копирования видеоконтента (DRM), системой автоматической установки обновлений, постоянным включением Sandbox-изоляции, поставкой ключей к Google API и передачей RLZ-параметров при поиске. Для тех, кому необходимо больше времени на обновление, отдельно поддерживается ветка Extended Stable, сопровождаемая 8 недель. Следующий выпуск Chrome 133 запланирован на 4 февраля.
Основные изменения в Chrome 132:
- Добавлена эвристика, автоматически включающая функцию "HTTPS-First", перенаправляющую HTTP-запросы на HTTPS, для пользователей, которые в своей практике обычно используют HTTPS. Если пользователь не согласен с включением "HTTPS-First", он может принудительно отключить данный режим в настройках. При активном "HTTPS-First" работа с сайтами, не поддерживающими HTTPS, выполняется через откат на HTTP, если после перенаправления не удаётся выполнить запрос по HTTPS или возникают проблемы с сертификатами. При недоступности варианта с HTTPS перед открытием сайта по HTTP выводится специальное предупреждение.
- Расширены возможности поиска при помощи сервиса Google Lens ("Поиск с объективом"), вызываемого через контекстное меню. Помимо поиска по изображениям и выделенному тексту добавлена поддержка задания вопросов на естественном языке, связанных с содержимым web-страниц и PDF-документов. Для отправки вопроса следует вызвать интерфейс поиска через Google Lens через меню и ввести вопрос в верхней части появившейся боковой панели. Расширено число языков, доступное в функции наложения перевода (переведённый текст показывается поверх исходного текста на изображении).
- Для платформы Windows предоставлена поддержка sandbox-изоляции процесса, обеспечивающего работу сетевого сервиса. Для включения изоляции добавлена опция "--enable-features=NetworkServiceSandbox". Проверить режимы изоляции можно на странице "chrome://sandbox/".
- В настройки добавлена возможность выборочной загрузки паролей и адресов, ранее сохранённых на локальной системе, в облачное хранилище, привязанное к учётной записи Google.
- В десктоп-сборках вместо настройки синхронизации между устройствами с использованием отдельной учётной записи, предоставлена возможность привязи браузеров пользователя к учётной записи Google, применяемой в таких сервисах как Gmail и Gooрle Docs. Например, при входе на сайт Gmail теперь будет предлагаться войти с этой учётной записью в Chrome для сохранения и синхронизации открытых вкладок, настроек, истории, закладок, паролей, адресов, дополнений, тем и PWA-приложений.
- Добавлена настройка "chrome://flags/#enable-user-link-capturing-pwa", при активации которой переход по ссылкам, связанным с установленным Web-приложением (PWA), приводит к открытию обычного сайта и появлению в адресной строке индикатора для переключение на использование web-приложения. До этого открытие подобных ссылок сразу приводило к переходу к web-приложению, без возможности работы со страницей как с обычным сайтом.
- Для элемента ‹dialog› реализованы события "beforetoggle" и "toggle" (ToggleEvent), позволяющее определять моменты открытия и закрытия диалога, и вызывать свои обработчики на стадии до начала показа/закрытия диалога или когда диалог уже показан или закрыт. При вызове метода showModal или show события ToggleEvent генерируются со значением "open" в параметре newState, а при закрытии диалога со значением "closed".
- Обеспечена генерация исключения InvalidStateError при вызове методов showPopover() и showModal() для элементов c атрибутом "popover" или элементов "dialog", находящихся в неактивном документе. Ранее подобный вызов молча игнорировался.
- В дополнение к возможности захвата видео и произвольной области во вкладке, добавлен API Element Capture для захвата отдельных HTML-элементов. Возможность может быть полезной в ситуации, когда нужно захватить элементы, перекрывающие друг друга. Например, в web-приложении для проведения видеоконференций, позволяющем встраивать другие web-приложения через iframe, новый API может потребоваться для захвата содержимого iframe в форме видео и передачи его другим участникам.
- Добавлен метод getAllScreensMedia() для захвата содержимого всех экранов, подключённых к устройству.
- В версии для Android и компонентах на базе WebView разрешено использовать API File System Access, позволяющий web-приложениям читать и записывать данные напрямую в файлы и каталоги на устройстве пользователя. Ранее данный API был доступен только в desktop-сборках. Для вызова диалогов выбора файлов можно использовать методы showOpenFilePicker() и showSaveFilePicker().
- В CSS-свойстве "a href="https://developer.mozilla.org/docs/Web/CSS/writing-mode">writing-mode", позволяющем настроить позиционирование текста в формах, реализована поддержка ключевых слов sideways-rl и sideways-lr, полезных для организации вертикального вывода традиционного текста, в котором не используются иероглифы.
- В CSS-свойствах "inset" и "margin" разрешено использование значения anchor-size().
- Возвращена возможность активации областей прокрутки при навигации с использованием клавиатуры, позволяющая пользователям без мыши вначале переключиться в нужную область клавишей Tab, а затем прокрутить её содержимое стрелками управления курсором. Ранее данная возможность была отключена из-за регрессий в средствах для людей с ограниченными возможностями, которые удалось устранить в этой версии.
- Добавлены методы Request.bytes() и Response.bytes(), возвращающие promise для чтения с использованием объекта Uint8Array.
- Обеспечено игнорирование HTTP-заголовка Strict-Transport-Security в ответах с сервера, размещённого на локальной системе и принимающего запросы через localhost.
- В API WebGPU реализована возможность смешивания текстур с представлением цвета в 32-разрядных форматах с плавающей точкой (r32float, rg32float и rgba32float). В объект GPUDevice добавлен атрибут adapterInfo.
- Расширены возможности инструментов для web-разработчиков. Добавлена поддержка использования AI-ассистента Gemini для упрощения отладки и уточнения вопросов, связанных с сетевыми запросами, исходными файлами и трассировкой производительности. Реализовано сохранение истории чата с
AI-ассистентом.
В панели Sensors реализована симуляция различной интенсивности нагрузки на CPU (Nominal, Fair, Serious, Critical). В панели для оценки потребления памяти добавлена поддержка группировки JavaScript-объектов по имени. Изменено оформление конфигуратора. Во вкладке Computed обеспечено обновление вычисляемых значений в режиме реального времени (полезно для отслеживания изменений значений в процессе анимации). В секции "Application > Storage" добавлена возможность инспектирования хранилищ браузерных дополнений.
Кроме нововведений и исправления ошибок в новой версии устранены 16 уязвимостей. Многие из уязвимостей выявлены в результате автоматизированного тестирования инструментами AddressSanitizer, MemorySanitizer, Control Flow Integrity, LibFuzzer и AFL. Пяти проблемам присвоен высокий уровень опасности. Критических проблем, которые позволяют обойти все уровни защиты браузера и выполнить код в системе за пределами sandbox-окружения, не выявлено. В рамках программы по выплате денежного вознаграждения за обнаружение уязвимостей для текущего релиза компания Google выплатила 13 премий на сумму 37 тысяч долларов США (по две премии в $7000 и $5000, одна премия $3000, три премии $2000 и четыре премии $1000). Размер одного вознаграждения пока не определён.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62562
Превращение сборки Fedora c KDE в базовую редакцию дистрибутива
Разработчики проекта Fedora опубликовали план поставки сборки со средой рабочего стола KDE в форме базовой редакции дистрибутива, идентичной по уровню поддержки со сборкой Fedora Workstation, поставляемой с GNOME. Ранее изменение статуса сборки Fedora с KDE утвердил управляющий совет проекта Fedora. Теперь реализация новой первичной редакции в выпуске Fedora 42 будет рассмотрена комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки дистрибутива.
Сборка Fedora KDE Plasma Desktop Edition начнёт преподноситься на равных со сборкой на базе GNOME, получит аналогичный уровень маркетингового продвижения и будет иметь такое же представление на сайте fedoraproject.org. Специфичные для KDE серьёзные проблемы будут рассматриваться как блокирующие релиз, так же, как ранее блокировали релиз серьёзные проблемы в GNOME.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62567
Live-сборки Fedora намерены перевести со SquashFS на EROFS
В выпуске Fedora 42, намеченном на конец апреля, планируется перевести все Live-сборки дистрибутива со SquashFS на файловую систему EROFS, поддержка которой в прошлом году была реализована в инструментарии для создания загрузочных образов Dracut 103. Предложение пока не утверждено комитетом FESCo (Fedora Engineering Steering Committee), отвечающим за техническую часть разработки дистрибутива Fedora.
В качестве причин перехода упоминается более активная разработка EROFS (последний выпуск инструментария SquashFS был весной 2023 года) и наличие в EROFS расширенных возможностей, которые могут быть задействованы в будущем. На EROFS намерены перевести все сборки, использующие системный образ в режиме только для чтения, например, Live-сборки
с KDE, Xfce, Budgie, LXQt, MiracleWM и COSMIC, а также редакции Fedora KDE Plasma Mobile и Fedora CoreOS Live.
Файловые системы SquashFS и EROFS предназначены для работы в режиме "только для чтения" и обеспечивают компактное представление метаданных и хранение данных в сжатом виде. ФС EROFS (Extendable Read-Only File System) создана компанией Huawei и сосредоточена на достижении максимальной производительности. В EROFS применяется отличающийся от других ФС метод сжатия данных, суть которого в использовании результирующих сжатых блоки фиксированного размера (в других ФС блоки фиксированы до сжатия, а после сжатия размер получается разный). При случайном доступе к данным EROFS в разы обгоняет Ext4 (при уровне сжатия 4 на Flash ФС EROFS оказалась быстрее почти в три раза, а не жёстком диске в 6 раз).
Источник: https://www.opennet.ru/opennews/art.shtml?num=62566
Обновление редактора кода CudaText 1.220.6
Опубликован выпуск кроссплатформенного свободного редактора кода CudaText 1.220.6, написанного с использованием Free Pascal и Lazarus. Редактор поддерживает расширения на Python, и имеет ряд преимуществ над Sublime Text. Присутствуют некоторые возможности интегрированной среды разработки, реализованные в виде плагинов. Для программистов подготовлено более 300 синтаксических лексеров. Код распространяется под лицензией MPL 2.0. Сборки доступны для платформ Linux, Windows, macOS, FreeBSD, OpenBSD, NetBSD, DragonflyBSD, Solaris и Haiku.
Среди новых возможностей, реализованных после прошлого анонса:
- Новые плагины в Plugins Manager:
- HotSpots: панель для перехода ко всем существующим закладкам документов, и к изменениям в Git.
- Scope Description: в коде на C/C++ показывает первую строку заголовка функции около конца функции.
- Font Preview: предпросмотр файлов шрифтов в веб-браузере.
- Clipboard Catcher: сохраняет все изменения в буфере обмена по таймеру.
- Codeium: ИИ-функции для автодополнения.
- Markdown Image: показывает картинки, на которые ссылается текущий Markdown-документ.
- Новые лексеры:
- PureBasic
- Ring
- Ziggy
- Common Lisp
- PureScript
- Gleam
- foobar2000 title formatting
- Pkl
- Roc
- ReScript
- Vimscript
- Heta
- Structured Text
- Todo.txt (www.todotxt.org)
- SystemTap
- EdgeQL-ESDL
- Mojo
- Pixilang
- MDX
Источник: https://www.opennet.ru/opennews/art.shtml?num=62563
Обновление Git с устранением уязвимостей
Опубликованы корректирующие выпуски распределённой системы управления исходным кодом Git 2.48.1, 2.41.3, 2.42.4, 2.43.6, 2.44.3,
2.45.3, 2.46.3 и v2.47.2, в которых устранены две уязвимости:
- CVE-2024-50349 - возможность подмены информации в интерактивном запросе пароля к репозитирию. Проблема вызвана отсутствием должной проверки имени хоста, в котором допускалось кодирование символов в формате %xx (URL Encoding). Атакующий мог использовать процентное кодирование для добавления в имя хоста escape-последовательностей, манипулирующих выводом на терминал.
Таким способом, можно заменить текст приглашения аутентификации и создать у пользователя ощущение обращения к другому репозиторию, чтобы при обращении к репозиторию атакующего пользователь ввёл логин и пароль от другого хоста. Атака может быть совершена при выполнении рекурсивного клонирования субмодулей командой "git clone --recurse-submodules", при котором один из субмодулей может запросить пароль от другого хоста, но ввод будет отправлен на хост с репозиторием атакующего.
- CVE-2024-52006 - в реализации протокола "credential helper", применяемого для передачи учётных данных при обращения к репозиторям c ограниченным доступом, выявлена недоработка, позволяющая подставить в данные символ возврата каретки через указание специально оформленного URL. Так как протокол манипулирует построчными данными, добавление возврата каретки может использоваться для разделения блоков данных и организации передачи пароля не на тот сервер. Возможность совершения атаки зависит от интерпретации символа возврата каретки в качестве разделителя строки в различных реализациях протокола "credential helper". Например, проблеме подвержен Git Credential Manager, написанный на C#/.NET.
Пользователям, не имеющим возможность обновить Git, рекомендуется воздержаться от обращения к непроверенным внешним репозиториям при помощи команды "git clone" с флагом "--recurse-submodules", а также исключить использование обработчиков учётных данных при клонировании публичных репозиториев. Помимо самого Git исправления для блокирования данных уязвимостей выпущены для GitHub Desktop (CVE-2025-23040), Git LFS (CVE-2024-53263) и Git Credential Manager (CVE-2024-50338).
Источник: https://www.opennet.ru/opennews/art.shtml?num=62561
Музыкальный проигрыватель Decibels принят в основной состав GNOME
Разработчики проекта GNOME приняли минималистичный музыкальный проигрыватель Decibels в основной состав среды рабочего стола GNOME. Decibels начнёт поставляться в весеннем выпуске GNOME 48 под именем "Audio Player". В прошлом году проигрыватель уже был принят в базовую поставку дистрибутива Endless OS, а также был включён по умолчанию в GNOME-редакции дистрибутива для смартфонов postmarketOS. Код Decibels написан на языке TypeScript с использованием JavaScript-обвязок над GStreamer, Libadwaita, Gio, GObject и GTK4, и распространяется под лицензией AGPLv3. Готовые пакеты сформированы в формате Flatpak.
Программа отличается очень простым интерфейсом, оптимизированным для воспроизведения отдельных звуковых файлов при попытке их открытия в других приложениях, например, в файловом менеджере или почтовом клиенте. В окне визуализируется форма звуковой волны, имеется ползунок для быстрой смены позиции, переключатель скорости воспроизвения, регулятор громкости и кнопки для быстрой перемотки на 5 и 10 секунд вперёд и назад. Поддерживаются тёмный и светлый режимы оформления. Интерфейс универсальный и адаптируется как для крупных экранов ПК и ноутбуков, так и для узких сенсорных экранов смартфонов.
Источник: https://www.opennet.ru/opennews/art.shtml?num=62560
В готовящемся в релизу ядре Linux 6.13 выявлен сбой, вызванный кодом сотрудника Microsoft
Линус Торвальдс намеревался опубликовать релиз ядра Linux 6.13 в это воскресенье, но скорее всего тестирование ветки 6.13 будет продлено на неделю из-за проблем со стабильностью в изменениях, подготовленных сотрудником Microsoft и принятых в ветку 6.13 в ноябре. Дополнительно отмечается, что патч, ставший причиной сбоя, был подан нестандартно - но был принят, хотя не получил ни одного подтверждения (ACK) от мэйнтайнеров архитектуры x86, что является нарушением общепринятых практик.
Патч добавлял возможность использования больших страниц памяти в режиме ROX (Read Only Execute) при выделении памяти, предназначенной для размещения исполняемого кода. ROX позволяет использовать память с исполняемым кодом в режиме только для чтения, что усложняет эксплуатацию некоторых уязвимостей. В ядре 6.13 для исполняемого кода модулей на системах x86_64 по умолчанию было включено использование кэша больших исполняемых страниц памяти, отражённых как ROX. Изменение решало проблему с маппингом в режиме ROX страниц для ещё полностью не сформированного исполняемого кода и позволяло обойтись без временного репаминга ROX-страниц в режим записи до завершения подготовки модулей ядра к работе.
На финальном этапе тестирования ядра 6.13 инженер из компании Intel выявил сбой, не позволяющий ядру корректно выйти из спящего режима на некоторых ноутбуках с процессорами Intel (например, с CPU на базе микроархитектуры Alderlake). Сбой проявлялся при сборке ядра компилятором Clang с включённым режимом защиты CFI (Control Flow Integrity), блокирующим нарушения нормального порядка выполнения (control flow) в результате применения эксплоитов, изменяющих хранимые в памяти указатели на функции. В качестве временного решения мэйнтейнеры из компаний Intel и AMD, отвечающие за архитектуру x86, предложили отключить использование EXECMEM_ROX в ядре 6.13, до того как буде подготовлен и протестирован полноценный патч, решающий проблему (первый вариант исправления не решил проблему).
Источник: https://www.opennet.ru/opennews/art.shtml?num=62555