21. ledna 2020 byl oficiálně vydán stabilní verze — svobodného nástroje pro spuštění nativních Windows programů v UNIX prostředí. Je to alternativní, svobodná implementace Windows API. Rekurzivní akronym WINE znamená "Wine Is Not an Emulator".
Tato verze byla vyvíjena přibližně rok a zahrnuje více než 7400 jednotlivých změn. Vedoucí vývojář Alexandre Julliard vyzdvihuje čtyři:
- Podpora modulů ve formátu PE. To řeší problémy s různými schématy ochrany proti kopírování, která provádějí kontrolu systémových modulů na disku a v paměti.
- Podpora více monitorů a více GPU, včetně dynamického měnění nastavení.
- Reimplementace XAudio2 na základě projektu FAudio, otevřené implementace zvukových knihoven DirectX. Přechod na FAudio umožňuje dosáhnout vyšší kvality zvuku ve hrách, využít směšování hlasitosti, rozšířené zvukové efekty a další.
- Podpora Vulkan 1.1.
Podrobněji o klíčových novinkách.
Moduly PE
Při použití kompilátoru MinGW se nyní většina modulů Wine skládá ve formátu spustitelných souborů PE (Portable Executable, binární formát Windows) místo ELF.
Spustitelné soubory PE se nyní kopírují do adresáře ~/.wine namísto používání fiktivních DLL souborů, což činí aplikace podobnějšími skutečným instalacím Windows.
Zatím nebyly všechny moduly převedeny do formátu PE. Práce pokračuje.
Grafický subsystém
Jak již bylo zmíněno, byla přidána podpora pro práci s více monitory a grafickými adaptéry.
Ovladač Vulkan byl aktualizován na specifikace Vulkan 1.1.126.
Kromě toho nyní knihovna WindowsCodecs podporuje další rastrové formáty, včetně formátů s indexovanou paletou.
Direct3D
Celoplošné aplikace Direct3D nyní blokují volání screensaveru.
Pro aplikace DXGI byla implementována možnost přepínání mezi celoplošným a oknovým režimem pomocí standardní kombinace Alt+Enter.
Možnosti Direct3D 12 byly rozšířeny: podpora přepínání mezi celoplošným a oknovým režimem, změny režimů obrazovky, zobrazení s měřítkem a intervaly výměny vykreslovacích bufferů (swap interval). Všechny tyto funkce byly již implementovány pro předchozí verze Direct3D API.
Účastníci projektu důkladně pracovali a odstranili doslova stovky chyb, takže se zlepšilo zpracování různých hraničních situací ve Wine. Mezi nimi je vzorkování 2D zdrojů v 3D vzorkovačích a naopak, použití hodnot překračujících povolené intervaly pro testy průhlednosti a hloubky, vykreslování s odraženými texturami a buffery, použití nesprávných klipérů (objekt DirectDraw) a mnoho dalšího.
Zmenšena velikost potřebného adresního prostoru při načítání 3D textur stlačených metodou S3TC (město na kusy, textury se načítají po částech).
Pro staré aplikace DirectDraw byly provedeny různé zlepšení a opravy týkající se výpočtu osvětlení.
Byla rozšířena databáze grafických karet rozpoznávaných v Direct3D.
Síť a kryptografie
Engin Gecko byl aktualizován na verzi 2.47.1 na podporu moderních nástrojů. Byla realizována řada nových HTML API.
V MSHTML byla implementována podpora SVG elementů.
Přidáno mnoho nových funkcí VBScript (např. zpracovatelé chyb a výjimek).
Byla realizována možnost získání parametrů nastavení HTTP proxy prostřednictvím DHCP.
V kryptografické části byla implementována podpora kryptografických klíčů na základě eliptických křivek (ECC) prostřednictvím GnuTLS, přidána možnost importu klíčů a certifikátů z PFX souborů, přidána podpora klíčového generování na základě hesla PBKDF2.
Adobe Photoshop CS6 pod Wine
Další významné inovace
- Podpora jádrových spinlocků NT.
- Díky vypršení patentu na kompresi textur DXTn a S3 bylo možné je zařadit do výchozí implementace.
- Podpora instalace ovladačů plug-and-play.
- Různá zlepšení DirectWrite.
- Zlepšená podpora Windows Media Foundation API.
- Lepší synchronizace primitiv díky implementaci na futexech.
- Společné využívání Wine-Mono na úsporu místa místo open-source implementace .NET pro každý projekt.
~/.wine. - Podpora Unicode 12.0 a 12.1.
- Realizace počátečního HTTP servisu (HTTP.sys) jako náhrady za Winsock API a IIS, což vedlo k vyššímu výkonu než Windows Sockets API.
- Lepší kompatibilita s ladicími nástroji Windows.
- Lepší podpora LLVM MinGW a zlepšení křížové kompilace WineGCC.
Ještě je možné zmínit vylepšení uživatelského rozhraní. Například, minimalizovaná okna se nyní zobrazují pomocí hlavičkového řádku, nikoli ikonami ve stylu Windows 3.1. Byla vylepšena podpora herních ovladačů, včetně hat switche, volantu a pedálů.
Z Wine 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 možnost použití debuggeru z Visual Studia pro vzdálené ladění aplikací spuštěných ve Wine, částečně byla realizována knihovna DBGENG (Debug Engine), ze souborů pro Windows byla odstraněna závislost na libwine.
Pro optimalizaci výkonu byly různé funkce práce s časem převedeny na využí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. Bylo provedeno i další optimalizace výkonu.
Úplný seznam změn viz. .
,
Na webu je vedena databáze Windows aplikací kompatibilních s Wine. Zde jsou lídři podle :
- Final Fantasy XI
- Adobe Photoshop CS6 (13.0)
- World of Warcraft 8.3.0
- EVE Online Current
- Magic: The Gathering Online 4.x
Lze předpokládat, že tyto aplikace se ve Wine spouštějí nejčastěji.
Poznámka. Vydání Wine 5.0 je věnováno paměti Józefa Kucii, který tragicky zemřel v srpnu 2019 ve věku 30 let při zkoumání jeskyně na jihu Polska. Józef byl důležitým účastníkem vývoje Direct3D ve Wine a také vedoucím autorem projektu. Během své práce na Wine přispěl více než 2500 patchi.

Zdroj: habr.com
