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

14 января 2021 года

После года разработки и 29 экспериментальных версий представлен стабильный релиз открытой реализации Win32 API - Wine 6.0, который вобрал в себя более 8300 изменений. Из ключевых достижений новой версии отмечается поставка базовых модулей Wine в формате PE, бэкенд на основе графического API Vulkan для WineD3D, новая реализация текстовой консоли, поддержка DirectShow и фреймворка Media Foundation.

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

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

  • Модули в формате PE
  • Базовые DLL-библиотеки, включая NTDLL, KERNEL32, GDI32 и USER32, переведены на использование формата исполняемых файлов PE (Portable Executable, применяется в Windows) вместо ELF. Применение PE решает проблемы с поддержкой различных схем защиты от копирования, осуществляющих сверку идентичности системных модулей на диске и в памяти.
  • Предложен новый механизм прикрепления Unix-библиотек к PE-модулям для организации обращения к Unix-библиотекам из PE-файлов при необходимости вызова функций, которые не могут быть обработаны через API Win32. Дополнительные Unix-библиотеки определяются по наличию файла с расширением "so" и имени как у PE-модуля (например, ntdll.so для ntdll.dll).
  • Прекращено связывание модулей Winelib с библиотекой libwine.so и загрузка libwine.so во время выполнения. Из-за данного изменения потеряна обратная совместимость, т.е. модули собранные для Wine 6.0 не смогут загружаться в старых выпусках Wine. Библиотека libwine больше не используется в Wine 6.0, но продолжает поставляться для совместимости с модулями, собранными для старых версий Wine.
  • Реализована поддержка сборки PE-модулей с сохранением отладочной информации в отдельном файле, что позволяет сократить размер устанавливаемых файлов.
  • Графическая подсистема
  • Добавлена поддержка отрисовки дуг, эллипсов и скруглённых прямоугольников при помощи API Direct2D.
  • В базовый каталог Wine обеспечена установка стандартного цветового профиля sRGB для приложений, которые пытаются загрузить его напрямую.
  • Реализована возможность использования экранного драйвера null как нормального графического драйвера в условиях, когда можно обойтись без интерфейса пользователя.
  • В WindowsCodecs добавлена поддержка декодирования изображений в форматах DDS (DirectDraw Surface) и JPEG-XR, а также кодирования в формат GIF.
  • В драйвере Vulkan реализована поддержка спецификации графического API Vulkan 1.2.162 и обеспечено создание манифеста JSON и записи в реестре, используемых официальным загрузчиком Vulkan.
  • Улучшена реализация GdiPlus, в том числе появилась поддержка расширяющихся линий, дополнительных стилей штриховки и новых типов записей в meta-файлах.
  • Direct3D
  • Для WineD3D реализован экспериментальный движок отрисовки, осуществляющий трансляцию вызовов Direct3D 12 в графический API Vulkan. Для работы движка необходима библиотека libvkd3d-shader, осуществляющая поддержку трансляции байткода 4 и 5 моделей шейдеров в промежуточное представление SPIR-V. Поддерживаются вершинные, пиксельные, тесселяционные, вычислительные и простые геометрические шейдеры, сериализация и десериализация корневой подписи. Из шейдерных инструкций реализованы арифметические, атомарные и битовые операции, операторы сравнения и управления потоком передачи данных, инструкции sample, gather и load, операции неупорядоченного доступа (UAV, Unordered Access View). Для включения движка отрисовки через API Vulkan следует установить переменную реестра

Direct3D "renderer" в значение "vulkan".

  • Реализованы новые возможности Direct3D 11, такие как независимые состояния смешивания, смешивание по нескольким источникам, маски для MSAA (Multi-Sample Anti-Aliasing) и дополнительные запросы возможностей.
  • Для Direct3D 9 реализована поддержка режима мультисемплинг-сглаживания с учётом прозрачности (alpha-to-coverage).
  • Добавлена поддержка OpenGL-расширений EXT_framebuffer_multisample_blit_scaled и ARB_buffer_storage.
  • Расширена база данных графических карт для Direct3D.
  • Добавлены новые настройки для ключей реестра HKEY_CURRENT_USER\Software\Wine\Direct3D "renderer" (выбор бэкенда отрисовки "gl", "gdi", "no3d" или "vulkan") и "csmt" (управление многопоточной обработкой команд Direct3D). Удалён ключ "DirectDrawRenderer", вместо которого следует использовать "renderer".
  • D3DX
  • Предоставлена возможность отрисовки текста через интерфейс ID3DXFont.
  • Реализован интерфейс ID3D12ShaderReflection и функции получения параметров изображений, такие как 3DX10GetImageInfoFromMemory().
  • Ядро (интерфейсы ядра Windows)
  • Реализован режим совместимости с разными версиями Windows, позволяющий вернуть приложению требуемый номер версии Windows.
  • Добавлена поддержка отражения (mapping) файлов конфигурации в формате ini (win9x) в соответствующие параметры в реестре (NT).
  • Добавлены новые объекты и функции ядра NT, необходимые для работы систем античита, загружающих драйверы ядра.
  • Реализован драйвер NetIO.sys, который можно использовать для организации доступа к сети драйверов, защищённых от копирования
  • В ntdll добавлена поддержка AVX-регистров x86.
  • Интерфейс пользователя и интеграция с рабочим столом
  • В winex11.drv и обработчик настроек XRandR 1.4 добавлена поддержка режимов дисплея для разных ориентаций экрана.
  • Обеспечено единое представление графических адаптеров в API X11,

