Stabilní vydání Wine 5.0

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.

Klíč inovace Víno 5.0:

  • Moduly ve formátu PE
    • 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.

Zdroj: opennet.ru

Přidat komentář