Po roce vývoje a 28 experimentálních verzích stabilní vydání open-source implementace Win32 API — , které zahrnuje více než 7400 změn. Mezi klíčová dosažení nové verze patří dodání integrovaných modulů Wine ve formátu PE, podpora více monitorových konfigurací, nová implementace zvukového API XAudio2 a podpora grafického API Vulkan 1.1.
Ve Wine plnohodnotná práce 4869 (před rokem 4737) programů pro Windows, dalších 4136 (před rokem 4045) programů skvěle funguje při dalším nastavení a externích DLL. U 3635 programů byly zaznamenány menší problémy, které nebrání používání základních funkcí aplikací.
Klíčové Wine 5.0:
- Moduly ve formátu PE
- Pokud máte kompilátor MinGW, většina modulů Wine je nyní sestavena ve formátu spustitelných souborů 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á zajišťují shodu identit systémových modulů na disku a v paměti;
- Spustitelné soubory PE jsou nyní kopírovány do adresáře ~\/wine ($WINEPREFIX) místo použití falešných DLL souborů, což činí strukturu více podobnou skutečným instalacím Windows, na úkor zvýšené spotřeby diskového prostoru;
- Moduly převedené do formátu PE mohou používat standardní C funkce a konstanty s Unicode (například, L"abc");
- Ve Wine C runtime byla přidána podpora pro propojení s binárními soubory sestavenými v MinGW, které se při sestavení DLL používá ve výchozím nastavení místo MinGW runtime;
- Grafický subsystém
- Byla přidána podpora pro práci s více monitory a grafickými adaptéry, včetně možnosti dynamicky měnit nastavení;
- Byl aktualizován ovladač pro grafické API Vulkan, který byl uveden do souladu se specifikací Vulkan 1.1.126;
- V knihovně WindowsCodecs byla implementována možnost převodu dalších rastrových formátů, včetně formátů s indexovanou paletou;
- Direct3D
- Při provádění aplikací na celé obrazovce Direct3D zajišťuje zablokování vyvolání screensaveru;
- Do DXGI (DirectX Graphics Infrastructure) byla přidána podpora pro informování aplikace o minimalizaci jejího okna, což aplikaci umožňuje snížit provádění náročných operací při minimalizaci okna;
- Pro aplikace využívající DXGI byla implementována možnost přepínání mezi celoobrazovkovým a oknovým režimem pomocí kombinace Alt+Enter;
- Byly rozšířeny možnosti implementace Direct3D 12, například podpora přepínání mezi celoobrazovkovým a oknovým režimem, změny obrazových režimů, výstup s měřítkem a řízení intervalu výměny vykreslovacích bufferů (swap interval);
- Bylo vylepšeno zpracování různých okrajových situací, jako je použití hodnot testů průhlednosti a hloubky přesahujících povolené rozmezí, vykreslování s odraženými texturami a buffery, použití neplatných objektů DirectDraw. , vytvoření zařízení Direct3 pro neplatná okna, použití viditelných oblastí, minimální hodnoty parametrů, jejichž hodnoty jsou shodné s maximálními, atd.
- Ve Direct3D 8 a 9 bylo zajištěno přesnější sledování „“ oblastí nahrávaných textur;
- Byla snížena velikost potřebného adresního prostoru při načítání 3D textur komprimovaných metodou S3TC (místo úplného načítání se textury načítají po částech).
- Bylo implementováno rozhraní pro ochranu kritických sekcí v multithreadových aplikacích;
- Pro starší aplikace DirectDraw bylo přidáno několik vylepšení a oprav souvisejících s výpočtem osvětlení;
- Byly implementovány další volání pro získání informací o shaderech v API ;
- Byla přidána podpora v wined3d na bázi CPU pro zpracování komprimovaných zdrojů;
- Byla rozšířena databáze grafických karet rozpoznávaných v Direct3D;
- Byly přidány nové klíče registru HKEY_CURRENT_USER\Software\Wine\Direct3D: „shader_backend“ (backend pro práci se shadery: „glsl“ pro GLSL, „arb“ pro ARB vertex/fragment a „none“ pro deaktivaci podpory shaderů), „strict_shader_math“ (0x1 — zapnout, 0x0 — vypnout převod shaderů Direct3D). Klíč „UseGLSL“ byl prohlášen za zastaralý (doporučuje se použít „shader_backend“);
- D3DX
- Byla implementována podpora mechanismu komprese 3D textur S3TC (S3 Texture Compression);
- Byly přidány správné implementace operací, jako je výplň textury a nepřístupné (unmappable) povrchy;
- Byla provedena různá vylepšení a opravy ve frameworku pro vytváření ;
- Jádro (rozhraní jádra Windows)
- Většina funkcí používaných v Kernel32 byla přesunuta do
KernelBase, v souladu se změnami v architektuře Windows; - Možnost kombinování 32- a 64-bitových DLL v adresářích používaných pro načítání. Zajištěno ignorování knihoven, které neodpovídají aktuální bitové hloubce (32/64), pro případ, že by se v cestě našla správná knihovna pro aktuální bitovou hloubku;
- Zlepšená emulace objektů jádra pro ovladače zařízení;
- Implementovány objekty synchronizace na úrovni jádra, jako jsou spin-zámky, rychlé mutexy a na zdroj připojitelné proměnné;
- Zajištěno správné informování aplikací o stavu baterie;
- Většina funkcí používaných v Kernel32 byla přesunuta do
- Uživatelské rozhraní a integrace s pracovní plochou
- Minimalizovaná okna nyní zobrazují pomocí záhlaví, nikoli ikonky ve stylu Windows 3.1;
- Přidány nové styly tlačítek (tlačítko s rozbalovací nabídkou akcí) a (odkazy v dialogových oknech, které se používají pro přechod na další fázi);
- 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í je zajištěna instalace a načtení potřebných ovladačů zařízení Plug & Play;
- Zlepšená podpora herních ovladačů, včetně mini-joysticku (hat switch), volantu, pedálů pro plyn a brzdy.
- Podpora starého Linux API pro interakci s joystickem, používaného v jádrech Linux do verze 2.2, byla ukončena;
- .NET
- Engin Mono byl aktualizován na verzi 4.9.4 a nyní obsahuje části frameworku Windows Presentation Foundation (WPF);
- Přidána možnost instalace doplňků s Mono a Gecko do jednoho společného adresáře se umístěním souborů v hierarchii /usr/share/wine místo kopírování do nových prefixů;
- Síťové funkce
- Prohlížečový engin Wine Gecko, který se používá v knihovně MSHTML, byl aktualizován na verzi 2.47.1. Implementována podpora nových HTML API;
- Ve MSHTML byla implementována podpora pro SVG prvky;
- Přidány mnohé nové funkce VBScript (např. zpracovatelé chyb a výjimek, funkce Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* a ScriptTypeComp_Bind* atd.);
- Zajištěno uchování stavu kódu v VBScript a JScript (persistence scriptu);
- Přidána počáteční implementace služby HTTP (WinHTTP) a souvisejícího API (HTTPAPI) pro klientské a serverové aplikace, které odesílají a přijímají požadavky pomocí protokolu HTTP;
- Implementováno získání nastavení HTTP proxy pomocí DHCP;
- Byla přidána podpora přesměrování autentizačních požadavků prostřednictvím služby Microsoft Passport;
- Kryptografie
- Byla implementována podpora kryptografických klíčů na základě eliptických křivek (ECC) při použití GnuTLS;
- Byla přidána možnost importu klíčů a certifikátů z souborů ve formátu PFX;
- Byla přidána podpora schématu generování klíčů na základě hesla PBKDF2;
- Text a písma
- V implementaci API DirectWrite byla přidána podpora funkcí OpenType souvisejících s , které jsou ve výchozím nastavení zahrnuty pro písmo Latin, včetně kerningu;
- Byla zvýšena bezpečnost zpracování dat písem díky kontrole správnosti různých datových tabulek před jejich použitím;
- Rozhraní DirectWrite byla přizpůsobena novému SDK;
- Zvuk a video
- Byla navržena nová implementace zvukového API , postavená na projektu . Použití FAudio ve Wine přináší vyšší kvalitu zvuku ve hrách a umožňuje využití takových funkcí jako míchání hlasitosti a rozšířené zvukové efekty;
- Bylo přidáno velké množství nových volání do implementace frameworku Media Foundation, včetně podpory vestavěných a uživatelských asynchronních front, Source Reader API, Media Session atd.
- Filtr pro zachycení videa byl převeden na použití API v4l2 namísto v4l1 API, což rozšířilo rozsah podporovaných kamer;
- Byly odstraněny vestavěné dekodéry AVI, MPEG-I a WAVE, místo nich se nyní používají systémové GStreamer nebo QuickTime;
- Byla přidána podmnožina konfiguračních API VMR7;
- Do zvukových ovladačů byla přidána podpora nastavení hlasitosti jednotlivých kanálů;
- Mezinárodní standardizace
- Tabulky Unicode byly aktualizovány na verzi 12.1.0;
- Byla implementována podpora normalizace Unicode;
- Bylo zajištěno automatické nastavení geografické oblasti (HKEY_CURRENT_USER\Control Panel\International\Geo) na základě aktuální locale;
- RPC/COM
- Do typelib byla přidána podpora složitých struktur a polí;
- Byla přidána základní implementace runtime knihovny Windows Script;
- Byla přidána základní implementace knihovny ADO (Microsoft ActiveX Data Objects);
- Instalátory
- Pro instalátor MSI byla implementována podpora dodání záplat (Patch Files);
- V užitkové WUSA (Windows Update Standalone Installer) se objevila možnost instalace aktualizací ve formátu .MSU;
- Platforma ARM
- Pro architekturu ARM64 byla do ntdll přidána podpora rozbalování zásobníku (stack unwinding). Byla přidána podpora pro připojení externích knihoven libunwind;
- Pro architekturu ARM64 byla implementována podpora bezproxy (stubless proxies) pro objektové rozhraní;
- Nástroje pro vývoj / Winelib
- Byla přidána možnost použití debuggeru z Visual Studia pro vzdálené ladění aplikací spuštěných ve Wine;
- Částečně byla implementována knihovna DBGENG (Debug Engine);
- Sestavené spustitelné soubory pro Windows již nejsou závislé na libwine, což umožňuje jejich spuštění ve Windows bez dodatečných závislostí;
- Do Resource Compiler a IDL Compiler byla přidána možnost ‘—sysroot’ pro určení cesty umístění hlavičkových souborů;
- Do winegcc byly přidány možnosti ‘—target’, ‘—wine-objdir’,
‘—winebuild’ a ‘-fuse-ld’, což usnadňuje nastavení prostředí pro křížové kompilace;
- Vestavěné aplikace
- Byl implementován nástroj CHCP pro nastavení kódování konzole;
- Byl implementován nástroj MSIDB pro manipulaci s databázemi ve formátu MSI;
- Optimalizace výkonu
- Různé funkce práce s časem byly převedeny na používání vysoce výkonných systémových funkcí pro práci s časovačem, což snížilo režijní náklady v cyklu vykreslování mnoha her;
- Byla přidána možnost použití v systému souborů Ext4 práce bez ohledu na velká a malá písmena;
- Byla provedena optimalizace výkonu zpracování velkého počtu prvků v dialozích výstupních seznamů pracujících v režimu LBS_NODATA;
- Byla přidána rychlejší implementace SRW zámků (Slim Reader/Writer) pro Linux, převedená na Futex;
- Externí závislosti
- Pro sestavení modulů ve formátu PE byl použit křížový kompilátor MinGW-w64;
- Implementace XAudio2 vyžaduje knihovnu FAudio;
- Pro sledování změn souborů na systémech BSD
byla využ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.
Zdroj: opennet.ru
