На 21 януари 2020 г. се състоя официалният релиз на стабилната версия — безплатен инструмент за стартиране на нативни 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), а от събраните за Windows файлове е премахната зависимостта от libwine.
За оптимизация на производителността различни функции за работа с времето са пренасочени към използването на високопроизводителни системни функции за работа с таймери, което е позволило да се намалят разходите в цикъла на показване на много игри. Направени са и други оптимизации на производителността.
Пълен списък с промените виж. .
,
На сайта поддържа база данни с 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), който трагично почина през август 2019 година на 30 години, докато изследваше пещера на юг от Полша. Юзеф беше важен участник в разработката на Direct3D Wine и водещ автор на проекта. По време на работата си по Wine е внесъл повече от 2500 патча.

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