Wine 8.0: что «выросло» в новой версии? Возможности и совместимость с ПО
На Хабре публиковалась новость о Wine 8.0, новый релиз был представлен спустя целый год разработки и трех десятков тестовых версий для «обкатки». Наконец, несколько дней назад разработчики представили стабильный релиз Wine 8.0. Работа действительно очень объемная — команда внесла почти 9 000 изменений.
В новой версии стабильно работает множество различного виндового софта. По словам разработчиков, это 5266 программ, но, конечно, на самом деле их может быть значительно выше, особенно если учитывать софт, который работает с проблемами, но все же работает. Давайте посмотрим на ключевые изменения нового релиза и того, что он может предложить пользователям.
Главное то, что как раз в восьмой версии завершена работа по переводу модулей Wine в формат PE. Продолжается работа по оптимизации WoW64 для запуска 32-разрядных программ в 64-разряном окружении. Также введена реализация Print Processor, добавлена поддержка эффектов в Direct2D. Плюс ко всему, появился компилятор шейдеров для языка HLSL в Direct 3D, значительно улучшена поддержка игровых контроллеров, добавлена поддержка протокола OCSP.
Но это все — глобально, теперь давайте поговорим о более конкретных подробностях нового обновления.
Модули формата PE
- Об этом кратко сказано выше, но это реально важное нововведение, подробности которого стоит раскрыть. Так, спустя целых 4 года активной работы всей команды удалось перевести DLL-библиотеки на использование формата исполняемых файлов PE. Зачем это нужно? Такой формат дает возможность использовать отладчики Windows. Есть и еще один плюс — решение проблем с поддержкой разных схем защиты от копирования. Они работают путем сверки идентичности системных модулей на диске и в памяти. Кроме того, удалось решить проблемы с работой 32-разрядных приложений на 64-разряных хостах и x86-приложений на ARM-системах. Следующий шаг разработчиков — перевод модулей на интерфейс системны вызовов NT.
- В Winelib-приложениях оставлена возможность работы со смешанными сборками Windows/Unix библиотек в формате ELF (.dll.so). При этом эти приложения не смогут поддерживать функционалость без 32-разрядны библиотек, которая используется посредством интерфейса вызовов NT, такую как WoW64.
- А еще удалось реализовать диспетчер системны вызовов, который используется для трансляций обращений из PE в Unix-библиотеки с целью снижения накладны расходов при выполнении полного системного вызова NT.
Графическая подсистема
Здесь все круто:
- Удалось преобразовать графические драйверы для выполнения на Unix-уровне системных вызовов и обращения к драйверам через библиотеку Win32u.
- Добавлена архитектура обработчиков вывода на печать.
- Добавлена поддержка эффектов в API Direct2D.
- Добавлена возможность записи и воспроизведения списков команд в API Direct2D.
- Добавлена поддержка спецификации Vulkan 1.3.237.
WoW64
Прослойки WoW64 теперь представлены для всех Unix-библиотек, они дают возможность 32-разрядным модулям в формате PE обращаться к 64-разрядным Unix-библиотекам. Сделано это затем, что после ликвидации прямых вызовов PE/Unix даст возможность выполнения 32-разрядных Windows-приложений без установки 32-разрядных Unix-библиотек.
Нет 32-разрядного загрузчика, но в Wine обеспечивается запуск 32-разрядных приложений. Это делается в новом режиме WoW64, который реализован таким образом, что внутри 64-разрядного процесса запускается 32-разрядный код. Режим этот включается при сборке Wine с опцией '--enable-archs'. Правда, его разработка не завершена, так что команда проекта призывает не использовать его повсеместно.
Сеть
- Об этом разработчики тоже не забыли, добавив и изменив многое:
- Добавлена поддержка протокола OCSP (Online Certificate Status Protocol). Он применяется для проверки отозванных сертификатов.
- Значительно расширен спектр возможностей EcmaScript. Они доступны в режиме соответствия стандартам JavaScript.
- И еще оно — в MSHTML появилась поддержка API Web Storage.
Direct3D
- Здесь реализован интерфейс Thread Pump, который появился в D3DX 10.
- В эффектах Direct3D 10 добавлена поддержка многих новых выражений.
- Появился новый компилятор шейдеров для языка HLSL (High-Level Shader Language). Он реализован на базе библиотеки vkd3d-shader.
Что со звуком?
- Здесь тоже много всего появилось и обновилось:
- Разработчики добавили фильтр для чтения потокового звука и видео в формате ASF (Advanced Systems Format).
- При помощи фреймворка Gstreamer реализована поддержка фильтров для декодирования звука в формате MPEG-1.
- Вместо библиотеки-прослойки OpenAL32.dll используется родная Windows-библиотека OpenAL32.dll, поставляемая с приложениями.
- Появилась возможность управления скоростью передачи данных.
- Добавлена реализация API Writer Encoding.
И, конечно, устройства ввода
- Оптимизирована поддержка горячего подключения игровых контроллеров.
- Появилась более совершенная реализация кода для определения игровых рулей, которая построена на базе библиотеки SDL.
- Оптимизирована поддержка виброотклика (Force feedback) при использовании игровых рулей.
- Изменено оформление панели управления джойстиком.
- Также появился WinRT-модуль Windows.Gaming.Input с реализацией программного интерфейса для доступа к геймпадам, джойстикам и игровым рулям.
Возможно, эти тексты тоже вас заинтересуют:→ Нужны ли изменения в работе команды? Рассчитываем ответ по формуле Глейчера
→ Чем заняться в 2023? Идеи для пет-проектов и подборка материалов по профессиональному развитию
→ Гиперскейлинг в 2023 году: что мы делали, чтобы поддержать бизнес клиентов
Немного о встроенных приложениях
- Все они теперь переведены на работу с библиотекой Common Controls 6, с поддержкой тем оформления и отрисовки с учётом экранов c высокой плотностью пикселей.
- Появилась поддержка типа QWORD в утилитах для работы с реестром.
- Notepad получил строку состояния с данными о позиции курсора и функцию Goto Line для перехода на указанный номер строки.
Что еще?
- Разработчики обновили версии встроенных библиотек Faudio 22.11, LCMS2 2.14, LibJPEG 9e, LibMPG123 1.31.1, LibPng 1.6.39, LibTiff 4.4.0, LibXml2 2.10.3, LibXslt 1.1.37, Zlib 1.2.13.
- Движок Wine Mono обновлен до выпуска 7.4
- Добавлена начальная версия API UI Automation.
- Более не используется библиотека OpenAL.
Собственно, на этом все. Если вы уже успели поработать с новым релизом — расскажите, пожалуйста, в комментариях, как он вам. Возможно, возникли какие-то проблемы? Если да, то насколько критичны и как их можно решить, если это вообще возможно?