После года разработки и 28 экспериментальных версий pêşkêş kirin стабильный релиз открытой реализации Win32 API — Wine 5.0, который вобрал в себя более 7400 изменений. Из ключевых достижений новой версии отмечается поставка встроенных модулей Wine в формате PE, поддержка многомониторных конфигураций, новая реализация звукового API XAudio2 и поддержка графического API Vulkan 1.1.
В Wine pejirandin полноценная работа 4869 (год назад 4737) программ для Windows, еще 4136 (год назад 4045) программ прекрасно работают при дополнительных настройках и внешних DLL. У 3635 программ наблюдаются небольшие проблемы в работе, которые не мешают использованию основных функций приложений.
При наличии компилятора MinGW большинство модулей Wine теперь собираются в формате исполняемых файлов PE (Portable Executable, применяется в Windows) вместо ELF. Применение PE решает проблемы с поддержкой различных схем защиты от копирования, осуществляющих сверку идентичности системных модулей на диске и в памяти;
Исполняемые файлы PE теперь копируются в каталог ~/.wine ($WINEPREFIX) вместо применения фиктивных DLL-файлов, что делает начинку более похожей на реальные установки Windows, ценой потребления дополнительного дискового пространства;
Модули, преобразованные в формат PE, могут использовать штатные wchar Си-функций и константы с юникодом (например, L»abc»);
В Wine C runtime добавлена поддержка связывания с двоичными файлами, собранными в MinGW, которая при сборке DLL используется по умолчанию вместо MinGW runtime;
Subsystem Graphics
Добавлена поддержка работы с несколькими мониторами и графическими адаптерами, включая возможность динамического изменения настроек;
Обновлён драйвер для графического API Vulkan, который приведён в соответствие со спецификацией Vulkan 1.1.126;
В библиотеке WindowsCodecs реализована возможность преобразования дополнительных растровых форматов, включая форматы с индексированной палитрой;
Direct3D
При выполнении полноэкранных приложений Direct3D обеспечена блокировка вызова хранителя экрана;
В DXGI (DirectX Graphics Infrastructure) добавлена поддержка информирования приложения о минимизации его окна, что позволяет приложению снизить выполнение ресурсоёмких операций при сворачивании окна;
Для приложений, использующих DXGI, реализована возможность переключения между полноэкранным и оконным режимом при помощи комбинации Alt+Enter;
Расширены возможности реализации Direct3D 12, например, появилась поддержка переключения между полноэкранным и оконным режимом, изменения режимов экрана, вывода с масштабированием и управления интервалом замены буферов отрисовки (swap interval);
Улучшена обработка различных пограничных ситуаций, таких как применение выходящих за допустимые диапазоны исходных значений для тестов прозрачности и глубины, отрисовка с отражёнными текстурами и буферами, использование некорректных DirectDraw объектов clipper, создание устройств Direct3 для некорректных окон, использование видимых областей, минимальные значения параметров которых равны максимальным и т.п.
В Direct3D 8 и 9 обеспечено более точное отслеживание «грязных» областей загружаемых текстур;
Снижен размер необходимого адресного пространства при загрузке 3D-текстур, сжатых методом S3TC (вместо загрузки целиком, текстуры грузятся кусками).
Реализован интерфейс ID3D11Multithread для защиты критических секций в многопоточных приложениях;
Для старых приложений DirectDraw внесены различных улучшения и исправления, связанных с расчётом освещения;
Реализованы дополнительные вызовы для получения информации о шейдерах в API ShaderReflection;
В wined3d добавлена поддержка блиттера на базе CPU для обработки сжатых ресурсов;
Расширена БД графических карт, распознаваемых в Direct3D;
Добавлены новые ключи реестра HKEY_CURRENT_USER\Software\Wine\Direct3D: «shader_backend» (бэкенд для работы с шейдерами: «glsl» для GLSL, «arb» для ARB vertex/fragment и «none» для отключения поддержки шейдеров), «strict_shader_math» (0x1 — включить, 0x0 — отключить преобразование шейдеров Direct3D). Объявлен устаревшим ключ «UseGLSL» (следует использовать «shader_backend»);
D3DX
Реализована поддержка механизма сжатия 3D-текстур S3TC (S3 Texture Compression);
Добавлены корректные реализации таких операций, как заливка текстурой и неотражаемые (unmappable) поверхности;
Внесены различные улучшения и исправления во фреймворк создания визуальных эффектов;
Kernel (Navnavkên Kernelê yên Windows)
Большинство функций, используемых в Kernel32, перемещены в
KernelBase, следуя изменениям в архитектуре Windows;
Возможность смешивания 32- и 64-разрядных DLL в каталогах, используемых для загрузки. Обеспечено игнорирование библиотек, не соответствующих текущей разрядности (32/64), на случай если далее в пути удастся найти корректную для текущей разрядности библиотеку;
Для драйверов устройств улучшена эмуляция объектов ядра;
Реализованы работающие на уровне ядра объекты синхронизации, такие как spin-блокировки, быстрые мьютексы и прикрепляемые к ресурсу переменные;
Обеспечено корректное информирование приложений о состоянии аккумулятора;
Интерфейс пользователя и интеграция с рабочим столом
Минимизированные окна теперь отображаются с использованием заголовка, а не пиктограммы в стиле Windows 3.1;
Добавлены новые стили кнопок SplitButton (кнопка с выпадающим списком действий) и Command Links (ссылки в диалоговых окнах, используемых для перехода на следующую стадию);
Для папок ‘Downloads’ и ‘Templates’ созданы символьные ссылки, указывающие на соответствующие каталоги в Unix-системах;
Amûrên Input
При запуске обеспечена установка и загрузка необходимых драйверов устройств Plug & Play;
Улучшена поддержка игровых контроллеров, включая мини-джойстик (hat switch), руль, педали для газа и тормозов.
Прекращена поддержка старого Linux API взаимодействия с джойстиками, используемого в ядрах Linux до версии 2.2;
.TOR
Движок Mono обновлён до выпуска 4.9.4 и теперь включает части фреймворка Windows Presentation Foundation (WPF);
Добавлена возможность установки дополнений с Mono и Gecko в один общий каталог с размещением файлов в иерархии /usr/share/wine вместо копирования в новые префиксы;
Taybetmendiyên torê
Браузерный движок Wine Gecko, который используется в библиотеке MSHTML, обновлён до выпуска 2.47.1. Реализована поддержка новых HTML API;
В MSHTML реализована поддержка элементов SVG;
Добавлено много новых функций VBScript (например, обработчики ошибок и исключений, функции Hour, Day, Month, String, LBound, RegExp.Replace, РScriptTypeInfo_* и ScriptTypeComp_Bind* и т.п.);
Обеспечено сохранение состояния кода в VBScript и JScript (script persistence);
Добавлена начальная реализация сервиса HTTP (WinHTTP) и связанного с ним API (HTTPAPI) для клиентских и серверных приложений, отравляющих и принимающих запросы при помощи протокола HTTP;
Реализована возможность получения параметров настройки HTTP-прокси чрез DHCP;
Piştgiriyek zêde kir ji bo beralîkirina daxwazên erêkirinê bi navgîniya karûbarê Microsoft Passport;
Cryptography
Реализована поддержка криптографических ключей на основе эллиптических кривых (ECC) при использовании GnuTLS;
Добавлена возможность импорта ключей и сертификатов из файлов в формате PFX;
Добавлена поддержка схемы формирования ключа на основе пароля PBKDF2;
Nivîs û tîp
В реализации API DirectWrite добавлена поддержка возможностей OpenType, связанных с позиционированием глифов, которые включены по умолчанию для начертания Latin, включая кернинг;
Повышена безопасность обработки шрифтовых данных за счёт проверки корректности различных таблиц данных перед их использованием;
Интерфейсы DirectWrite приведены в соответствие со свежим SDK;
Deng û vîdyo
Предложена новая реализация звукового API XAudio2, построенная на основе проекта FAudio. Использование FAudio в Wine позволяет добиться более высокого качества звука в играх и задействовать такие возможности как смешивание громкости и расширенные звуковые эффекты;
Добавлено большое число новых вызовов в реализацию фреймворка Media Foundation, включая поддержку встроенных и пользовательских асинхронных очередей, Source Reader API, Media Session и т.п.
Фильтр захвата видео переведён на использование API v4l2 вместо v4l1 API, что позволило расширить диапазон поддерживаемых камер;
Удалены встроенные декодировщики AVI, MPEG-I и WAVE, вместо которых теперь используются системные GStreamer или QuickTime;
Добавлено подмножество конфигурационных API VMR7;
В звуковые драйверы добавлена поддержка настройки громкости отдельных каналов;
Наnternetenalîzasyon
Tabloyên Unicode ji bo guhertoya 12.1.0 nûve kirin;
Реализована поддержка нормализации Unicode;
Обеспечена автоматическая установка географического региона (HKEY_CURRENT_USER\Control Panel\International\Geo) на основе текущей локали;
RPC/COM
В typelib добавлена поддержка сложных структур и массивов;
Добавлена начальная реализация runtime-библиотеки Windows Script;
Добавлена начальная реализация библиотеки ADO (Microsoft ActiveX Data Objects);
Установщики
Для установщика MSI реализована поддержка поставки патчей (Patch Files);
В утилите WUSA (Windows Update Standalone Installer) появилась возможность установки обновлений в формате .MSU;
Платформа ARM
Ji bo mîmariya ARM64, piştgirî ji bo vekêşana stackê li ntdll hate zêdekirin. Ji bo girêdana pirtûkxaneyên libunwind ên derveyî piştgirî zêde kir;
Для архитектуры ARM64 реализована поддержка бесшовных прокси (stubless proxies) для интерфейсов объектов;
Инструменты для разработки / Winelib
Добавлена возможность применения отладчика из Visual Studio для удалённой отладки приложений, запущенных в Wine;
Частично реализована библиотека DBGENG (Debug Engine);
Собранные для Windows исполняемые файлы больше не зависят от libwine, что позволяет запускать их в Windows без дополнительных зависимостей;
В Resource Compiler и IDL Compiler добавлена опция ‘—sysroot’ для определения пути размещения заголовочных файлов;
В winegcc добавлены опции ‘—target’, ‘—wine-objdir’,
‘—winebuild’ и ‘-fuse-ld’, упрощающие настройку окружения для кросс-компиляции;
Pêşniyarbûn
Реализована утилита CHCP для настройки кодировки консоли;
Реализована утилита MSIDB для манипуляции с базами в формате MSI;
Performansa çêtirîn
Различные функции работы со временем переведены на использование высокопроизводительных системных функций работы с таймером, что позволило снизить накладные расходы в цикле отрисовки многих игр;
Добавлена возможность использования в ФС Ext4 rejîm работы без учёта регистра символов;
Проведена оптимизация производительности обработки большого числа элементов в диалогах вывода списков, работающих в режиме LBS_NODATA;
Добавлена более быстрая реализация SRW-блокировок (Slim Reader/Writer) для Linux, переведённая на Futex;
Girêdanên derve
Для сборки модулей в формате PE задействован кросс-компилятор MinGW-w64;
Реализация XAudio2 требует наличия библиотеки FAudio;
Для отслеживания изменений файлов на системах BSD
задействована библиотека Inotify;
Для обработки исключений на платформе ARM64 необходима библиотека Unwind;
Вместо Video4Linux1 теперь требуется библиотека Video4Linux2.