Po roku vývoja a 28 experimentálnych verzií stabilné vydanie otvorenej implementácie Win32 API — , ktorá zahŕňa viac ako 7400 zmien. Medzi kľúčovými úspechmi novej verzie sa nachádza dodanie vstavaných modulov Wine vo formáte PE, podpora viacmonitorových konfigurácií, nová implementácia zvukového API XAudio2 a podpora grafického API Vulkan 1.1.
Vo Wine plnohodnotná prevádzka 4869 (pred rokom 4737) programov pre Windows, ešte 4136 (pred rokom 4045) programov funguje skvele pri ďalších nastaveniach a externých DLL. Pri 3635 programoch sú pozorované drobné problémy v prevádzke, ktoré nebránia používaniu základných funkcií aplikácií.
Kľúčové Wine 5.0:
- Moduly vo formáte PE
- Pri prítomnosti kompilátora MinGW väčšina modulov Wine teraz zostavuje vo formáte spustiteľných súborov PE (Portable Executable, aplikovanom vo 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;
- Spustiteľné súbory PE sa teraz kopírujú do adresára ~/.wine ($WINEPREFIX) namiesto používania fiktívnych DLL-súborov, čo robí obsah viac podobný skutočným inštaláciám Windows, na úkor väčšieho spotrebovaného diskového priestoru;
- Moduly, prevedené do formátu PE, môžu využívať štandardné C-funkcie a konštanty s unicode (napríklad L"abc");
- Vo Wine C runtime bola pridaná podpora pre prepojenie s binárnymi súbormi zostavenými v MinGW, ktorá sa pri zostavovaní DLL používa predvolene namiesto MinGW runtime;
- Grafický subsystém
- Pridaná podpora pre prácu s viacerými monitormi a grafickými adaptérmi, vrátane možnosti dynamicky meniť nastavenia;
- Aktualizovaný ovládač pre grafické API Vulkan, ktorý bol prispôsobený špecifikácii Vulkan 1.1.126;
- V knižnici WindowsCodecs bola implementovaná možnosť konverzie dodatočných rastrových formátov, vrátane formátov s indexovanou paletou;
- Direct3D
- Pri spúšťaní aplikácií na celú obrazovku Direct3D bola zabezpečená blokácia výzvy na ochranu obrazovky;
- V DXGI (DirectX Graphics Infrastructure) bola pridaná podpora informovania aplikácie o minimalizácii jej okna, čo umožňuje aplikácii znížiť vykonávanie náročných operácií pri znižovaní okna.
- Pre aplikácie využívajúce DXGI bola implementovaná možnosť prepínať medzi celoobrazovkovým a oknomovým režimom pomocou kombinácie Alt+Enter;
- Možnosti implementácie Direct3D 12 boli rozšírené, napríklad sa pridala podpora prepínania medzi celoobrazovkovým a oknomovým režimom, zmeny režimov obrazovky, výstup s prispôsobením a riadenie intervalu výmeny vykresľovacích bufrov (swap interval);
- Zlepšené spracovanie rôznych okrajových situácií, ako je použitie zdrojových hodnôt, ktoré presahujú povolené rozsahy pre testy priehľadnosti a hĺbky, vykresľovanie s odrazenými textúrami a buffermi, použitie nesprávnych objektov DirectDraw. , vytváranie zariadení Direct3 pre nesprávne okná, používanie viditeľných oblastí, minimálne hodnoty parametrov, ktorých maximálne hodnoty sú rovné a podobne.
- V Direct3D 8 a 9 je zabezpečené presnejšie sledovanie "" oblastí načítavaných textúr;
- Znížená veľkosť potrebného adresného priestoru pri načítavaní 3D textúr komprimovaných metódou S3TC (namiesto úplného načítania sa textúry načítavajú po kúskoch).
- Implementované rozhranie na ochranu kritických sekcií v viacvláknových aplikáciách;
- Pre staršie aplikácie DirectDraw boli vykonané rôzne vylepšenia a opravy súvisiace s výpočtom osvetlenia;
- Implementované ďalšie volania na získanie informácií o shadrových programoch v API ;
- V wined3d bola pridaná podpora na spracovanie komprimovaných zdrojov;
- Rozšírená databáza grafických kariet rozpoznávaných v Direct3D;
- Pridané nové kľúče registru HKEY_CURRENT_USER\Software\Wine\Direct3D: "shader_backend" (backend pre prácu so shadrami: "glsl" pre GLSL, "arb" pre ARB vertex/fragment a "none" pre vypnutie podpory shadrov), "strict_shader_math" (0x1 — zapnúť, 0x0 — vypnúť transformáciu shadrov Direct3D). Starý kľúč "UseGLSL" bol vyhlásený za zastaraný (je potrebné používať "shader_backend");
- D3DX
- Implementovaná podpora mechanizmu kompresie 3D textúr S3TC (S3 Texture Compression);
- Pridané správne implementácie takých operácií, ako je vyplnenie textúrou a neodraziteľné (unmappable) povrchy;
- Vykonané rôzne vylepšenia a opravy vo frameworku na vytváranie ;
- Jadro (rozhrania jadra Windows)
- Väčšina funkcií používaných v Kernel32 bola presunutá do
KernelBase, v súlade so zmenami v architektúre Windows; - Možnosť miešania 32- a 64-bitových DLL v adresároch používaných na načítanie. Zabezpečené ignorovanie knižníc, ktoré nezodpovedajú aktuálnej bitovej šírke (32/64), pre prípad, že neskôr v ceste sa nájde správna knižnica pre aktuálnu bitovú šírku;
- Pre ovládače zariadení bola vylepšená emulácia objektov jadra;
- Realizované objekty synchronizácie, ktoré pracujú na úrovni jadra, ako sú spin-zámky, rýchle mutexy a premenné viazané na zdroje;
- Zabezpečené správne informovanie aplikácií o stave batérie;
- Väčšina funkcií používaných v Kernel32 bola presunutá do
- Používateľské rozhranie a integrácia s pracovnou plochou
- Minimalizované okná sa teraz zobrazujú s použitím názvu, nie ikony v štýle Windows 3.1;
- Pridané nové štýly tlačidiel (tlačidlo s rozbaľovacím zoznamom akcií) a (linky v dialógových oknách, používané na prechod na ďalšiu fázu);
- Pre zložky 'Downloads' a 'Templates' boli vytvorené symbolické odkazy, ktoré ukazujú na zodpovedajúce adresáre v Unixových systémoch;
- Vstupné zariadenia
- Pri spustení bola zabezpečená inštalácia a načítanie potrebných ovládačov zariadení Plug & Play;
- Vylepšená podpora herných ovládačov, vrátane mini-joysticku (hat switch), volantu, pedálov na plyn a brzdy.
- Podpora starého Linux API interakcie s joystickmi, používaného v jadrach Linux do verzie 2.2, bola ukončená;
- .NET
- Engin Mono bol aktualizovaný na verziu 4.9.4 a teraz zahŕňa časti rámca Windows Presentation Foundation (WPF);
- Pridaná možnosť inštalácie doplnkov s Mono a Gecko do jedného spoločného adresára s umiestnením súborov v hierarchii /usr/share/wine namiesto kopírovania do nových prefixov;
- Network capabilities
- Prehliadačový engin Wine Gecko, ktorý sa používa v knižnici MSHTML, bol aktualizovaný na verziu 2.47.1. Implementovaná podpora nových HTML API;
- V MSHTML bola implementovaná podpora prvkov SVG;
- Pridané mnohé nové funkcie VBScript (napríklad obslužné rutiny chýb a výnimiek, funkcie Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* a ScriptTypeComp_Bind* atď.);
- Zabezpečené uchovávanie stavu kódu vo VBScript a JScript (persistence script);
- Pridaná počiatočná implementácia služby HTTP (WinHTTP) a súvisiaceho API (HTTPAPI) pre klientské a serverové aplikácie, ktoré odosielajú a prijímajú požiadavky pomocou protokolu HTTP;
- Zrealizovaná možnosť získania parametrov nastavenia HTTP-proxy cez DHCP;
- Pridaná podpora presmerovania autentifikačných požiadaviek cez službu Microsoft Passport;
- Kryptografia
- Zrealizovaná podpora kryptografických kľúčov na báze eliptických kriviek (ECC) pri použití GnuTLS;
- Pridaná možnosť importu kľúčov a certifikátov z súborov vo formáte PFX;
- Pridaná podpora schémy generovania kľúčov na základe hesla PBKDF2;
- Text a písma
- V implementácii API DirectWrite bola pridaná podpora funkcií OpenType, týkajúcich sa , ktoré sú predvolene zapnuté pre písmo Latin, vrátane kerningu;
- Zvýšená bezpečnosť spracovania fontových údajov prostredníctvom kontroly platnosti rôznych tabuliek údajov pred ich použitím;
- Rozhrania DirectWrite boli prispôsobené aktuálnemu SDK;
- Zvuk a video
- Navrhnutá nová implementácia zvukového API , postavená na základe projektu . Použitie FAudio v Wine umožňuje dosiahnuť vyššiu kvalitu zvuku v hrách a využiť takéto funkcie ako mixovanie hlasitosti a rozšírené zvukové efekty;
- Pridané veľké množstvo nových volaní do implementácie rámca Media Foundation, vrátane podpory vstavaných a používateľských asynchrónnych frontov, Source Reader API, Media Session a pod.
- Filtr na zachytávanie videa bol prevedený na používanie API v4l2 namiesto v4l1 API, čo umožnilo rozšíriť rozsah podporovaných kamier;
- Odstránené vstavané dekodéry AVI, MPEG-I a WAVE, namiesto ktorých sa teraz používajú systémové GStreamer alebo QuickTime;
- Pridaná podmnožina konfiguračných API VMR7;
- Do zvukových ovládačov bola pridaná podpora nastavenia hlasitosti jednotlivých kanálov;
- Internacionalizácia
- Unicode tabuľky boli aktualizované na verziu 12.1.0;
- Implementovaná podpora normalizácie Unicode;
- Zaistená automatická inštalácia geografického regiónu (HKEY_CURRENT_USER\Control Panel\International\Geo) na základe aktuálnej lokality;
- RPC/COM
- Do typelib bola pridaná podpora zložených štruktúr a polí;
- 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štalátory
- Pre inštalátor MSI bola implementovaná podpora dodávania patchov (Patch Files);
- V utilite WUSA (Windows Update Standalone Installer) sa objavila možnosť inštalácie aktualizácií vo formáte .MSU;
- Platforma ARM
- Pre architektúru ARM64 bola v ntdll pridaná podpora pre rozbalenie zásobníka (stack unwinding). Pridaná podpora pre pripojenie externých knižníc libunwind;
- Pre architektúru ARM64 bola implementovaná podpora bezšvových proxy (stubless proxies) pre rozhrania objektov;
- Nástroje pre vývoj / Winelib
- Pridaná možnosť aplikovania ladenia z Visual Studio pre vzdialené ladenie aplikácií, ktoré bežia v Wine;
- Čiastočne implementovaná knižnica DBGENG (Debug Engine);
- Zostavené spustiteľné súbory pre Windows už viac nezávisia od libwine, čo umožňuje ich spúšťanie vo Windows bez dodatočných závislostí;
- Do Resource Compiler a IDL Compiler bola pridaná možnosť ‘—sysroot’ na definovanie cesty k hlavičkovým súborom;
- Do winegcc boli pridané možnosti ‘—target’, ‘—wine-objdir’,
‘—winebuild’ a ‘-fuse-ld’, čo zjednodušuje nastavenie prostredia pre krížovú kompiláciu;
- Built-in applications
- Bola implementovaná utilita CHCP na nastavenie kódovania konzoly;
- Bola implementovaná utilita MSIDB na manipuláciu s databázami vo formáte MSI;
- Optimalizácia výkonu
- Rôzne funkcie práce s časom boli prevedené na použitie vysoko výkonných systémových funkcií práce s časovačom, čo umožnilo znížiť náklady v cykle vykresľovania mnohých hier;
- Pridaná možnosť používania v FS Ext4 práce bez ohľadu na veľkosť písmen;
- Bola vykonaná optimalizácia výkonu spracovania veľkého množstva prvkov v dialógoch výstupu zo zoznamu, pracujúcich v režime LBS_NODATA;
- Pridaná rýchlejšia implementácia SRW-zámkov (Slim Reader/Writer) pre Linux, prevedená na Futex;
- Externé závislosti
- Na zostavovanie modulov vo formáte PE bol zapojený krížový kompilátor MinGW-w64;
- Implementácia XAudio2 vyžaduje existenciu knižnice FAudio;
- Na sledovanie zmien súborov na systémoch BSD
bola použitá knižnica Inotify; - Na spracovanie výnimiek na platforme ARM64 je potrebná knižnica Unwind;
- Namiesto Video4Linux1 teraz vyžaduje knižnica Video4Linux2.
Zdroj: opennet.ru
