Wine 8.0: что «выросло» в новой версии? Возможности и совместимость с ПО

roob4sz0vpjhetzsc9lzgoaezko.jpeg


На Хабре публиковалась новость о Wine 8.0, новый релиз был представлен спустя целый год разработки и трех десятков тестовых версий для «обкатки». Наконец, несколько дней назад разработчики представили стабильный релиз Wine 8.0. Работа действительно очень объемная — команда внесла почти 9 000 изменений.

В новой версии стабильно работает множество различного виндового софта. По словам разработчиков, это 5266 программ, но, конечно, на самом деле их может быть значительно выше, особенно если учитывать софт, который работает с проблемами, но все же работает. Давайте посмотрим на ключевые изменения нового релиза и того, что он может предложить пользователям.
Главное то, что как раз в восьмой версии завершена работа по переводу модулей Wine в формат PE. Продолжается работа по оптимизации WoW64 для запуска 32-разрядных программ в 64-разряном окружении. Также введена реализация Print Processor, добавлена поддержка эффектов в Direct2D. Плюс ко всему, появился компилятор шейдеров для языка HLSL в Direct 3D, значительно улучшена поддержка игровых контроллеров, добавлена поддержка протокола OCSP.

Но это все — глобально, теперь давайте поговорим о более конкретных подробностях нового обновления.

0a8_d7sldtu1r4s7pkufgzlkp7k.jpeg


Модули формата PE


  • Об этом кратко сказано выше, но это реально важное нововведение, подробности которого стоит раскрыть. Так, спустя целых 4 года активной работы всей команды удалось перевести DLL-библиотеки на использование формата исполняемых файлов PE. Зачем это нужно? Такой формат дает возможность использовать отладчики Windows. Есть и еще один плюс — решение проблем с поддержкой разных схем защиты от копирования. Они работают путем сверки идентичности системных модулей на диске и в памяти. Кроме того, удалось решить проблемы с работой 32-разрядных приложений на 64-разряных хостах и x86-приложений на ARM-системах. Следующий шаг разработчиков — перевод модулей на интерфейс системны вызовов NT.
  • В Winelib-приложениях оставлена возможность работы со смешанными сборками Windows/Unix библиотек в формате ELF (.dll.so). При этом эти приложения не смогут поддерживать функционалость без 32-разрядны библиотек, которая используется посредством интерфейса вызовов NT, такую как WoW64.
  • А еще удалось реализовать диспетчер системны вызовов, который используется для трансляций обращений из PE в Unix-библиотеки с целью снижения накладны расходов при выполнении полного системного вызова NT.


Графическая подсистема


rdjchnubxpsrco4df8dx4eef9km.png


Здесь все круто:

  • Удалось преобразовать графические драйверы для выполнения на 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'. Правда, его разработка не завершена, так что команда проекта призывает не использовать его повсеместно.

b4pl8wf_sjw13ctzh8oms7lp3dk.png


Сеть


  • Об этом разработчики тоже не забыли, добавив и изменив многое:
  • Добавлена поддержка протокола OCSP (Online Certificate Status Protocol). Он применяется для проверки отозванных сертификатов.
  • Значительно расширен спектр возможностей EcmaScript. Они доступны в режиме соответствия стандартам JavaScript.
  • И еще оно — в MSHTML появилась поддержка API Web Storage.


xjjibu9awl6hoz73kwxlmsrwusw.jpeg


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.


q2p-65i47vo2tqfaxlwmtxz6qs8.png


Собственно, на этом все. Если вы уже успели поработать с новым релизом — расскажите, пожалуйста, в комментариях, как он вам. Возможно, возникли какие-то проблемы? Если да, то насколько критичны и как их можно решить, если это вообще возможно?

© Habrahabr.ru