Вышли Wine 6.0 и Proton 5.13-5

Wine и Steam LinuxСостоялись релизы стабильных версий Wine 6.0 и Proton 5.13-5. Оба проекта направлены на обеспечение стабильного запуска приложений, написанных для Windows, в Linux.

В Wine 6.0 подтверждена полноценная работа 5049 программ для Windows (год назад таких программ было 4869), еще 4227 программ прекрасно работают при дополнительных настройках и внешних DLL (год назад 4136). У 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-модулей с сохранением отладочной информации в отдельном файле, что позволяет сократить размер устанавливаемых файлов.

Ядро (интерфейсы ядра Windows)

  • Реализован режим совместимости с разными версиями Windows, позволяющий вернуть приложению требуемый номер версии Windows;
  • Добавлена поддержка отражения (mapping) файлов конфигурации в формате ini (win9x) в соответствующие параметры в реестре (NT);
  • Добавлены новые объекты и функции ядра NT, необходимые для работы систем античита, загружающих драйверы ядра;
  • Реализован драйвер NetIO.sys, который можно использовать для организации доступа к сети драйверов, защищённых от копирования;
  • В ntdll добавлена поддержка AVX-регистров x86.

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

  • Добавлена поддержка отрисовки дуг, эллипсов и скруглённых прямоугольников при помощи 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().

Интерфейс пользователя и интеграция с рабочим столом

  • В 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.

Звук и видео

  • Существенно доработана реализация фреймворка 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.

Текст и шрифты

  • Предложена новая реализация текстовой консоли, которая избавлена от зависимости от библиотеки curses. Обработчик консоли вынесен в отдельный процесс ConHost, а WineConsole переделана в обвязку над ConHost. Новая консоль поддерживает unix-подобные псевдоконсоли ConPTY, escape-последовательности, операций с окнами и возможность создания консольного окна в стиле wineconsole;
  • В DirectWrite для всех начертаний включены средства для работы с формами (shaping). Поддерживаются все типы подстановки глифов GSUB/GPOS;
  • В DirectWrite для увеличения производительности обеспечено прямое чтение из шрифта данных CMAP без обращения к общему кэшу и без создания объектов FreeType;
  • Операции инициализации шрифтов в GDI32 по возможности избавлены от обращения к FreeType для ускорения запуска. Повышена эффективность работы кэша реестра шрифтов;
  • Код для поддержки API Uniscribe в библиотеке USP10 перенесён в GDI32, по аналогии с тем, как это сделано в новых версиях Windows;
  • Предложена начальная версия шрифта Webdings.

Криптография

  • В библиотеке BCrypt реализованы дополнительные алгоритмы, включая поддержку ключей DSA и шифра 3DES;
  • Добавлен и активирован по умолчанию криптопровайдер DSSENH, предоставляющий функции для хэширования и создания/проверки цифровых подписей с использованием алгоритмов SHA и DSS (Digital Signature Standard).

Интернационализация

  • Данные 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.

Страница анонса, где можно найти ссылки на скачивание.

На Wine основан и проект Proton от компании Valve. Имея в своём активе самый известный магазин игр, Valve стремится обеспечить запуск игр, написанных под Windows, на платформе Linux.

В новой версии Proton:

  • Добавлена поддержка API OpenXR, развиваемого консорциумом Khronos для создания приложений виртуальной и дополненной реальности. Из использующих OpenXR приложений, которые могут работать в Proton, отмечается VR-режим в Microsoft Flight Simulator (работоспособен пока на системах с GPU AMD);
  • До версии 2.1 обновлён код проекта VKD3D-Proton, развивающего ответвление от vkd3d с реализацией Direct3D 12, в которое включены специфичные для Proton изменения, оптимизации и улучшения для более качественной работы Windows игр на базе Direct3D 12;
  • Решены проблемы со звуком в игре Cyberpunk 2077;
  • Обеспечена поддержка online-игры в Red Dead Online и Read Dead Redemption 2;
  • Устранены крахи, проявляющиеся в играх Gears Tactics, Fallout 76, Kingdoms Reborn, Need For Speed Hot Pursuit и Conan Exiles;
  • Обеспечена поддержка функциональности создания скриншотов в играх Fallout 76 и Path of Exile;
  • Для большинства игр реализована приостановка обработки ввода во время активности всплывающего окна Steam;
  • Решены проблемы с отображением текста в игре Lumberjack Destiny;
  • Исправлены проблемы с разрешением экрана в DLC Quest и других играх XNA.

Ссылка на страницу релиза.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *