Stabilní vydání Wine 5.0

Po roce vývoje a 28 experimentálních verzích byl představen stabilní vydání open-source implementace Win32 API — Wine 5.0, 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 byla potvrzena 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é novinky 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í wchar 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. clipper, 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í „špinavých“ 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í ID3D11Multithread 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 ShaderReflection;
    • Byla přidána podpora v wined3d blitteru 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í vizuálních efektů;
  • 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;
  • 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 SplitButton (tlačítko s rozbalovací nabídkou akcí) a Command Links (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 pozicionováním glifů, 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 XAudio2, postavená na projektu FAudio. 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 režimu 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

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster