Po roce vývoje a 28 experimentálních verzích byl představen stabilní release otevřené implementace Win32 API — Wine 8.0, která zahrnuje více než 8600 změn. Klíčovým úspěchem této nové verze je dokončení práce na převodu modulů Wine do formátu.
Ve Wine je potvrzena plná funkčnost 5266 (před rokem 5156, před dvěma lety 5049) aplikací pro Windows, dalších 4370 (před rokem 4312, před dvěma lety 4227) aplikací funguje skvěle s dodatečnými nastaveními a externími DLL. U 3888 aplikací (před rokem 3813, před dvěma lety 3703) se objevují malé problémy, které nebrání používání základních funkcí aplikací.
Klíčové novinky Wine 8.0:
- Moduly ve formátu PE
- Po čtyřech letech práce byl úspěšně dokončen převod všech DLL knihoven na používání formátu spustitelných souborů PE (Portable Executable, používaný ve Windows). Použití PE umožňuje využívat dostupné ladění pro Windows a řeší problémy s podporou různých schémat ochrany proti kopírování, které provádějí kontrolu identity systémových modulů na disku a v paměti. Také byly vyřešeny problémy s běháním 32bitových aplikací na 64bitových hostitelích a x86 aplikací na systémech ARM. Mezi zbývající úkoly, které plánují vyřešit v následujících experimentálních vydáních Wine 8.x, patří převod modulů na rozhraní systémových volání NT namísto provádění přímých volání mezi úrovněmi PE a Unix.
- Byl implementován speciální správce systémových volání, který se používá pro překlad volání z PE do Unix knihoven za účelem snížení režijních nákladů při provádění úplného systémového volání NT. Například provedená optimalizace umožnila snížit pokles výkonu při používání knihoven OpenGL a Vulkan.
- V aplikacích Winelib zůstala možnost použití smíšených sestavení Windows/Unix knihoven ve formátu ELF (.dll.so), ale takové aplikace bez 32bitových knihoven nebudou podporovat funkčnost dostupnou prostřednictvím rozhraní systémových volání NT, jako je WoW64.
- WoW64
- Pro všechny Unixové knihovny jsou k dispozici vrstvy WoW64 (64-bit Windows-on-Windows), které umožňují 32-bitovým modulům ve formátu PE přistupovat k 64-bitovým Unixovým knihovnám, což po odstranění přímých volání PE/Unix umožní provádění 32-bitových Windows aplikací bez instalace 32-bitových Unixových knihoven.
- Při absenci 32-bitového zavaděče Wine je zajištěn běh 32-bitových aplikací v novém experimentálním Windows-podobném režimu WoW64, ve kterém je 32-bitový kód spuštěn uvnitř 64-bitového procesu. Tento režim se aktivuje při sestavení Wine s volbou ‘—enable-archs’.
- Grafický subsystém
- V výchozí konfiguraci je použita světlejší téma vzhledu („Light“). Téma lze změnit pomocí nástroje WineCfg.

- Grafické ovladače (winex11.drv, winemac.drv, wineandroid.drv) byly transformovány pro provádění systémových volání na Unixové úrovni a přístupu k ovladačům prostřednictvím knihovny Win32u.

