Po roce vývoje a 28 experimentálních verzích prezentovány stabilní vydání otevřené implementace Win32 API - Víno 5.0, která zahrnovala více než 7400 2 změn. Mezi klíčové úspěchy nové verze patří dodávka vestavěných modulů Wine ve formátu PE, podpora konfigurací s více monitory, nová implementace audio API XAudio1.1 a podpora grafického API Vulkan XNUMX.
Ve Víně potvrzeno plný provoz 4869 (před rokem 4737) programů pro Windows, dalších 4136 (před rokem 4045) programů funguje perfektně s dodatečným nastavením a externími DLL. 3635 XNUMX programů má drobné problémy s výkonem, které nenarušují používání základních funkcí aplikace.
S kompilátorem MinGW je nyní většina modulů Wine postavena ve formátu spustitelného souboru PE (Portable Executable, používaný ve Windows) namísto ELF. Použití PE řeší problémy s podporou různých schémat ochrany proti kopírování, která ověřují identitu systémových modulů na disku a v paměti;
Spustitelné soubory PE jsou nyní zkopírovány do adresáře ~/.wine ($WINEPREFIX) namísto použití fiktivních souborů DLL, díky čemuž se věci více podobají skutečným instalacím Windows za cenu spotřeby dalšího místa na disku;
Moduly převedené do formátu PE mohou používat standard wchar C funkce a konstanty s Unicode (například L"abc");
Runtime Wine C přidalo podporu pro propojení s binárními soubory vestavěnými v MinGW, které se ve výchozím nastavení používá místo běhového prostředí MinGW při vytváření DLL;
Grafický subsystém
Přidána podpora pro práci s více monitory a grafickými adaptéry, včetně možnosti dynamicky měnit nastavení;
Ovladač pro grafické rozhraní API Vulkan byl aktualizován, aby odpovídal specifikaci Vulkan 1.1.126;
Knihovna WindowsCodecs poskytuje možnost převádět další rastrové formáty, včetně formátů s indexovanou paletou;
Direct3D
Při spouštění aplikací Direct3D na celou obrazovku je volání spořiče obrazovky blokováno;
DXGI (DirectX Graphics Infrastructure) přidala podporu pro informování aplikace, když je její okno minimalizováno, což umožňuje aplikaci snížit výkon operací náročných na zdroje při minimalizaci okna;
U aplikací využívajících DXGI je nyní možné přepínat mezi režimem celé obrazovky a režimem v okně pomocí kombinace Alt+Enter;
Možnosti implementace Direct3D 12 byly rozšířeny, nově je například podporováno přepínání mezi celoobrazovkovým a okenním režimem, změna režimů obrazovky, škálování výstupu a správa intervalu výměny vykreslovací vyrovnávací paměti (swap interval);
Vylepšené zpracování různých hraničních situací, jako je použití vstupních hodnot mimo rozsah pro testy průhlednosti a hloubky, vykreslování s odraženými texturami a vyrovnávacími pamětmi a používání nesprávných objektů DirectDraw letadlo, vytváření zařízení Direct3 pro nesprávná okna pomocí viditelných oblastí, jejichž minimální hodnoty parametrů se rovnají maximu atd.
Direct3D 8 a 9 poskytují přesnější sledování "špinavý» oblasti načtených textur;
Velikost požadovaného adresního prostoru při načítání 3D textur komprimovaných metodou S3TC byla zmenšena (místo úplného načítání se textury načítají po částech).
Rozhraní implementováno ID3D11Vícevláknové k ochraně kritických částí ve vícevláknových aplikacích;
U starších aplikací DirectDraw byla provedena různá vylepšení a opravy související s výpočty osvětlení;
Implementována další volání pro získání informací o shaderech v API ShaderReflection;
wined3d nyní podporuje blitter CPU založené na zpracování komprimovaných zdrojů;
Databáze grafických karet rozpoznávaných v Direct3D byla rozšířena;
Přidány nové klíče registru HKEY_CURRENT_USER\Software\Wine\Direct3D: „shader_backend“ (backend pro práci s shadery: „glsl“ pro GLSL, „arb“ pro vertex/fragment ARB a „none“ pro zakázání podpory shaderů), „strict_shader_math“ ( 0x1 - povolit, 0x0 - zakázat konverzi Direct3D shaderů). Zastaralý klíč "UseGLSL" (měl by používat "shader_backend");
D3DX
Byla implementována podpora 3D mechanismu komprese textur S3TC (S3 Texture Compression);
Přidány správné implementace operací, jako je vyplnění textur a nemapovatelné povrchy;
V rámci vytváření byla provedena různá vylepšení a opravy vizuální efekty;
Kernel (rozhraní jádra systému Windows)
Většina funkcí používaných v Kernel32 byla přesunuta
KernelBase, po změnách v architektuře Windows;
Schopnost kombinovat 32- a 64-bitové DLL v adresářích používaných pro načítání. Zajišťuje, že knihovny, které neodpovídají aktuální bitové hloubce, budou ignorovány (32/64), v případě, že dále po cestě je možné najít knihovnu, která je správná pro aktuální bitovou hloubku;
U ovladačů zařízení byla vylepšena emulace objektů jádra;
Implementované synchronizační objekty pracující na úrovni jádra, jako jsou zámky otáčení, rychlé mutexy a proměnné připojené ke zdroji;
Zajišťuje, aby byly aplikace správně informovány o stavu baterie;
Integrace uživatelského rozhraní a pracovní plochy
Minimalizovaná okna se nyní zobrazují pomocí záhlaví, nikoli pomocí ikony stylu Windows 3.1;
Přidány nové styly tlačítek SplitButton (tlačítko s rozevíracím seznamem akcí) a Odkazy na příkazy (odkazy v dialogových oknech sloužící k přechodu do další fáze);
Pro složky 'Downloads' a 'Templates' byly vytvořeny symbolické odkazy, které ukazují na odpovídající adresáře v systémech Unix;
Vstupní zařízení
Při spuštění se nainstalují a načtou potřebné ovladače zařízení Plug & Play;
Vylepšená podpora pro herní ovladače, včetně minijoysticku (kloboučkový spínač), volantu, plynového a brzdového pedálu.
Podpora starého linuxového joysticku API používaného v linuxových jádrech před verzí 2.2 byla ukončena;
. NET
Modul Mono byl aktualizován na verzi 4.9.4 a nyní obsahuje části rámce Windows Presentation Foundation (WPF);
Přidána možnost instalovat doplňky s Mono a Gecko do jednoho společného adresáře, umístění souborů do hierarchie /usr/share/wine namísto jejich kopírování do nových předpon;
Síťové funkce
Prohlížeč Wine Gecko, který se používá v knihovně MSHTML, byl aktualizován na verzi 2.47.1. Byla implementována podpora nových HTML API;
MSHTML nyní podporuje prvky SVG;
Přidáno mnoho nových funkcí VBScript (například obslužné rutiny chyb a výjimek, funkce hodin, dne, měsíce, řetězce, LBound, RegExp.Replace, РScriptTypeInfo_* a ScriptTypeComp_Bind* atd.);
Zajištěno zachování stavu kódu ve VBScript a JScript (perzistence skriptu);
Přidána počáteční implementace služby HTTP (WinHTTP) a souvisejícího rozhraní API (HTTPAPI) pro klientské a serverové aplikace, které odesílají a přijímají požadavky pomocí protokolu HTTP;
Implementována možnost získat nastavení HTTP proxy přes DHCP;
Přidána podpora pro přesměrování požadavků na ověření prostřednictvím služby Microsoft Passport;
Kryptografie
Implementována podpora pro kryptografické klíče eliptické křivky (ECC) při použití GnuTLS;
Přidána možnost importovat klíče a certifikáty ze souborů ve formátu PFX;
Přidána podpora pro schéma generování klíčů na základě hesla PBKDF2;
Text a písma
Implementace rozhraní DirectWrite API přidala podporu pro související funkce OpenType umístění glyfů, které jsou standardně povoleny pro latinský styl, včetně vyrovnání párů;
Vylepšené zabezpečení zpracování dat písem kontrolou správnosti různých datových tabulek před jejich použitím;
Rozhraní DirectWrite byla uvedena do souladu s nejnovější sadou SDK;
Zvuk a video
Byla navržena nová implementace zvukového API XAudio2, postavený na základě projektu FAudio. Použití FAudio ve Wine umožňuje dosáhnout vyšší kvality zvuku ve hrách a využívat funkce, jako je míchání hlasitosti a pokročilé zvukové efekty;
Do implementace frameworku Media Foundation bylo přidáno velké množství nových volání, včetně podpory vestavěných a vlastních asynchronních front, Source Reader API, Media Session atd.
Filtr pro zachycení videa byl přepnut na použití v4l2 API místo v4l1 API, což rozšířilo řadu podporovaných kamer;
Byly odstraněny vestavěné dekodéry AVI, MPEG-I a WAVE, místo kterých je nyní použit systém GStreamer nebo QuickTime;
Přidána podmnožina konfiguračních API VMR7;
Přidána podpora pro úpravu hlasitosti jednotlivých kanálů zvukovým ovladačům;
Internacionalizace
Unicode tabulky aktualizovány na verzi 12.1.0;
Implementována podpora normalizace Unicode;
Poskytuje automatickou instalaci geografické oblasti (HKEY_CURRENT_USER\Control Panel\International\Geo) na základě aktuálního národního prostředí;
RPC/COM
Přidána podpora pro složité struktury a pole do typelib;
Přidána počáteční implementace runtime knihovny Windows Script;
Přidána počáteční implementace knihovny ADO (Microsoft ActiveX Data Objects);
Instalatéři
Pro instalační program MSI byla implementována podpora pro doručování záplat (patch Files);
Nástroj WUSA (Windows Update Standalone Installer) nyní umožňuje instalovat aktualizace ve formátu .MSU;
platforma ARM
Pro architekturu ARM64 byla do ntdll přidána podpora pro odvíjení zásobníku. Přidána podpora pro připojení externích knihoven libunwind;
Pro architekturu ARM64 byla implementována podpora bezproblémových proxy pro objektová rozhraní;
Vývojové nástroje / Winelib
Přidána možnost používat debugger ze sady Visual Studio ke vzdálenému ladění aplikací běžících ve Wine;
Knihovna DBGENG (Debug Engine) byla částečně implementována;
Binární soubory zkompilované pro Windows již nezávisí na libwine, což jim umožňuje běžet na Windows bez dalších závislostí;
Přidána možnost '--sysroot' do Resource Compiler a IDL Compiler pro určení cesty k souborům záhlaví;
Přidány možnosti '—target', '—wine-objdr' do winegcc
'—winebuild' a '-fuse-ld', které zjednodušují nastavení prostředí pro křížovou kompilaci;
Vestavěné aplikace
Implementován nástroj CHCP pro konfiguraci kódování konzoly;
Byla implementována utilita MSIDB pro manipulaci s databázemi ve formátu MSI;
Optimalizace výkonu
Různé funkce časování byly migrovány tak, aby využívaly vysoce výkonné systémové funkce časovače, což snižuje režii ve smyčce vykreslování mnoha her;
Přidána možnost používat Ext4 ve FS režim pracovat bez rozlišování malých a velkých písmen;
Byl optimalizován výkon zpracování velkého počtu prvků v dialozích zobrazení seznamu pracujících v režimu LBS_NODATA;
Přidána rychlejší implementace SRW zámků (Slim Reader/Writer) pro Linux, přeložená do Futexu;
Vnější závislosti
Pro sestavení modulů ve formátu PE se používá křížový kompilátor MinGW-w64;
Implementace XAudio2 vyžaduje knihovnu FAudio;
Ke sledování změn souborů na systémech BSD
je použita knihovna Inotify;
Pro zpracování výjimek na platformě ARM64 je nutná knihovna Unwind;
Místo Video4Linux1 je nyní vyžadována knihovna Video4Linux2.