Wine 11.5 добавляет поддержку Syscall User Dispatch на Linux

2026-03-21 53 комментарии
Реализация NTDLL теперь использует механизм SUD для перехвата нативных Windows-вызовов в пространство пользователя. Устранены падения в Red Dead Redemption 2 и Detroit: Become Human

Разработчики 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. Бинарные пакеты для различных дистрибутивов ожидаются в ближайшее время.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте