Наиболее важные изменения:
- Движок Wine Mono с реализацией платформы .NET обновлён до выпуска 9.0.0.
- Улучшена поддержка системного лотка.
- На платформах ARM улучшена обработка исключений.
- При сборке задействован макрос YEAR2038 для использования 64-разрядного типа time_t.
- В драйвере winewayland.drv улучшена работа с курсором.
- Закрыты отчёты об ошибках, связанные с работой игр: Elite Dangerous, Epic Games Launcher 15.21.0, LANCommander, Kodu.
- Закрыты отчёты об ошибках, связанные с работой приложений: Quick3270 5.21, digikam, Dolphin Emulator, Windows Sysinternals Process Explorer 17.05, Microsoft Webview 2 installer.
Кроме того, опубликован релиз Android-приложения Winlator 5.0, предоставляющего обвязку над Wine и эмуляторами Box86/Box64 для выполнения Windows-приложений на платформе Android. Winlator разворачивает Linux-окружений на базе Ubuntu с Mesa3D, DXVK, D8VK и CNC DDraw, в котором при помощи эмулятора и Wine на ARM-устройствах с Android выполняются Windows-приложения, собранные для архитектуры x86. В новой версии улучшена работа менеджера задач, повышена производительность, добавлена поддержка смены тем оформления и улучшена совместимость с XInput.
Также можно отметить публикацию в списке рассылки ядра Linux драйвера ntsync, реализующего символьное устройство /dev/ntsync и набор примитивов для синхронизации, применяемых в ядре Windows NT. Реализация подобных примитивов на уровне ядра позволяет существенно поднять производительность Windows-игр, запускаемых при помощи Wine. Например, при использовании драйвера ntsync по сравнению с реализацией примитивов синхронизации NT в пространстве пользователя максимальный FPS в игре Dirt 3 увеличился на 678%, в игре Resident Evil 2 — на 196%, Tiny Tina’s Wonderlands — на 177%, Lara Croft: Temple of Osiris — на 131%, Call of Juarez — на 125%,
The Crew — на 96%, Forza Horizon 5 — на 48%, Anger Foot — на 43%.
Значительный прирост производительности достигается благодаря избавлению от накладных расходов, связанных с применением RPC в пространстве пользователя. Создание отдельного драйвера для ядра Linux объясняется проблематичностью корректной реализации API синхронизации NT поверх существующих примитивов в ядре, например, операция NtPulseEvent() и режим «wait-for-all» в NtWaitForMultipleObjects() требуют прямого управления очередью ожидания. Патчи с драйвером ntsync пока имеют статус RFC, т.е. выставлены для обсуждения и рецензирования сообществом, но пока не претендуют для принятия в основной состав ядра Linux.
Источник: http://www.opennet.ru/opennews/art.shtml?num=60583