- Byla realizována architektura zpracovatelů pro tisk (Print Processor), používající se pro vyloučení přímých volání mezi úrovněmi PE a Unix v ovladači tiskárny.
- V API Direct2D byla implementována podpora efektů.
- V API Direct2D byla přidána možnost zápisu a přehrávání příkazových seznamů.
- V ovladači pro grafické API Vulkan byla přidána podpora specifikace Vulkan 1.3.237 (ve Wine 7 byla podporována Vulkan 1.2).
- V výchozí konfiguraci je použita světlejší téma vzhledu („Light“). Téma lze změnit pomocí nástroje WineCfg.
- Direct3D
- Byl přidán nový kompilátor shaderů pro jazyk HLSL (High-Level Shader Language), implementovaný na základě knihovny vkd3d-shader. Také na základě vkd3d-shader byly připraveny disassembler HLSL a preprocesor HLSL.
- Bylo implementováno rozhraní Thread Pump, které se objevilo v D3DX 10.
- V efektech Direct3D 10 byla přidána podpora mnoha nových výrazů.
- Ve pomocné knihovně pro D3DX 9 byla implementována podpora projekce textur Cubemap.
- Zvuk a video
- Na základě rámce GStreamer byla implementována podpora filtrů pro dekódování zvuku ve formátu MPEG-1.
- Byl přidán filtr pro čtení streamovaného zvuku a videa ve formátu ASF (Advanced Systems Format).
- Mezivrstva OpenAL32.dll byla odstraněna a místo ní je nyní používána nativní Windows knihovna OpenAL32.dll dodávaná s aplikacemi.
- V Media Foundation Player bylo vylepšeno rozpoznání typu obsahu.
- Byla implementována možnost řízení rychlosti přenosu dat (Rate control).
- Byla vylepšena podpora mixéru a vykreslovače (presenter), nabízených výchozími prostředky v Enhanced Video Renderer (EVR).
- Byla přidána počáteční implementace API Writer Encoding.
- Zlepšena podpora pro načítání topologií.
- Vstupní zařízení
- Výrazně zlepšena podpora pro horké připojení ovladačů.
- Navržena vylepšená implementace kódu pro ovládání herních volantů, postavená na knihovně SDL.
- Zlepšena podpora pro vibrační odezvu (Force feedback) při použití herních volantů.
- Realizována možnost ovládání levého a pravého vibromotoru, používající specifikaci HID Haptic.
- Změněno formátování administrativním panelu. joystickem.
- Díky použití backendu hidraw byla zajištěna podpora pro ovladače Sony DualShock a DualSense.
- Navržen WinRT modul Windows.Gaming.Input s implementací programového rozhraní pro přístup k herním ovladačům, joystickům a herním volantům. Pro nové API, mimo jiné, byla zajištěna podpora pro upozornění na horké připojení zařízení, taktilní a vibrační efekty.
- Mezinárodní standardizace
- Zajištěna generace správné databáze lokalizací ve formátu locale.nls z repozitáře Unicode CLDR (Unicode Common Locale Data Repository).
- Funkce pro porovnání Unicode řetězců byly převedeny na použití databáze a algoritmu Windows Sortkey namísto algoritmu Unicode Collation, což přiblížilo chování k Windows.
- Ve většině funkcí byla přidána podpora pro horní oblasti kódů (ploch) Unicode.
- Poskytla se možnost použití UTF-8 jako kódování ANSI.
- Tabulky znaků byly aktualizovány na specifikaci Unicode 15.0.0.
- Text a písma
- Pro většinu systémových písem bylo zahrnuto vazování písem, což vyřešilo problém s absencí glyfů v systémech s čínskými, korejskými a japonskými lokalizacemi.
- Přepracováno vracení na záložní písmo v DirectWrite.
- Jádro (rozhraní jádra Windows)
- Realizována databáze ApiSetSchema, která nahradila moduly api-ms-* a umožnila snížit spotřebu disku a adresního prostoru.
- Zajištěno uchovávání souborových atributů DOS na disku v kompatibilním formátu se Sambou, s využitím rozšířených atributů FS.
- Síťové funkce
- Přidána podpora pro protokol OCSP (Online Certificate Status Protocol), používaný k ověřování zrušených certifikátů.
- Rozšířeny možnosti EcmaScript dostupné v režimu souladu se standardy JavaScript.
- Realizován sběrač odpadků pro JavaScript.
- V balíčku s enginem Gecko byly zahrnuty nástroje pro osoby se zdravotním postižením.
- V MSHTML byla přidána podpora pro API Web Storage, objekt Performance a další objekty pro zpracování událostí.
- Vestavěné aplikace
- Všechny integrované aplikace byly převedeny na použití knihovny Common Controls 6 s podporou motivů a vykreslování s ohledem na obrazovky s vysokou hustotou pixelů.
- Byly rozšířeny možnosti ladění vláken v ladicím programu Wine Debugger (winedbg).
- Do nástrojů pro práci s registrem (REGEDIT a REG) byla přidána podpora typu QWORD.
- Do Notepadu byla přidána stavová řádka s informacemi o poloze kurzoru a funkce Přejít na řádek pro přechod na zadané číslo řádku.
- V integrované konzoli byla zajištěna výstup dat v kódové stránce OEM.
- Do nástroje sc.exe (Service Control) byla přidána příkaz 'query'.
- Systém sestavení
- Byla poskytnuta možnost sestavení spustitelných souborů ve formátu PE pro více architektur (například '—enable-archs=i386,x86_64').
- Na všech platformách s 32-bitovým typem long byly typy dat, které jsou v systému Windows definovány jako long, nyní ve Wine předefinovány jako 'long' místo 'int'. V Winelib lze toto chování deaktivovat definováním WINE_NO_LONG_TYPES.
- Byla přidána možnost generování knihoven bez použití dlltool (zapíná se pomocí nastavení volby '—without-dlltool' v winebuild).
- Pro zvýšení efektivity načítání a snížení velikosti knihoven, které neobsahují kód a zahrnují pouze prostředky, byla v winegcc implementována volba '—data-only'.
- Různé
- Byly aktualizovány verze integrovaných knihoven Faudio 22.11, LCMS2 2.14, LibJPEG 9e, LibMPG123 1.31.1, LibPng 1.6.39, LibTiff 4.4.0, LibXml2 2.10.3, LibXslt 1.1.37, Zlib 1.2.13.
- Engin Wine Mono s implementací platformy .NET byl aktualizován na verzi 7.4.
- Byla implementována podpora šifrování založeného na algoritmu RSA a digitálních podpisů RSA-PSS.
- Byla přidána počáteční verze API UI Automation.
- Do stromu zdrojových textů byly zahrnuty knihovny LDAP a vkd3d, které jsou sestavovány ve formátu PE, což zbavuje potřeby dodávat unixové verze těchto knihoven.
- Bylo ukončeno používání knihovny OpenAL.
Zdroj: opennet.ru