OpenGL и Vulkan.

  • Реализована поддержка свойства _GTK_WORKAREAS для корректной раскладки элементов рабочего стола в многомониторных конфигурациях.
  • Устройства ввода
  • Добавлена поддержка устройств и сообщений RawInput, которые задействованы вместо низкоуровневых обработчиков в реализации DirectInput.
  • Добавлен драйвер ядра Windows для доступа к USB-устройствам, основанный на библиотеке LibUSB.
  • Реализована история позиции мыши, необходимая для более точного позиционирования в играх.
  • Добавлена возможность настройки маппинга кнопок на игровых контроллерах в SDL при помощи переменной окружения SDL_GAMECONTROLLERCONFIG.
  • Реализованы уведомления о подключении устройств Plug & Play.
  • Сетевые возможности
  • Браузерный движок Gecko обновлён до версии 2.47.2.
  • Реализован API WebSocket.
  • Улучшено информирование о местоположении ошибок при сбоях выполнения кода на JScript и VBScript;
  • Улучшена поддержка сервисов LDAP и Active Directory. Решены проблемы с компиляцией wldap32 на системах без установленной поддержки LDAP.
  • Добавлена начальная реализация сетевого драйвера NDIS.
  • Улучшена реализация механизма идентификации объектов OLE ( OLE Moniker). В диалог привязки данных через OLE добавлена возможность настройки ODBC.
  • Криптография
  • В библиотеке BCrypt реализованы дополнительные алгоритмы, включая поддержку ключей DSA и шифра 3DES.
  • Добавлен и активирован по умолчанию криптопровайдер DSSENH, предоставляющий функции для хэширования и создания/проверки цифровых подписей с использованием алгоритмов SHA и DSS (Digital Signature Standard).
  • Текст и шрифты
  • Предложена новая реализация текстовой консоли, которая избавлена от зависимости от библиотеки curses. Обработчик консоли вынесен в отдельный процесс ConHost, а WineConsole переделана в обвязку над ConHost. Новая консоль поддерживает unix-подобные псевдоконсоли ConPTY, escape-последовательности, операций с окнами и возможность создания консольного окна в стиле wineconsole.
  • В DirectWrite для всех начертаний включены средства для работы с формами (shaping). Поддерживаются все типы подстановки глифов GSUB/GPOS.
  • В DirectWrite для увеличения производительности обеспечено прямое чтение из шрифта данных CMAP без обращения к общему кэшу и без создания объектов FreeType.
  • Операции инициализации шрифтов в GDI32 по возможности избавлены от обращения к FreeType для ускорения запуска. Повышена эффективность работы кэша реестра шрифтов.
  • Код для поддержки API Uniscribe в библиотеке USP10 перенесён в GDI32, по аналогии с тем, как это сделано в новых версиях Windows.
  • Предложена начальная версия шрифта Webdings.
  • Звук и видео
  • Существенно доработана реализация фреймворка 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) вокруг содержимого для достижения корректного соотношения сторон.
  • Для вывода видео вместо GDI по умолчанию задействован компонент Video Mixing Renderer, при наличии соответствующей поддержки в Direct3D.
  • Добавлены фильтры DirectShow File Writer и DirectX Media Object (DMO) Wrapper. В фильтре захвата видео расширен вывод информации о форматах видео, размере и частоте кадров.
  • Добавлены новые функции в API Media Detector.
  • В фильтр-обвязку над GStreamer добавлена поддержка преобразования форматов видео и звука.
  • В Enhanced Video Renderer (EVR) реализована поддержка микширования через API DXVA2.
  • Добавлены звуковые библиотеки XACT3 Engine (Cross-platform Audio Creation Tool, xactengine3_*.dll), реализованные через FAudio.
  • Интернационализация
  • Данные Unicode приведены к соответствию спецификации Unicode 13.
  • Добавлена полная поддержка нормализации Unicode-строк.
  • Улучшена совместимость с Windows таблиц сопоставления символьных кодировок. Задействованы файлы с кодировками из набора Microsoft Open Specification. Удалены кодировки, которые отсутствуют в Windows.
  • Реализована генерация NLS-файлов для таблиц кодировок и добавлена возможность использования внешних таблиц для кодировок Unix.
  • Добавлена поддержка таблиц для сопоставления символов с учётом их лингвистического значения;
  • В компиляторе ресурсов wrc и утилите для управления ресурсами wmc улучшена поддержка UTF-8 и добавлена возможность использования внешних файлов NLS.
  • Улучшена поддержка доменных имён, содержащих символы национальных алфавитов (IDN, Internationalized Domain Names);
  • C Runtime
  • В библиотеках C runtime реализована вся необходимая поддержка программ в формате PE, позволившая избавиться от зависимости от MinGW runtime.
  • Встроенные программы и Winegcc переведены на использование нового C runtime UCRTBase.
  • В C runtime добавлена поддержка локалей Windows, использующих кодировку UTF-8.
  • В C runtime добавлена встроенная реализация математических функций,

