Po roce vývoje a 25 experimentálních verzích byla vydána Wine 11.0, stabilní verze open source Win32 API. Obsahuje přes 6 300 změn a 600 oprav chyb. Mezi klíčové vylepšení v nové verzi patří plná podpora NTSYNC, implementace mechanismu Reparse Point a použití nové implementace architektury WoW64.
Bylo potvrzeno, že 5419 programů ve Wine funguje správně. Windows (5372 před rokem, 5336 před dvěma lety, 5266 před třemi lety), dalších 4500 programů (4435 před rokem, 4397 před dvěma lety, 4370 před třemi lety) funguje bez problémů s dalším nastavením a externími knihovnami DLL. 4086 programů (4020 před rokem, 3943 před dvěma lety, 3888 před třemi lety) má drobné problémy, které nebrání v používání základních funkcí aplikace.
Klíčové inovace ve Wine 11.0:
- Plná podpora ovladače ntsync, která výrazně zlepšuje výkon Windows-hry spouštěné pomocí Wine. Ovladač je součástí jádra Linux od verze 6.14 a implementuje znakové zařízení /dev/ntsync a sadu synchronizačních primitiv používaných v jádře Windows NT. Významného zvýšení výkonu je dosaženo eliminací režie spojené s používáním RPC v uživatelském prostoru.
- Přidána možnost konfigurovat priority vláken v Linux и macOS.
- Do ntdll bylo přidáno API „Synchronizační bariéry“, které umožňuje pozastavit provádění více vláken, dokud není dosaženo určitého bodu provádění ve všech vláknech (například počkat, dokud všechna vlákna nedosáhnou určité fáze při paralelním provádění stejného kódu).
- Nová implementace mezivrstvy WoW64 (64bitová) byla přesunuta do kategorie plně podporovaných. Windows-na-Windows), což vám umožní spustit 32bitovou Windows- aplikace na 64bitových unixových systémech. Na rozdíl od starší implementace WoW64, která spouštěla 32bitové aplikace v 32bitových unixových procesech, nový WoW64 umožňuje spouštění 32bitového kódu v rámci 64bitového procesu. Byla implementována podpora pro spouštění 16bitových aplikací v režimu WoW64.
Všechny moduly přistupující k unixovým knihovnám používají překladače systémových volání WoW64 (thunks), které umožňují 32bitovým modulům ve formátu PE přístup k 64bitovým unixovým knihovnám. Možnost spouštět staré instalace WoW64 v novém režimu byla přidána nastavením proměnné prostředí „WINEARCH=wow64“. 32bitové prefixy vytvořené nastavením WINEARCH=win32 jsou zastaralé a v novém režimu WoW64 nejsou podporovány. Samostatný zavaděč wine64 byl odstraněn a nahrazen univerzálním zavaděčem, který určuje režim na základě bitové hodnoty spouštěného souboru.
- Jádro (rozhraní jádra Windows)
- Byl implementován mechanismus bodu opětovného zpracování, který umožňuje připojit k souborům a adresářům další data identifikovaná tagy. Jsou podporovány typy bodů opětovného zpracování, jako jsou symbolické odkazy a body připojení.
- Pro zlepšení výkonu sledování zápisu do paměti se používá mechanismus UFFD (userfaultfd), který umožňuje vytváření obslužných rutin pro přístup k nepřiděleným stránkám paměti (faultům stránky) v uživatelském prostoru. V provedených testech použití UFFD zkrátilo dobu načítání úrovně ve hře „Streets of Rage 4“ z 6–8 sekund na 1.5–2 sekundy, což je v souladu s časem spuštění platformy. Windows.
- Použitá čísla systémových volání NT jsou identická s nejnovějšími verzemi. Windows, což je nezbytné pro podporu aplikací, které používají pevně zakódovaná systémová čísla volání.
- Na systémech ARM64 byla implementována možnost simulace 4K paměťových stránek v prostředích s jádry. Linux, s využitím větších paměťových stránek (16K nebo 64K). Simulace umožňuje spouštět jednoduché aplikace a pro složitější programy se doporučuje používat jádra Linux s paměťovými stránkami o velikosti 4 kilobajtů.
- Grafický subsystém
- Na systémech X11 (winex11) používá výchozí renderovací backend pro OpenGL EGL. Backend GLX byl zastaralý, ale zůstává k dispozici jako záložní řešení a používá se, když EGL není k dispozici.
- Přidána počáteční podpora pro objekty D3DKMT, které poskytují nízkoúrovňový přístup ke grafickým zařízením z uživatelského prostoru. Byla implementována rozšíření Vulkan VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32 a VK_KHR_win32_keyed_mutex.
- V režimu WoW64 (64bitová verze) Windows-na-Windows) podpora mapování paměti pro OpenGL byla implementována pomocí Vulkan API, což umožňuje rychlejší výkon 32bitových OpenGL aplikací ve Wine.
- Implementována emulace front bufferu pro OpenGL na platformách bez nativní podpory.
- Ovladač grafického API pro Vulkan byl aktualizován a nyní podporuje specifikaci Vulkan 1.4.335.
- V sadě knihoven WindowsKodeky rozšířily podporu metadat v obrazových souborech a implementovaly podporu pro převod mezi celočíselným a plovoucím desetinným formátem barev.
- Závislost na knihovně OSMesa (Off-screen Mesa) byla odstraněna. Vykreslování bitmap přes OpenGL bylo implementováno pomocí hardwarově akcelerovaného běhového prostředí OpenGL.
- Desktopová integrace
- Ovladač winewayland.drv, který umožňuje používat Wine v prostředích založených na Waylandu bez použití komponent XWayland nebo X11, implementuje podporu pro schránku, vstupní metody, neobdélníková okna a průhlednost.
- Vylepšená integrace s X11: nyní je možné odesílat požadavky na aktivaci oken správci oken a ke koordinaci stavu aktivních oken X11 a Win32 se používá protokol EWMH.
- Implementována podpora pro exkluzivní režim celé obrazovky. Vylepšená podpora celé obrazovky v D3D a vylepšený výkon starších her založených na DDraw.
- Výkon některých funkcí pro práci s okny byl vylepšen. Pro komunikaci mezi procesy se nyní používá sdílená paměť.
- Direct3D
- Direct3D 11 přidává podporu pro hardwarově akcelerované dekódování videa H.264, implementované pomocí grafického API Vulkan.
- Direct3D 11 implementuje podporu pro filtrování textur minmax pomocí rozšíření OpenGL GL_ARB_texture_filter_minmax nebo rozšíření Vulkan VK_EXT_sampler_filter_minmax.
- Direct3D 11 implementuje funkce pro načítání textur.
- Velká část funkcí Direct3D byla implementována při renderování přes Vulkan, jako je prolínání vrcholů, ploché stínování, vlastní ořezové roviny a různé formáty zdrojů.
- Vestavěná kopie vkd3d-shader má vylepšenou podporu pro modely shaderů 1, 2 a 3.
- Metoda D3DXSaveSurfaceToFileInMemory implementuje podporu pro obrázky PNG, JPEG a BMP.
- Direct3D 10 a 11 implementují podporu pro kompresi a dekompresi formátů BC4 a BC5 a také generování úrovní MIP (MipMap) při načítání textur.
- Byly implementovány metody ID3DXEffect::SetRawValue() a ID3DXSkinInfo::UpdateSkinnedMesh().
- Vstupní zařízení
- Vylepšená kompatibilita s joysticky díky použití hidraw backendu.
- Vylepšená podpora efektu Force Feedback při používání herních volantů a joysticků.
- Vylepšená podpora gamepadů v API Windows.Gaming.Input a při použití backendu evdev.
- Do appletu pro správu herních ovladačů byla přidána záložka pro konfiguraci API. Windows.Herní.Vstup.
- Vylepšená kompatibilita DirectInput se staršími hrami.
- Bluetooth
- Ovladač Bluetooth nyní umožňuje skenovat, konfigurovat vyhledávání a párovat zařízení.
- Přidána podpora pro služby Bluetooth Low Energy.
- Aplikace nyní mohou vytvářet nízkoúrovňová RFCOMM připojení k externím zařízením pomocí Winsock API.
- Podpora skenerů
- Byla implementována podpora pro rozhraní TWAIN 2.0 API, která umožňuje přístup ke skenerům z 64bitových aplikací.
- Implementována podpora pro komponentu DAT_IMAGENATIVEXFER pro přenos obrazu ze skeneru do aplikace.
- Vybraný skener a nastavení skeneru jsou nyní uloženy v registru.
- Přidána podpora pro skenování více stránek a automatický podavač dokumentů.
- Přestalo se blokovat aplikace při volání rozhraní pro skenování.
- Přidána podpora pro načítání nativních Windows- ovladače pro skenery.
- Internacionalizace
- Bylo zajištěno generování databází lokalizací ve formátu locale.nls z databáze Unicode CLDR (Unicode Common Locale Data Repository) verze 48. Byla přidána podpora pro další lokalizace bua-RU, bqi-IR, cop-EG, ht-HT, kek-GT, lzz-TR, mww-Hmnp-US, oka-CA, pi-Latn-GB, pms-IT, sgs-LT, suz-Deva-NP a suz-Sunu-NP.
- Tabulky znaků Unicode byly aktualizovány na standardní verzi 17.0.0. Databáze časových pásem byla aktualizována.
- Síťové funkce
- Engine MSHTML v režimu kompatibilním se standardy podporuje zpracování atributů elementů jako plnohodnotných uzlů DOM. Jsou implementovány objekty DOMParser, XDomainRequest a msCrypto.
- JavaScript nyní podporuje typovaná pole.
- Příkaz ping byl implementován pro ICMPv6.
- Db
- Do knihovny MSADO (ActiveX Data Objects) byla přidána podpora pro zaznamenávání změn v databázi. Většina funkcí objektu Recordset byla implementována.
- Knihovna odbc32 má vylepšenou podporu pro ovladače ANSI Win32, které nejsou navrženy pro práci s Unicode. Byly implementovány následující funkce: SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLGetInfoW(), SQLStatisticsW() a QLColumnsW().
- Vestavěné aplikace
- WineCfg má nyní záložku pro konfiguraci výchozího MIDI zařízení.
- Nástroj cmd nyní zahrnuje automatické doplňování názvů souborů v interaktivním režimu, podporu pro složité instrukce a příkaz „mklink /j“ pro vytvoření bodu opětovného zpracování.
- Nástroj conhost (Console Hosting) nyní podporuje načítání historie stisknutím kláves F1 a F3.
- Byly implementovány příkazy timeout, runas a subst.
- Nástroj find nyní obsahuje volby "/c" pro zobrazení počtu shod a /i pro shody bez rozlišování velkých a malých písmen.
- Nástroj whoami nyní umožňuje přizpůsobit výstupní formát.
- Různé
- Implementace jazyka Wine Interface Definition Language (WIDL) nyní podporuje generování metadat. Windows Runtime (WinRT). Podporuje generování a instalaci souborů WinMD (Windows Metadata) pro rozhraní WinRT API (Windows Za běhu).
- Nástroj winedump byl aktualizován a nyní podporuje výpis prostředků MUI, čísel systémových volání, vestavěných modulů NE a velkých PDB souborů (>4 GB).
- Implementace Common Control byla refaktorována a knihovna COMCTL32 byla pro verze 5 a 6 rozdělena do samostatných modulů.
- BCrypt nyní podporuje standard generování klíčů PBKDF2.
- Přidána podpora pro adresáře UserProgramFiles, AccountPictures a Screenshots.
- Knihovny LLVM Compiler-RT 8.0.1 a TomCrypt 1.18.2 jsou integrovány. Knihovna HwLoc se používá pro detekci CPU na platformě FreeBSD.
- Následující komponenty byly aktualizovány na nové verze: Vkd3d 1.18, Faudio 25.12, FluidSynth 2.4.2, LCMS2 2.17, LibMPG123 1.33.0, Libpng 1.6.51, LibTiff 4.7.1, LibXml2 2.12.10, LibXslt 1.1.43.
Zdroj: opennet.ru
