Вышел Wine 6.0: что нового?

dc1c1a8e15d30c6c5f3dc163242074d9.jpg

С момента выхода Wine 5.0 прошел целый год, и разработчики представили стабильный релиз Wine 6.0. Обновлений много, всего в новой версии Wine более 8300 изменений. Главное, что стоит отметить, — поставка базовых модулей Wine в формате PE, бэкенд на основе графического API Vulkan для WineD3D, обновленная текстовая консоль, появление поддержки DirectShow и фреймворка Media Foundation.

На данный момент официально подтверждена нормальная работа 5049 Windows-приложений. С дополнительной настройкой Wine 6.0 позволяет запускать еще 4227 приложений. Работа некоторых из них нестабильна, но, в целом, под Wine работает гораздо больше 10 тысяч Windows-программ.

Так что же нового?


Появление модулей в формате РE
  • Основные DLL-библиотеки, которые обеспечивают работу Windows-приложений, переведены на использование формата PE вместо ELF. В число этих библиотек вошли NTDLL, KERNEL32, GDI32 и USER32. Это сделано для того, чтобы решить проблемы с поддержкой разных схем защиты от копирования, которые обычно сверяют идентичность системных модулей как на диске, так и в памяти.
  • Разработчики предложили новый способ прикрепления Unix-библиотек к PE-модулям для организации обращения к Unix-библиотекам из РЕ-файлов. Речь идет о необходимости вызова функций, не обрабатываемых через API Win32 по какой-либо причине. Дополнительные Unix-библиотеки определяются по «so»-файлу и имени как у PE-модулей.
  • Разработчики отказались от связывания модулей Winelib с библиотекой libwine.so, также отключена загрузка libwine.so во время выполнения. Модули, которые собраны для новой версии, не работают в предыдущих версиях. А вот собранные ранее модули без проблем будут работать в Wine 6.0, поскольку библиотека libwine включена в состав нового релиза.
  • Появилась поддержка сборки PE-модулей с сохранением отладочных данных в отдельном файле. Это дает возможность снизить размер устанавливаемых файлов.

Графика
  • Появилась поддержка отрисовки дуг, эллипсов и скругленных прямоугольников. Для этого используется API Direct2D.
  • В базовый каталог Wine устанавливается стандартный цветовой профиль sRGB для тех приложений, которым он нужен.
  • Если есть возможность обойтись без интерфейса пользователя, используется экранный драйвер null в качестве нормального графического драйвера.
  • Добавлена поддержка декодирования изображений в форматах DDS DDS (DirectDraw Surface) и JPEG-XR. Есть и кодирование в формате GIF.
  • В драйвере Vulkan добавлена поддержка спецификации графического API Vulkan 1.2.162. Обеспечено создание манифеста JSON и записи в реестре, используемых официальным загрузчиком Vulkan.
  • Плюс разработчики добавили поддержку расширяющихся линий, дополнительных стилей штриховки и новых типов записей в meta-файлах.

Direct3D
  • Для того, чтобы все работало, в новом релизе появился экспериментальный движок отрисовки. Он реализует трансляцию вызовов Direct3D 12 в графический API Vulkan. Для его нормальной работы требуется библиотека libvkd3d-shader, осуществляющая поддержку трансляции байткода 4 и 5 моделей шейдеров в промежуточное представление SPIR-V. Благодаря всему этому поддерживаются вершинные, пиксельные, тесселяционные, вычислительные и простые геометрические шейдеры, сериализация и десериализация корневой подписи.
  • Добавлены новые возможности Direct3D 11, включая независимые состояния смешивания, смешивание по нескольким источникам, маски для MSAA (Multi-Sample Anti-Aliasing) и дополнительные запросы возможностей.
  • Direct3D 9 получил поддержку режима мультисемплинг-сглаживания с учетом прозрачности (alpha-to-coverage).
  • Все хорошо с OpenGL-расширениями, включая поддержку EXT_framebuffer_multisample_blit_scaled и ARB_buffer_storage.
  • Расширен спектр поддерживаемых моделей видеокарт.
  • Что касается D3DX, то появилась возможность отрисовки текста через интерфейс ID3DXFont, плюс реализован интерфейс ID3D12ShaderReflection и функции получения параметров изображений, такие как 3DX10GetImageInfoFromMemory ().

