Стабильный релиз Wine 7.0

После года разработки и 30 экспериментальных версий представлен стабильный релиз открытой реализации Win32 API — Wine 7.0, который вобрал в себя более 9100 изменений. Из ключевых достижений новой версии отмечается перевод большинства модулей Wine в формате PE, поддержка тем оформления, расширение стека для джойстиков и устройств ввода с интерфейсом HID, реализация архитектуры WoW64 для запуска 32-разрядных программ в 64-разрядном окружении.

В Wine подтверждена полноценная работа 5156 (год назад 5049) программ для Windows, ещё 4312 (год назад 4227) программ прекрасно работают при дополнительных настройках и внешних DLL. У 3813 программ (года назад 3703) наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.

Ключевые новшества Wine 7.0:

  • Модули в формате PE
    • Почти все DLL-библиотеки переведены на использование формата исполняемых файлов PE (Portable Executable, применяется в Windows) вместо ELF. Применение PE решает проблемы с поддержкой различных схем защиты от копирования, осуществляющих сверку идентичности системных модулей на диске и в памяти.

    • Реализована возможность взаимодействия PE-модулей с Unix-библиотеками с использованием штатного системного вызова ядра NT, что позволяет скрыть обращение к Unix-коду от отладчиков Windows и отслеживать регистрацию потоков.

    • Встроенные DLL теперь загружаются только при наличии на диске соответствующего им файла в формате PE, независимо от того, настоящая это библиотека или заглушка. Указанное изменение позволяет приложению всегда видеть корректную привязку к PE-файлам. Для отключения данного поведения можно использовать переменную окружения WINEBOOTSTRAPMODE.

  • WoW64
    • Реализована архитектура WoW64 (64-bit Windows-on-Windows), позволяющая запускать 32-разрядные Windows-приложения в 64-разрядных Unix-процессах. Поддержка реализована через подключение прослойки, транслирующей 32-разрядные системные вызовы NT в 64-разрядные обращения к NTDLL.

    • Прослойки WoW64 подготовлены для большинства Unix-библиотек и позволяют 32-разрядным модулям в формате PE обращаться к 64-разрядным Unix-библиотекам. После завершения перевода всех модулей в формате PE появится возможность выполнения 32-разрядных Windows-приложений без установки 32-разрядных Unix-библиотек.

  • Темы оформления
    • Реализована поддержка тем оформления. В состав включены темы оформления «Light», «Blue» и «Classic Blue», которые могут быть выбраны через конфигуратор WineCfg.

    • Добавлена возможность настройки внешнего вида всех элементов управления интерфейса через темы оформления. Обеспечено автоматическое обновление вида элементов после смены темы оформления.

    • Во все встроенные приложения Wine добавлена поддержка тем оформления, включая адаптацию отрисовки к экранам с высокой плотностью пикселей (High DPI).

  • Графическая подсистема
    • Добавлена новая библиотека Win32u, в которую вынесены части библиотек GDI32 и USER32, связанные с обработкой графики и управлением окнами, работающие на уровне ядра. В дальнейшем начнётся работа по переносу в Win32u компонентов драйверов, таких как winex11.drv и winemac.drv.

    • В драйвере Vulkan реализована поддержка спецификации графического API Vulkan 1.2.201.

    • Предоставлена поддержка вывода через API Direct2D штрихованных геометрических объектов, с возможностью проверки попадания клика (hit-test).
    • В API Direct2D реализована начальная поддержка визуальных эффектов, применяемых с использованием интерфейса ID2D1Effect.

    • В API Direct2D API добавлена поддержка интерфейса ID2D1MultiThread, применяемого для организации эксклюзивного доступа к ресурсам в многопоточных приложениях.

    • В наборе библиотек WindowsCodecs реализована поддержка декодирования изображений в формате WMP (Windows Media Photo) и кодирования изображений в формат DDS (DirectDraw Surface). Прекращена поддержка кодирования изображений в формат ICNS (для macOS), который не поддерживается в Windows.

  • Direct3D
    • Значительно улучшен новый движок отрисовки, осуществляющий трансляцию вызовов Direct3D в графический API Vulkan. В большинстве ситуаций уровень поддержки Direct3D 10 и 11 в движке на базе Vulkan доведён до паритета со старым движком на основе OpenGL. Для включения движка отрисовки через Vulkan следует установить переменную реестра Direct3D «renderer» в значение «vulkan».

    • Реализованы многие возможности Direct3D 10 и 11, включая отложенные контексты (Deferred Contexts), работающие в контексте устройств объекты состояния, постоянные смещения в буферах, чистка неупорядоченных представлений текстур, копирование данных между ресурсами в бестиповых форматах (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) и т.п.

    • Добавлена поддержка многомониторных конфигураций, позволяющая выбрать монитор для отображения Direct3D-приложения в полноэкранном режиме.
    • В API DXGI реализована возможность гамма-коррекции для экрана, что может применяться приложениями на базе Direct3D 10 и 11 для изменения яркости экрана. Обеспечено извлечение счётчиков виртуальных фреймбуферов (SwapChain).
    • В Direct3D 12 добавлена поддержка корневых сигнатур версии 1.1.

    • В коде отрисовки через API Vulkan повышена эффективность обработки запросов при наличии в системе поддержки расширения VK_EXT_host_query_reset.

    • Добавлена возможность вывода виртуальных фреймбуферов (SwapChain) через GDI, если для отображения не могут использоваться OpenGL или Vulkan, например, при выводе в окна разных процессов в программах на базе фреймворка CEF (Chromium Embedded Framework).

    • При использовании бэкенда для шейдеров GLSL для шейдерных инструкций обеспечено применение модификатора «precise».

    • В API DirectDraw добавлена поддержка 3D-рендеринга в системную память, используя программные устройства, такие как «RGB», «MMX» и «Ramp».
    • В базу графических карт Direct3D добавлены карты AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 и NVIDIA GT 1030.

    • Из реестра HKEY_CURRENT_USER\Software\Wine\Direct3D удалён ключ «UseGLSL», вместо которого начиная с Wine 5.0 нужно использовать «shader_backend».

    • Для поддержки Direct3D 12 теперь необходимо наличие библиотеки vkd3d как минимум версии 1.2.

  • D3DX
    • В реализации D3DX 10 улучшена поддержка фреймворка визуальных эффектов и добавлена поддержка формата изображений Windows Media Photo (JPEG XR)

    • Добавлены предоставляемые в D3DX10 функции создания текстур, такие как D3DX10CreateTextureFromMemory ()

    • Частично реализованы программные интерфейсы ID3DX10Sprite и ID3DX10Font.

  • Звук и видео
    • В один бэкенд WineGStreamer объединены GStreamer-надстройки для DirectShow и фреймворка Media Foundation, что должно упростить разработку новых API декодирования контента.

    • На базе бэкенда WineGStreamer реализованы объекты Windows Media для синхронного и асинхронного чтения.

    • Продолжена доработка реализации фреймворка Media Foundation, добавлена поддержка функциональности IMFPMediaPlayer, распределителя сэмплов (sample allocator), улучшена поддержка EVR и буферов отрисовки SAR.

    • Удалена библиотека wineqtdecoder, предоставляющая декодировщик для формата QuickTime (для всех кодеков теперь используется GStreamer).

  • Устройства ввода
    • Значительно улучшен стек для устройств ввода, поддерживающих протокол HID (Human Interface Devices), в котором реализованы такие возможности как разбор HID-дескрипторов, обработка HID-сообщений и предоставление мини-драйверов HID.

    • В бэкендах драйвера winebus.sys улучшена трансляции описаний устройств в HID-сообщения.

    • Добавлен новый бэкенд DirectInput для джойстиков, поддерживающих протокол HID. Реализована возможность использования эффектов обратной связи в джойстиках. Улучшена панель управления джойстиками и взаимодействие с устройствами, совместимыми с XInput. В WinMM поддержка джойстиков переделана на базе DInput, вместо использования бэкенда evdev в Linux и IOHID в macOS IOHID. Удалён старый драйвер джойстиков winejoystick.drv.
    • В модуль DInput добавлены новые тесты, базирующиеся на применении виртуальных HID-устройств и не требующие больше наличия физического устройства.

  • Текст и шрифты
    • В DirectWrite добавлен объект Font Set.
    • В RichEdit корректно реализован интерфейс TextHost.

  • Ядро (интерфейсы ядра Windows)
    • При запуске в Wine неопознанного исполняемого файла (например, 'wine foo.msi') теперь вызывается start.exe, который вызывает обработчики, связанные с типом файла.

    • Добавлена поддержка механизмов синхронизации NtAlertThreadByThreadId и NtWaitForAlertByThreadId, близких к фьютексам в Linux.
    • Добавлена поддержка отладочных объектов NT, применяемых для отладки функций ядра.

    • Добавлена поддержка динамических ключей реестра для сохранения данных о производительности.

  • C Runtime
    • В C runtime реализован полный набор математических функций, который главным образом перенесены из библиотеки Musl.

    • Для всех платформ CPU обеспечена корректная поддержка функций для вычислений с плавающей запятой.

  • Сетевые возможности
    • Улучшен режим совместимости совместимости с Internet Explorer 11 (IE11), который теперь используется по умолчанию для обработки HTML-документов.
    • В библиотеке mshtml реализован JavaScript-режим ES6 (ECMAScript 2015), в котором обеспечена поддержка таких возможностей, как выражение let и объект Map.

    • Установка в рабочий каталог Wine MSI-пакетов с дополнениями к движку Gecko теперь производится при необходимости, а не во время обновления Wine.
    • Добавлена поддержка протокола DTLS.

    • Реализован сервис NSI (Network Store Interface), хранящий и передающий другим сервисам информацию о маршрутизации и сетевых интерфейсах на компьютере.

    • Обработчики API WinSock, такие как setsockopt и getsockopt, перенесены в библиотеку NTDLL и драйвер afd.sys, для соответствия архитектуре Windows.

    • В рабочий каталог Wine теперь устанавливаются собственные файлы с сетевыми БД, такие как /etc/protocols и /etc/networks, вместо обращения к аналогичным Unix БД.

  • Альтернативные платформы
    • Добавлена поддержка оборудования Apple на базе ARM-чипов M1 (Apple Silicon).
    • Для поддержки функций BCrypt и Secur32 на платформе macOS теперь требуется установка библиотеки GnuTLS.

    • 32-разрядные исполняемые файлы для платоформ ARM теперь собираются в режиме Thumb-2, по аналогии с Windows. Для загрузки подобных файлов задействован preloader.
    • Для 32-разрядных платформ ARM реализована поддержка размотки (unwinding) исключений.

    • Для FreeBSD расширено число поддерживаемых запросов низкоуровневой информации о системе, таких как данные о состояние памяти и уровне заряда аккумулятора.

  • Встроенные приложения и инструменты для разработки
    • В утилиту reg.exe добавлена поддержка 32- и 64-разрядных представлений реестра. Добавлена поддержка копирования ключей реестра.

    • В утилиту WineDump добавлена поддержка вывода дампа метаданных Windows и показа детальной информации о записях CodeView.
    • В отладчике Wine Debugger (winedbg) реализована возможность отладки 32-разрядных процессов из 64-разрядного отладчика.

    • В компилятор IDL (widl) добавлена возможность загрузки библиотек, встроенных в PE-файлы, обеспечена поддержка специфичных для WinRT атрибутов и конструкций, а также реализован поиск библиотек в привязке к платформе.

  • Система сборки
    • В специфичных для аппаратных архитектур каталогах библиотеки теперь сохраняются с именами, отражающими архитектуру и тип исполняемых файлов, например,'i386-windows' для формата PE и 'x86_64-unix' для unix-библиотек, что позволяет реализовать поддержку разных архитектур в одной установке Wine и обеспечить кросскомпиляцию Winelib.

    • Для установки в заголовки PE-файлов опции, управляющей переходом на использование родных DLL-библиотек, в winebuild добавлен флаг '--prefer-native option' (обработка DLL_WINE_PREATTACH в DllMain прекращена).
    • Добавлена поддержка 4 версии формата отладочных данных Dwarf, который теперь используется по умолчанию при сборке библиотек Wine.
    • Добавлена сборочная опция '--enable-build-id' для сохранения в исполняемых файлах уникальных идентификаторов сборки.

    • Добавлена поддержка использования компилятора Clang в режиме совместимости с MSVC.

  • Разное
    • Наименование типовых каталогов в пользовательской оболочке (Windows Shell) приведено к схеме, применяемой начиная с Windows Vista, т.е. вместо 'My Documents' теперь создаётся каталог 'Documents', а большая часть данных сохраняется в каталог 'AppData'.
    • В прослойке для библиотеки OpenCL добавлена поддержка спецификации OpenCL 1.2.
    • В драйвере WinSpool добавлена поддержка различных вариантов размеров страниц при выводе на печать.

    • Добавлена начальная поддержка MSDASQL, провайдера Microsoft OLE DB для драйверов ODBC.

    • Движок Wine Mono с реализацией платформы .NET обновлён до выпуска 7.0.0.

    • Данные Unicode приведены к соответствию спецификации Unicode 14.

    • В дерево исходных текстов встроены библиотеки Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt и Zlib, которые собираются в формате PE и не требуют наличия варианта в Unix-формате. При этом данные библиотеки также могут быть импортированы из системы для использования вместо встроенных PE-вариантов.



Источник: http://www.opennet.ru/opennews/art.shtml? num=56539

© OpenNet