На 21 януари 2020 г. беше пусната официалната версия на Wine 5.0 — безплатен инструмент за стартиране на нативни Windows приложения в UNIX среда. Това е алтернативна, безплатна реализация на Windows API. Рекурсивната акроним WINE означава "Wine Is Not an Emulator".
След тази версия стоят около година разработка и над 7400 отделни промени. Водещият разработчик Александър Джулиард (Alexandre Julliard) подчертава четири:
- Поддръжка на модули във формат PE. Това решава проблемите с различните схеми за защита от копиране, които извършват сверка на системните модули на диска и в паметта.
- Поддръжка на множество монитори и много GPU, включително динамично променяне на настройките.
- Преимплементация на XAudio2 на базата на проекта FAudio, откритата реализация на звуковите библиотеки DirectX. Преминаването към FAudio позволява по-високо качество на звука в игрите, включва мачкане на звука, разширени звукови ефекти и други.
- Поддръжка на Vulkan 1.1.
По-подробно за основните нововъведения.
Модули PE
Ако имате компилатор MinGW, повечето модули на Wine вече се компилират в формат на изпълними файлове PE (Portable Executable, бинарен формат на Windows) вместо ELF.
Изпълнимите файлове PE сега се копират в директория ~/.wine вместо да се използват фиктивни DLL файлове, което прави приложенията да изглеждат по-близо до реалните инсталации на Windows.
Все още не всички модули са конвертирани в формат PE. Работата продължава.
Графична подсистема
Както беше споменато по-горе, добавена е поддръжка за работа с множество монитори и графични адаптери.
Драйверът Vulkan е актуализиран до спецификациите на Vulkan 1.1.126.
Освен това библиотеката WindowsCodecs сега поддържа допълнителни растерни формати, включително формати с индексирана палитра.
Direct3D
Приложенията с Direct3D в режим на цял екран вече блокират повикването на скрийнсейвера.
За приложенията с DXGI е реализирана възможност за превключване между режим на цял екран и прозоречен режим, чрез стандартната комбинация Alt+Enter.
Разширени функции на Direct3D 12: поддръжка на превключване между режим на цял екран и прозоречен режим, променливи режими на дисплея, представления с мащабиране и интервали на смяна на буферите за рендиране (swap interval). Всички тези функции вече бяха реализирани за предишни версии на Direct3D API.
Участниците в проекта внимателно работиха и отстраниха буквално стотици грешки, така че обработката на Wine на различни гранични ситуации беше подобрена. Сред тях са семплирането на 2D ресурси в 3D семплери и обратно, прилагането на изходни стойности извън допустимите диапазони за тестове за прозрачност и дълбочина, рендериране с отразени текстури и буфери, употреба на неправилни клипери (обект DirectDraw) и много друго.
Намален е размерът на необходимото адресно пространство при зареждане на 3D текстури, компресирани с метода S3TC (вместо да се зареждат напълно, текстурите се зареждат на части).
За старите приложения DirectDraw са направени различни подобрения и поправки, свързани с изчисляването на осветление.
Разширена е базата от графични карти, разпознаваеми в Direct3D.
Мрежа и криптография
Движокът Gecko е актуализиран до версия 2.47.1 за поддръжка на съвременни инструменти. Реализирани са редица нови HTML API.
В MSHTML е реализирана поддръжка на SVG елементи.
Добавени са много нови функции за VBScript (например, обработка на грешки и изключения).
Реализирана е възможността за получаване на параметри за настройка на HTTP прокси чрез DHCP.
В криптографската част е реализирана поддръжка на криптографски ключове на основата на елиптични криви (ECC) чрез GnuTLS, добавена е възможността за импортиране на ключове и сертификати от файлове във формат PFX, добавена е поддръжка на схема за генериране на ключове на базата на парола PBKDF2.
Adobe Photoshop CS6 под Wine
Други съществени нововъведения
- Поддръжка на спинлокове на ядрото NT.
- Благодарение на изтичането на патента за компресия на текстури DXTn и S3 стана възможно да бъдат включени в дефолтната реализация.
- Поддръжка на инсталиране на драйвери plug-and-play.
- Различни подобрения в DirectWrite.
- Подобрена поддръжка на Windows Media Foundation API.
- По-добра синхронизация на примитиви благодарение на реализирането на фютекси.
- Споделено използване на Wine-Mono за спестяване на място вместо опенсорсната реализация на .NET за всеки.
~/.wine. - Поддръжка на Unicode 12.0 и 12.1.
- Реализация на начален HTTP сервис (HTTP.sys) като замяна за Winsock API и IIS, в резултат на което производителността стана по-висока, отколкото при Windows Sockets API.
- По-добра съвместимост с отладчици на Windows.
- По-добра поддръжка на LLVM MinGW и подобрения в крос-компилацията на WineGCC.
Може да спомена и подобренията в потребителския интерфейс. Например, свитите прозорци сега се показват с помощта на заглавна лента, а не с икони в стил Windows 3.1. Подобрена е поддръжката на игрови контролери, включително hat switch, волан и педали.
От Wine са премахнати вградените декодери AVI, MPEG-I и WAVE, вместо които сега се използват системните GStreamer или QuickTime.
Добавена е възможността за прилагане на отладчика от Visual Studio за дистанционно отстраняване на проблеми в приложения, стартирани в Wine, частично е реализирана библиотеката DBGENG (Debug Engine), а зависимостта от libwine е премахната от файловете, събирани за Windows.
За оптимизиране на производителността различни функции, свързани с времето, са прехвърлени на високо производителни системни функции за работа с таймери, което е позволило намаляване на разходите в цикъла на рендиране на много игри. Направени са и други оптимизации на производителността.
Пълен списък с промените вижте. .
,
На сайта Поддържа се база данни с Windows приложения, съвместими с Wine. Ето лидерите по :
- Final Fantasy XI
- Adobe Photoshop CS6 (13.0)
- World of Warcraft 8.3.0
- EVE Online Current
- Magic: The Gathering Online 4.x
Може да се предположи, че тези приложения най-често се стартират в Wine.
Забележка. Изданието Wine 5.0 е посветено на паметта на Юзеф Кучия (Józef Kucia), който tragично загина през август 2019 година на 30-годишна възраст, изследвайки пещера на юг от Полша. Юзеф беше важен участник в разработката на Direct3D Wine и водещ автор на проекта. По време на работата си над Wine той е направил над 2500 пача.

Източник: habr.com