Ядро
  • У разработчиков получилось добавить режим совместимости с разными версиями Windows, благодаря чему приложение получает нужный ему номер версии ОС.
  • Добавлена поддержка файлов конфигурации для win9x.
  • Появились новые объекты и функции ядра NT, которые нужны для работы систем античит.
  • Добавлен драйвер NetlO.sys, который используется для организации доступа к сети драйверов, защищенных от копирования.
  • В ntdll добавлена поддержка AVX-регистров x86.

Рабочий стол и интерфейс пользователя
  • В winex11.drv и обработчик настроек XRandR 1.4 добавлена поддержка режимов дисплея для разных ориентаций экрана.
  • В API X11, OpenGL и Vulkan обеспечивается единое представление графических адаптеров.
  • Добавлена поддержка свойства _GTK_WORKAREAS для корректной раскладки элементов рабочего стола в многомониторных конфигурациях.

Ввод информации
  • В новом релизе появилась поддержка устройств и сообщений Rawinput.
  • Добавлен драйвер ядра Windows для доступа к USB-устройствам, который основан на библиотеке LibUSB.
  • Для более точного позиционирования в играх реализовано сохранение истории позиции мыши.
  • Добавлен маппинг кнопок на игровых контроллерах.
  • Появились уведомления о подключении новых устройств Plug&Play.

Сеть
  • Обновлена версия движка Gecko до версии 2.47.2.
  • Добавлен API WebSocket.
  • Оптимизирована поддержка сервисов LDAP и Active Directory.

Звук и видео
  • В Wine кардинально переработана реализация фреймворка Media Foundation, в котором появилась начальная поддержка компонентов Media Session, Streaming Audio Renderer (SAR), Video Renderer, EVR mixer, Topology Loader и Media Engine.
  • Предложена более полная реализация библиотеки AMStream (ActiveMovie Multimedia Streaming).
  • Появилось много нового в Video Mixing Renderer. Например, добавлена поддержка безоконного режима (windowless) и режима без отрисовки (renderless), возможность автоматической подгонки размера видео под размер окна, аппаратного ускорения преобразования цветового пространства и отображения рамки (letterboxing) вокруг содержимого для достижения корректного соотношения сторон.
  • Добавлены новые фильтры DirectShow File Writer и DirectX Media Object (DMO) Wrapper.
  • А еще добавлены звуковые библиотеки XACT3 Engine (Cross-platform Audio Creation Tool, xactengine3_*.dll), реализованные через FAudio.

C Runtime
  • В библиотеках реализована полная поддержка программ в формате PE, позволившая исключить MinGW runtime из зависимостей.
  • Все встроенные программы и Winegcc переведены на использование C runtime UCRTBase.
  • В C runtime добавлена еще и поддержка локалей Windows c использованием кодировки UTF-8.

Разработка
  • Для обеспечения совместимости с отладчиками для Windows в Winegcc добавлена поддержка генерации файлов PDB при сборке DLL в формате PE.
  • Добавлена возможность генерации библиотеки импорта во время сборки DLL при указании опции '-Wl,--out-implib'.
  • Добавлена поддержка LLVM-MinGW для кросс-компиляции PE-файлов.
  • Появилась поддержка не привязанных к конкретному каталогу установок WineLib.

Встроенные приложения
  • Появилась возможность настройки версии окружения Windows напрямую из командной строки.
  • Улучшена обработка папок оболочки. Появились стандартные папки Downloads и Templates.
  • Для подключения внешних накопителей используется интерфейс Dbus.
  • Реализована утилита WHOAMI для показа имени текущего пользователя.

С полным списком изменений можно ознакомиться на сайте разработчиков.
1hdqmj1bvguax5hnugdz0ci_jbw.jpeg

© Habrahabr.ru