основанная на коде из библиотеки Musl.

  • Переделан и избавлено от привязки к системной функции printf код вывода чисел с плавающей запятой.
  • Альтернативные платформы
  • Прекращена поддержка 32-разрядной архитектуры PowerPC, находившаяся в неработоспособном виде.
  • Добавлена поддержка обработки исключений и раскручивания стека на 32- и 64-разрядных системах ARM.
  • Добавлена начальная поддержка ARM64 для macOS на системах с новыми чипами Apple.
  • Для FreeBSD включены оптимизации для игнорирования регистра символов в именах файлов.
  • Инструменты для разработки / Winelib
  • Для совместимости с отладчиками для Windows в Winegcc добавлена поддержка генерации файлов PDB при сборке DLL в формате PE.
  • В Winegcc добавлена возможность генерации библиотеки импорта во время сборки DLL при указании опции '-Wl,--out-implib'.
  • Добавлена поддержка использования LLVM-MinGW для кросс-компиляции PE-файлов.
  • Реализована поддержка не привязанных к конкретному каталогу установок Winelib.
  • В компиляторе ресурсов wrc и утилите для управления ресурсами wmc улучшена поддержка UTF-8 и добавлена возможность использования внешних файлов NLS.
  • Улучшена поддержка синтаксиса в компиляторе WIDL (Wine Interface Definition Language), например, добавлена поддержка атрибутов "[hidden]" и "[restricted]".
  • Встроенные приложения
  • Добавлена возможность настройки версии окружения Windows из командной строки (при помощи параметра "/v" в winecfg);
  • Улучшена обработка папок оболочки (Shell Folders, специальные каталоги для размещения определённых типов контента, например, "My Pictures"). В winecfg добавлены новые стандартные папки Downloads и Templates. Устранена проблема со сбросом настроек Shell Folders после каждого обновления wine;
  • Из WineCfg удалён код для автоопределения внешних накопителей,

вместо которого теперь используется соответствующий интерфейс DBus.

  • В утилиту FSUTIL добавлена команда 'hardlink' для создания жёстких ссылок.
  • В утилиту FIND добавлена поддержка поиска сразу нескольких файлов.
  • Реализована утилита WHOAMI для показа имени текущего пользователя.
  • Система сборки
  • Обеспечена генерация нерекурсивных сборочных сценариев (только один makefile на верхнем уровне).
  • Добавлена поддержка использования LLVM-MinGW для кросс-компиляции PE-файлов;
  • Добавлена поддержка сборки с использованием Clang в режиме совместимости с MSVC;
  • В spec-файлах добавлена поддержка флага '-syscall' для генерации таблицы входных точек системных вызовов в стиле NT.
  • Разное
  • Движок Mono обновлён до версии 5.1.1 с поддержкой средств форматирования текста из WPF (Windows Presentation Foundation).
  • Большинство модулей переведено на использование более читаемых сток вида L"abc" вместо массивов.
  • В MSI-установщиках добавлена поддержка кнопок с изображениями и списками.
  • Добавлена начальная поддержка API Print Ticket.

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Стабильный релиз Wine 6.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.