Несколько дней назад представлена новая стабильная версия Wine 6.0, версия, появившаяся после года разработки, и 29 экспериментальных версий.
В этой новой версии внесено более 8300 изменений и среди основных достижений, которые входят в поставку, мы можем найти Базовые модули Wine в формате PE, бэкэнд, основанный на графическом API Vulkan для WineD3D, новая реализация текстовой консоли, поддержка DirectShow и фреймворка Media Foundation.
Wine подтвердил полное функционирование 5049 (4869 год назад) программ для Windows, 4227 (4136 год назад) программ отлично работают с дополнительными конфигурациями и внешними DLL. У программ 3703 есть небольшие проблемы в работе, которые не мешают использованию основных функций приложений.
Основные новости Wine 6.0
В этой новой версии Wine 6.0 мы можем обнаружить, что основные файлы DLLвключая NTDLL, KERNEL32, GDI32 и USER32, были переведены на использование исполняемого формата PE (переносимый исполняемый файл) вместо ELF. Использование PE решает проблемы с поддержкой различных схем защиты от копирования, которые проверяют идентичность системных модулей на диске и в памяти.
Кроме того предлагается новый механизм для присоединения библиотек Unix к модулям PE для организации доступа к библиотекам Unix из PE-файлов, когда необходимо вызвать функции, которые не могут быть обработаны через Win32 API. Дополнительные библиотеки Unix идентифицируются по наличию файла с расширением «so» и имени модуля PE (например, ntdll.so для ntdll.dll).
Более того нарушена привязка модулей Winelib к libwine.so и загрузка libwine.so была отключена во время выполнения. Из-за этого изменения теряется совместимость с предыдущими версиями, то есть модули, созданные для Wine 6.0, не смогут быть загружены в предыдущих версиях Wine.
Также отмечается, что реализована поддержка сборки PE-модулей с сохранением отладочной информации в отдельном файле, что позволило уменьшить размер устанавливаемых файлов.
В графическую подсистему добавлена поддержка рисования дуг, эллипсов и прямоугольников с закругленными углами с помощью Direct2D API.
Драйвер Vulkan обеспечивает поддержку спецификации Vulkan Graphics API 1.2.162. Обеспечено создание манифеста JSON и записи реестра, используемой официальным загрузчиком Vulkan.
В Direct3D реализован экспериментальный движок рендеринга. для WineD3D, который переводит вызовы Direct3D 12 в графический API Vulkan. Движку требуется библиотека libvkd3d-shader, которая поддерживает перевод байт-кода 4 и 5 шейдерных моделей в промежуточное представление SPIR-V.
Реализованы новые возможности Direct3D 11, такие как независимые состояния соединения, соединение с несколькими источниками, маски для MSAA (множественное сглаживание образцов) и запросы дополнительных функций.
В D3DX реализованы интерфейс ID3D12ShaderReflection и функции для получения параметров изображения, такие как 3DX10GetImageInfoFromMemory (), а также новые объекты и функции ядра NT, необходимые для работы античит-систем, загружающих драйверы ядра.
Еще одно важное изменение касается реализации Media Foundation, который был значительно улучшен, в котором была начальная поддержка компонентов Media Session, Streaming Audio Renderer (SAR), Video Renderer, микшера EVR, загрузчика топологии и Media Engine.
Video Mixing Renderer добавляет поддержку режимов без окон и без рендеринга, возможность автоматического изменения размера видео в соответствии с размером окна, аппаратное ускорение преобразования цветового пространства и широкоэкранное форматирование вокруг контента для достижения правильного соотношения.
Из других изменений которые выделяются:
- Новые функции были добавлены в Media Detector API.
- Добавлена поддержка преобразования видео и аудио форматов в фильтрующую ссылку через GStreamer.
- Усовершенствованный видеопроцессор (EVR) поддерживает микширование через DXVA2 API.
- Добавлена полная поддержка нормализации строк Unicode.
- Улучшенная поддержка Windows для таблиц сопоставления кодировки символов.
- Встроенная реализация математических функций была добавлена в среду выполнения C на основе кода из библиотеки Musl.
- Код для генерации чисел с плавающей запятой был переработан и удален из привязки к системной функции printf.
- Удалена поддержка 32-битной архитектуры PowerPC, которая не работала.
- Добавлена поддержка обработки исключений и раскрутки стека в 32-битных и 64-битных системах ARM.
Наконец, если вы хотите узнать об этом больше, вы можете проконсультироваться по следующей ссылке.