разработчики выпустили Wine 11.19 - новую версию ветки разработки слоя совместимости для запуска Windows-приложений и игр в Linux, macOS и других Unix-подобных системах. В обновление вошли кэширование DNS-запросов, таблицы символов Unicode 18.0.0, поддержка вертикального текста в GDI+ и улучшения синтаксического анализатора VBScript. Разработчики также закрыли 23 отчёта об ошибках в играх, приложениях и компонентах Wine. Исходный код уже опубликован; готовые пакеты для дистрибутивов будут доступны через соответствующие каналы загрузки.
DNS-кэш и устранение задержки запуска
В компоненте dnsapi появился кэш DNS-запросов. Он позволяет повторно использовать полученные результаты при обращении к тем же доменным именам. Кроме того, функция DnsQuery_UTF8() получила поддержку файла hosts, в котором можно локально задавать соответствия имён узлов и IP-адресов.
DNS-кэш – временное хранилище результатов DNS-запросов. Записи имеют срок действия TTL: пока он не истёк, подходящий ответ можно получить из кэша без нового обращения к DNS-серверу.
Отдельное исправление касается wineboot. В некоторых ситуациях этот компонент задерживал запуск Wine примерно на пять секунд как в Linux, так и в macOS. Разработчики устранили задержку, отказавшись от обращения к multicast DNS при определении канонического имени узла.
Unicode 18.0, вертикальный текст и VBScript
Разработчики обновили таблицы символов до Unicode 18.0.0. В реализации GDI+ добавили поддержку вертикального текста: изменения охватывают его отрисовку, измерение строк и диапазонов символов, а также добавление текста в графический контур.
В синтаксическом анализаторе VBScript исправили обработку ключевых слов, имён массивов и повторных объявлений. При переполнении шестнадцатеричных и восьмеричных литералов теперь выдаётся синтаксическая ошибка. Команда Erase реализована как встроенная процедура.
Обновление продолжает ветку разработки после Wine 11.18. Полный список изменений Wine 11.19 опубликован в официальной рассылке проекта.
Исправления для игр
- Euro Truck Simulator 2: устранена ошибка запуска при использовании рендерера OpenGL вместе с бэкендом EGL в Wine.
- Desperados 2: Cooper's Revenge: исправлено аварийное завершение при включённых анимированных тенях на видеокартах NVIDIA в X11 или XWayland.
- Final Fantasy XI Online: устранена повторно возникшая проблема с активацией указателя мыши в неподходящие моменты.
- Zombie Army 4: Dead War: исправлена утечка памяти, возникавшая при запуске лаунчера игры.
- Hard Truck Apocalypse: устранены зависание и переполнение стека при использовании встроенных библиотек Wine msvcr71 и msvcp71.
- Evolution: The Game of Intelligent Life: исправлена ошибка запуска демонстрационной версии.
Исправления в приложениях и инструментах разработки
- ArcGIS Pro: устранено аварийное завершение при запуске.
- Paint.NET 5.2, сборка 9739: исправлен некорректный размер окон инструментов.
- Блокнот Wine: устранён сбой при использовании команды «Заменить всё».
- BOINC: исправлено нарушенное отображение диалогового окна проекта.
- Command Post: устранена ошибка загрузки приложения.
- QuickTime 2: исправлено аварийное завершение winevdm при запуске программы.
- Time clock SBE 1.2 и 2.2: исправлена некорректная работа в Ubuntu 10.04 LTS. Эта версия системы указана в исходном отчёте об ошибке.
- MSYS2: устранена ошибка неожиданного завершения процесса, созданного через fork; сообщение содержало код выхода 0xE0000269 и errno 11.
- msvc-wine: исправлена регрессия, которая вызывала зависание или взаимную блокировку во время сборки.
Исправления в компонентах Wine
- .NET Framework 4.8: исправлено округление значений Decimal через Math.Round. В затронутых случаях результат всегда округлялся вверх, даже когда требовалось округление вниз.
- XInput: реализована обработка отключённых контроллеров, которую ранее компонент не поддерживал.
- Управление окнами: исправлена проблема переключения фокуса между окном X и окном Wine.
- OpenCL: устранены ошибки компиляции файла dlls/opencl/unix_thunks.c.
- Выделение памяти: исправлено переполнение в _aligned_malloc при запросе размера, близкого к SIZE_MAX. Ранее функция могла возвращать ненулевой указатель на блок меньшего размера, чем запрашивалось.
- Криптографический компонент rsaenh: исправлена обработка CryptSetHashParam(HP_HMAC_INFO) с CALG_SHA_256 в PROV_RSA_FULL. Функция сообщала об успехе, но оставляла хеш неинициализированным, а следующий вызов CryptHashData() приводил к сбою. Ошибка затрагивала Aniimo, идентификатор игры в Steam - 4126040.
- GDI+: устранено чтение за границами массива в GdipWidenPath при использовании пера DashStyleCustom без заданных штрихов.
Доступность Wine 11.19
Wine 11.19 относится к ветке разработки. В анонсе опубликована ссылка на архив исходного кода wine-11.19.tar.xz, а готовые пакеты для разных дистрибутивов заявлены к выпуску через соответствующие страницы загрузки. Единую дату их появления разработчики не указали.
Официальный анонс также доступен на WineHQ.
Вывод
Wine 11.19 представляет интерес для пользователей, которые сталкивались с перечисленными сбоями запуска, отображения окон и управления в играх. Исправления привязаны к конкретным приложениям и условиям, поэтому их практическое значение зависит от используемой конфигурации. Устранение задержки wineboot отдельно поможет в тех случаях, когда инициализация Wine занимала лишние пять секунд.