Разработчики Wine выпустили версию 11.5 — пятое обновление в ветке 11.x. Ключевое нововведение: реализация NTDLL теперь использует механизм Syscall User Dispatch (SUD) для обработки нативных Windows-вызовов на Linux. Параллельно в систему сборки добавлена поддержка C++, в комплект добавлены библиотеки ICU (International Components for Unicode), а среди закрытых багов — падения в Red Dead Redemption 2 и Detroit: Become Human. Всего устранено 22 ошибки.
Поддержка Syscall User Dispatch в NTDLL
Некоторые современные Windows-игры и приложения — особенно те, что применяют защиту от копирования или античит-системы — выполняют системные вызовы напрямую, минуя Windows API. При запуске через Wine эти вызовы уходили прямо в ядро Linux, которое не знало, что с ними делать: в итоге приложение аварийно завершалось.
Syscall User Dispatch — функция ядра Linux, появившаяся в версии 5.11 в 2021 году специально с прицелом на Wine и Proton, — решает эту проблему. Механизм перехватывает нестандартные системные вызовы и возвращает их в пространство пользователя через сигнал SIGSYS, где слой совместимости может их обработать. Управление переключением режимов происходит через переменную в памяти процесса — без лишних обращений к ядру, что даёт выигрыш в скорости по сравнению с альтернативными подходами.
Вместе с тем SUD не является механизмом изоляции системных вызовов и не должен рассматриваться как средство безопасности: вредоносное приложение способно обойти фильтрацию, перейдя в разрешённую область диспетчера. Требования к ядру Linux 5.11+ на сегодня выполняются большинством актуальных дистрибутивов.
Syscall User Dispatch — механизм ядра Linux 5.11+, позволяющий перенаправлять нестандартные системные вызовы обратно в пространство пользователя через сигнал SIGSYS. Разработан Collabora по заказу Valve для поддержки Wine и Proton.
C++ в системе сборки и встроенные ICU
Система сборки Wine получила поддержку C++, что расширяет возможности разработки отдельных компонентов проекта. Отдельно в дистрибутив добавлены встроенные библиотеки ICU — стандартный набор инструментов для работы с текстом и локализацией в Unicode-приложениях. Поставка ICU в комплекте снижает зависимость от версий, установленных в системе, и устраняет потенциальные несовместимости, которые раньше могли по-разному проявляться на разных дистрибутивах.
Игровые сбои и прикладные исправления
Два наиболее заметных игровых бага связаны с той же проблемой прямых системных вызовов: в Red Dead Redemption 2 и Detroit: Become Human это приводило к падению при запуске. Оба случая закрыты в 11.5.
Среди прикладных исправлений — улучшение стабильности Evernote, Clip Studio Paint и приложений на платформе .NET. Для программ на VBScript устранён ряд проблем совместимости, из-за которых часть скриптовых сценариев выполнялась некорректно.
Дополнительно исправлена регрессия производительности в функциях работы со временем, улучшена обработка форматов растровых изображений, обновлены криптографические функции с поддержкой схемы дополнения RSA-OAEP. Также закрыты проблемы со шрифтами, диалогами открытия файлов и обработкой сертификатов.
ICU (International Components for Unicode) — кросс-платформенная библиотека, обеспечивающая поддержку Unicode, работу с локалями, сортировку строк и форматирование чисел и дат в соответствии со стандартами Unicode Consortium.
Официальный сайт проекта. Исходный код Wine 11.5 доступен на странице GitLab. Бинарные пакеты для различных дистрибутивов ожидаются в ближайшее время.
Linux: обзоры и обновления
• Wine 11.5 добавляет поддержку Syscall User Dispatch на Linux
• Debian 2.1, Eazel, Xandros и MkLinux: провалы, создавшие современный Linux
• Steam Beta для Linux получил экспериментальный клиент SteamRT3 – запуск в контейнере Steam Runtime и переход на 64-битную версию
• SteamOS 3.8.0 Preview доступна с поддержкой Steam Machine – крупное обновление с KDE Plasma 6.4, Wayland по умолчанию и улучшенной поддержкой портативных ПК на Intel и AMD
• Релиз GE-Proton 10-33 – исправления для VR-игр, запускаемых вне Steam, и улучшения совместимости
• Файловая система Linux: ключевые каталоги, команды навигации и права доступа