Po roku vývoja a 28 experimentálnych verziách predložené stabilné vydanie otvorenej implementácie Win32 API - Víno 5.0, ktorá zahŕňala viac ako 7400 2 zmien. Medzi kľúčové úspechy novej verzie patrí dodávka vstavaných modulov Wine vo formáte PE, podpora konfigurácií viacerých monitorov, nová implementácia audio API XAudio1.1 a podpora grafického API Vulkan XNUMX.
Vo víne potvrdené plná prevádzka 4869 (pred rokom 4737) programov pre Windows, ďalších 4136 (pred rokom 4045) programov funguje perfektne s dodatočnými nastaveniami a externými DLL. 3635 XNUMX programov má menšie problémy s výkonom, ktoré nezasahujú do používania základných funkcií aplikácie.
S kompilátorom MinGW je teraz väčšina modulov Wine postavená vo formáte spustiteľného súboru PE (Portable Executable, používaný v systéme Windows) namiesto ELF. Použitie PE rieši problémy s podporou rôznych schém ochrany proti kopírovaniu, ktoré overujú identitu systémových modulov na disku a v pamäti;
PE spustiteľné súbory sa teraz skopírujú do adresára ~/.wine ($WINEPREFIX) namiesto použitia fiktívnych súborov DLL, čím sa veci viac podobajú skutočným inštaláciám Windows, za cenu spotreby dodatočného miesta na disku;
Moduly konvertované do formátu PE môžu používať štandard wchar C funkcie a konštanty s Unicode (napríklad L"abc");
Runtime Wine C pridalo podporu pre prepojenie s binárnymi súbormi zabudovanými v MinGW, ktoré sa štandardne používa namiesto MinGW runtime pri vytváraní DLL;
Grafický subsystém
Pridaná podpora pre prácu s viacerými monitormi a grafickými adaptérmi vrátane možnosti dynamicky meniť nastavenia;
Ovládač pre grafické rozhranie API Vulkan bol aktualizovaný tak, aby vyhovoval špecifikácii Vulkan 1.1.126;
Knižnica WindowsCodecs poskytuje možnosť konvertovať ďalšie rastrové formáty vrátane formátov s indexovanou paletou;
Direct3D
Pri spustení aplikácií Direct3D na celú obrazovku je volanie šetriča obrazovky zablokované;
DXGI (DirectX Graphics Infrastructure) pridala podporu pre informovanie aplikácie, keď je jej okno minimalizované, čo umožňuje aplikácii znížiť výkon operácií náročných na zdroje pri minimalizácii okna;
Pre aplikácie využívajúce DXGI je teraz možné prepínať medzi režimom celej obrazovky a oknami pomocou kombinácie Alt+Enter;
Možnosti implementácie Direct3D 12 boli rozšírené, napríklad teraz existuje podpora pre prepínanie medzi režimom celej obrazovky a oknami, zmena režimov obrazovky, škálovanie výstupu a správa intervalu výmeny vyrovnávacej pamäte vykresľovania (interval výmeny);
Vylepšené spracovanie rôznych hraničných situácií, ako napríklad používanie vstupných hodnôt mimo rozsahu pre testy transparentnosti a hĺbky, vykresľovanie s odrazenými textúrami a vyrovnávacími pamäťami a používanie nesprávnych objektov DirectDraw lietadlo, vytváranie zariadení Direct3 pre nesprávne okná, používanie viditeľných oblastí, ktorých minimálne hodnoty parametrov sa rovnajú maximu atď.
Direct3D 8 a 9 poskytujú presnejšie sledovanie "špinavý» oblasti načítaných textúr;
Veľkosť požadovaného adresného priestoru pri načítaní 3D textúr komprimovaných metódou S3TC bola znížená (namiesto úplného načítania sa textúry načítavajú po častiach).
Rozhranie implementované ID3D11Viacvláknové na ochranu kritických častí vo viacvláknových aplikáciách;
Pre staršie aplikácie DirectDraw boli vykonané rôzne vylepšenia a opravy týkajúce sa výpočtov osvetlenia;
Implementované dodatočné volania na získanie informácií o shaderoch v API ShaderReflection;
wined3d teraz podporuje blitter CPU na spracovanie komprimovaných zdrojov;
Databáza grafických kariet rozpoznaných v Direct3D bola rozšírená;
Pridané nové kľúče registra HKEY_CURRENT_USER\Software\Wine\Direct3D: “shader_backend” (backend pre prácu s shadermi: “glsl” pre GLSL, “arb” pre ARB vertex/fragment a “none” na zakázanie podpory shaderov), “strict_shader_math” ( 0x1 - povoliť, 0x0 - vypnúť konverziu Direct3D shaderov). Zastaraný kľúč "UseGLSL" (malo by sa používať "shader_backend");
D3DX
Bola implementovaná podpora pre mechanizmus kompresie 3D textúr S3TC (S3 Texture Compression);
Pridané správne implementácie operácií, ako je vyplnenie textúry a nemapovateľné povrchy;
V rámci vytvárania boli vykonané rôzne vylepšenia a opravy vizuálne efekty;
Kernel (rozhrania jadra systému Windows)
Väčšina funkcií používaných v Kernel32 bola presunutá do
KernelBase, po zmenách v architektúre Windows;
Schopnosť kombinovať 32- a 64-bitové knižnice DLL v adresároch používaných na načítanie. Zabezpečuje, že knižnice, ktoré nezodpovedajú aktuálnej bitovej hĺbke, budú ignorované (32/64), v prípade, že ďalej po ceste je možné nájsť knižnicu, ktorá je správna pre aktuálnu bitovú hĺbku;
Pre ovládače zariadení bola vylepšená emulácia objektov jadra;
Implementované synchronizačné objekty pracujúce na úrovni jadra, ako sú spinové zámky, rýchle mutexy a premenné pripojené k prostriedku;
Zabezpečuje, aby boli aplikácie správne informované o stave batérie;
Používateľské rozhranie a integrácia pracovnej plochy
Minimalizované okná sa teraz zobrazujú pomocou záhlavia namiesto ikony v štýle Windows 3.1;
Pridané nové štýly tlačidiel SplitButton (tlačidlo s rozbaľovacím zoznamom akcií) a Odkazy na príkazy (odkazy v dialógových oknách slúžiace na prechod do ďalšej fázy);
Pre priečinky „Downloads“ a „Templates“ boli vytvorené symbolické odkazy, ktoré ukazujú na zodpovedajúce adresáre v systémoch Unix;
Vstupné zariadenia
Pri spustení sa nainštalujú a načítajú potrebné ovládače zariadení Plug & Play;
Vylepšená podpora pre herné ovládače, vrátane mini-joysticku (klobúkového spínača), volantu, plynového a brzdového pedála.
Podpora starého linuxového joysticku API používaného v linuxových jadrách pred verziou 2.2 bola ukončená;
. NET
Mono engine bol aktualizovaný na vydanie 4.9.4 a teraz obsahuje časti rámca Windows Presentation Foundation (WPF);
Pridaná možnosť inštalovať doplnky s Mono a Gecko do jedného spoločného adresára, umiestňovať súbory do hierarchie /usr/share/wine namiesto ich kopírovania do nových prefixov;
Sieťové funkcie
Motor prehliadača Wine Gecko, ktorý sa používa v knižnici MSHTML, bol aktualizovaný na verziu 2.47.1. Bola implementovaná podpora pre nové HTML API;
MSHTML teraz podporuje prvky SVG;
Pridané mnohé nové funkcie VBScript (napríklad obslužné programy chýb a výnimiek, funkcie hodín, dní, mesiacov, reťazcov, LBound, RegExp.Replace, РScriptTypeInfo_* a ScriptTypeComp_Bind* atď.);
Poskytnuté zachovanie stavu kódu vo VBScript a JScript (perzistencia skriptu);
Pridaná počiatočná implementácia služby HTTP (WinHTTP) a súvisiaceho rozhrania API (HTTPAPI) pre klientske a serverové aplikácie, ktoré odosielajú a prijímajú požiadavky pomocou protokolu HTTP;
Implementovaná možnosť získať nastavenia HTTP proxy cez DHCP;
Pridaná podpora pre presmerovanie žiadostí o overenie prostredníctvom služby Microsoft Passport;
kryptografie
Implementovaná podpora pre kryptografické kľúče eliptických kriviek (ECC) pri používaní GnuTLS;
Pridaná možnosť importovať kľúče a certifikáty zo súborov vo formáte PFX;
Pridaná podpora pre schému generovania kľúčov na základe hesla PBKDF2;
Text a fonty
Implementácia rozhrania DirectWrite API pridala podporu pre súvisiace funkcie OpenType umiestnenie glyfov, ktoré sú štandardne povolené pre latinský štýl, vrátane kerningu;
Vylepšené zabezpečenie spracovania údajov o písme kontrolou správnosti rôznych údajových tabuliek pred ich použitím;
Rozhrania DirectWrite boli zosúladené s najnovšou súpravou SDK;
Zvuk a video
Bola navrhnutá nová implementácia zvukového API XAudio2, postavený na základe projektu FAudio. Používanie FAudio vo víne vám umožňuje dosiahnuť vyššiu kvalitu zvuku v hrách a využívať funkcie, ako je miešanie hlasitosti a pokročilé zvukové efekty;
Do implementácie rámca Media Foundation bolo pridané veľké množstvo nových volaní, vrátane podpory pre vstavané a vlastné asynchrónne fronty, Source Reader API, Media Session atď.
Filter na zachytávanie videa sa zmenil na používanie v4l2 API namiesto v4l1 API, čím sa rozšíril rozsah podporovaných kamier;
Boli odstránené vstavané dekodéry AVI, MPEG-I a WAVE, namiesto ktorých sa teraz používa systém GStreamer alebo QuickTime;
Pridaná podmnožina konfiguračných API VMR7;
Pridaná podpora pre nastavenie hlasitosti jednotlivých kanálov zvukovým ovládačom;
Internacionalizácia
Unicode tabuľky aktualizované na verziu 12.1.0;
Implementovaná podpora pre normalizáciu Unicode;
Poskytnutá automatická inštalácia geografického regiónu (HKEY_CURRENT_USER\Control Panel\International\Geo) na základe aktuálneho miestneho nastavenia;
RPC/COM
Pridaná podpora pre zložité štruktúry a polia do typelib;
Pridaná počiatočná implementácia runtime knižnice Windows Script;
Pridaná počiatočná implementácia knižnice ADO (Microsoft ActiveX Data Objects);
Inštalatéri
Pre inštalačný program MSI bola implementovaná podpora doručovania záplat (súbory záplat);
Pomôcka WUSA (Windows Update Standalone Installer) má teraz možnosť inštalovať aktualizácie vo formáte .MSU;
platforma ARM
Pre architektúru ARM64 bola do ntdll pridaná podpora odvíjania zásobníka. Pridaná podpora pre pripojenie externých knižníc libunwind;
Pre architektúru ARM64 bola implementovaná podpora pre bezproblémové proxy pre objektové rozhrania;
Vývojové nástroje / Winelib
Pridaná možnosť použiť debugger z Visual Studia na vzdialené ladenie aplikácií bežiacich vo Wine;
Knižnica DBGENG (Debug Engine) bola čiastočne implementovaná;
Binárne súbory skompilované pre Windows už nezávisia od libwine, čo im umožňuje bežať na Windowse bez ďalších závislostí;
Pridaná možnosť '--sysroot' do kompilátora zdrojov a kompilátora IDL na určenie cesty k hlavičkovým súborom;
Do winegcc boli pridané možnosti „—target“, „—wine-objir“, „—wine-objir“
„—winebuild“ a „-fuse-ld“, ktoré zjednodušujú nastavenie prostredia pre krížovú kompiláciu;
Vstavané aplikácie
Implementovaný nástroj CHCP na konfiguráciu kódovania konzoly;
Bol implementovaný nástroj MSIDB na manipuláciu s databázami vo formáte MSI;
Optimalizácia výkonu
Rôzne funkcie časovania boli migrované tak, aby používali vysokovýkonné funkcie systémového časovača, čím sa znížila réžia v slučke vykresľovania mnohých hier;
Pridaná možnosť používať Ext4 vo FS režimu pracovať bez rozlišovania malých a veľkých písmen;
Výkon spracovania veľkého počtu prvkov v dialógových oknách zobrazenia zoznamu pracujúcich v režime LBS_NODATA bol optimalizovaný;
Pridaná rýchlejšia implementácia SRW zámkov (Slim Reader/Writer) pre Linux, preložená do Futexu;
Vonkajšie závislosti
Na zostavenie modulov vo formáte PE sa používa krížový kompilátor MinGW-w64;
Implementácia XAudio2 vyžaduje knižnicu FAudio;
Na sledovanie zmien súborov na systémoch BSD
používa sa knižnica Inotify;
Na spracovanie výnimiek na platforme ARM64 je potrebná knižnica Unwind;
Namiesto Video4Linux1 je teraz potrebná knižnica Video4Linux2.