Po roce vývoje a 29 experimentálních verzích byla představena stabilní verze otevřené implementace Win32 API - Wine 10.0, která obsahovala více než 6000 změn. Mezi klíčové úspěchy v nové verzi patří plná podpora architektury ARM64EC, škálování na obrazovkách s vysokou hustotou pixelů, zahrnutí ovladače Wayland ve výchozím nastavení, implementace panelů pro přizpůsobení obrazovky a joysticku, alternativní multimediální backend založený na FFmpeg, Bluetooth ovladač, podpora Vulkan 1.4, schopnost emulace přepínání video režimů.
Bylo potvrzeno, že 5372 programů ve Wine funguje správně. Windows (5336 před rokem, 5266 před dvěma lety, 5156 před třemi lety), dalších 4435 programů (4397 před rokem, 4370 před dvěma lety, 4312 před třemi lety) funguje bez problémů s dalším nastavením a externími knihovnami DLL. 4020 programů (3943 před rokem, 3888 před dvěma lety, 3813 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 10.0:
- ARM64
- Plná podpora je poskytována pro architekturu ARM64EC (ARM64 Emulation Compatible), jejíž úroveň podpory ve Wine dosáhla stejné úrovně jako u architektury ARM64. Architektura ARM64EC je navržena tak, aby zjednodušila portování aplikací původně napsaných pro systémy x64_86 na systémy ARM64 a umožňuje spouštění jednotlivých modulů kódu x64_86 v prostředí ARM64 pomocí emulátoru.
- Plná podpora byla implementována pro souborový formát ARM64X PE, který umožňuje kombinovat kód pro architektury ARM64EC a ARM64 do jednoho spustitelného souboru. Chcete-li sestavit Wine ve formátu ARM64X, musíte nainstalovat LLVM z Git (potřebné funkce budou zahrnuty ve verzi LLVM 20) a při spuštění skriptu „configure“ zadat volbu „-enable-archs=arm64ec,aarch64“ .
- Bylo implementováno rozhraní pro emulaci 64bitových x86 systémů. Při použití ARM64EC běží Wine tak, jak je, a emulace je aplikována pouze na x86-64 aplikační kód. Knihovna s emulátorem zatím není součástí hlavního balíčku Wine, ale pro spuštění kódu x86-64 v prostředí ARM64 můžete použít externí emulátor FEX postavený s podporou ARM64EC.
- Podpora ARM64 vyžaduje, aby systém používal 4KB paměťové stránky, jak to vyžaduje ABI. Windows (běží v prostředích s jádry Linux, použití paměťových stránek o velikosti 16K nebo 64K zatím není podporováno).
- Grafický subsystém
- Implementováno přesnější škálování na obrazovkách s vysokou hustotou pixelů (High-DPI). Podpora režimu DPI Awareness byla poskytnuta pro organizaci zobrazení aplikací na obrazovkách s vysokou hustotou pixelů s přihlédnutím k tomu, zda aplikace podporuje přizpůsobení změnám DPI či nikoli (aplikace, které neberou v úvahu DPI, jsou škálovány automaticky). Přidány možnosti pro potlačení podpory vysokého DPI pro jednotlivé aplikace nebo předpony Wine.
- Do ovladače pro grafické API Vulkan byla přidána podpora specifikace Vulkan 1.4 (Vulkan 9.0 byl podporován ve Wine 1.3.272). Přidána podpora pro rozšíření Vulkan pro kódování a dekódování videa.
- Při použití backendu X11 byla implementována možnost vykreslovat podřízená okna Vulkan pro aplikace, které používají taková okna k zobrazení 3D obsahu (dříve byla taková funkce dostupná pouze pro OpenGL).
- Do knihovny GdiPlus byla přidána podpora mechanismu propojování písem, který umožňuje použít několik písem při zobrazování textu, pokud neexistují žádná písma, která by samostatně pokryla všechny znaky nalezené v textu.
- Wayland
- Výchozí konfigurace zahrnuje ovladač winewayland.drv, který umožňuje spuštění aplikace Wine v prostředích založených na Waylandu bez použití komponent XWayland nebo X11. Wine spouští výchozí aplikace přímo na Waylandu, pouze pokud XWayland není k dispozici; jinak je preferovaným spouštěčem XWayland. Chcete-li vynutit spuštění Waylandu, můžete použít proměnnou prostředí DISPLAY nebo přidat klíč registru vytvořením souboru file.reg: Windows Editor registru verze 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] "Graphics" = "wayland" a aplikujte ho příkazem: $ WINEPREFIX = /cesta/k/prefix wine regedit /cesta/k/souboru.reg
- Do ovladače winewayland.drv přidána podpora pro OpenGL a pixelové vyrovnávací paměti (pBuffer).
- Vyřešeny problémy s umístěním vyskakovacích oken v prostředích založených na Wayland.
- Při použití Wayland je implementována podpora automatického opakování při stisknutí kláves.
- Desktopová integrace
- Přidán experimentální mechanismus emulace „modesetting“, který vám umožňuje emulovat přepínání video režimů bez skutečné změny nastavení obrazovky. Viditelnost měnícího se rozlišení obrazovky bez přepínání režimu videa je vytvořena pomocí rozšiřujících a měřících oken.
- Byl přidán nový aplet Desktop Control Panel (desk.cpl) s implementací rozhraní pro správu nastavení zobrazení (můžete například změnit virtuální rozlišení plochy nebo nakonfigurovat parametry emulovaného zobrazení).
- Přidána možnost obnovit nastavení obrazovky na výchozí hodnoty, pokud není možné obnovit stav po zhroucení procesu.
- Přidána podpora pro zakázání zobrazení ikon v systémové liště (v "HKLM\Software\Microsoft\WindowsV parametru \CurrentVersion\Policies\Explorer by měla být uvedena hodnota „NoTrayItemsDisplay=1“).
- Přidána podpora pro zakázání shellu (spouštěč shellu) v režimu plochy (v "HKLM\Software\Microsoft\Windows"\CurrentVersion\Policies\Explorer" by měl specifikovat "NoDesktop=1").
- Direct3D
- Vykreslování pomocí OpenGL nyní vyžaduje podporu pro GLSL 1.20 a také rozšíření EXT_framebuffer_object a ARB_texture_non_power_of_two. Podpora pro starý backend shaderu ARB a nastavení OffscreenRenderingMode byla ukončena.
- Pro Direct3D 9 a starší byla přidána pevná funkční grafická pipeline (starší Direct3D poskytovala pouze předdefinované grafické operace, které nebylo možné změnit), implementovaná pomocí shader jazyka HLSL a umožňující emulaci pevných funkcí při vykreslování přes Vulkan nebo OpenGL API.
- Vykreslování pomocí Vulkan využívá rozšíření Vulkan k dynamické změně stavu grafického potrubí, čímž se omezuje zadrhávání ve hrách.
- Přidán alternativní backend glsl-vkd3d pro shadery GLSL pomocí vkd3d-shader.
- Poskytnuta počáteční podpora pro kompilaci efektů Direct3D pomocí vkd3d-shader.
- Knihovna D3DX9 implementuje schopnost generovat textury MIP (MipMap) při načítání objemových textur. Přidána podpora formátů reprezentace barev 64bpp RGBA a 48bpp RGB v obrázcích PNG a také formátů X8L8V8U8, A2W10V10U10, A8P8, V16U16 a Q16W16V16U16.
- Zvuk a video
- Jako alternativa k backendu založenému na GStreamer je implementován nový multimediální backend založený na použití FFmpeg a vhodný pro provozování frameworku Media Foundation. Chcete-li povolit alternativní backend, měli byste zadat „DisableGstByteStreamHandler=1“ v sekci registru „HKCU\Software\Wine\MediaFoundation“.
- Implementace rozhraní Media Foundation API byla vylepšena, aby lépe vyhovovala aplikacím, které jsou závislé na komponentách demultiplexování a dekódování.
- DirectMusic API přidalo podporu pro načítání MIDI souborů.
- Vstupní zařízení
- Přidána počáteční verze ovladače Bluetooth.
- Přidán applet Ovládací panel joysticku (joy.cpl) s implementací nastavení pro joystick.
- Byla provedena vylepšení ukazovacích zařízení (touchpady, myši) využívajících protokol HID (Human Interface Device). Byl přidán ovladač mouhid.sys pro zařízení HID. Byla implementována správná analýza kompozitních vstupních zařízení a informace o nich jsou nyní přenášeny do Windows-aplikace jako samostatná zařízení.
- Pro backend X11 byla přidána podpora dotykových obrazovek a byla implementována možnost používat vícedotykový režim prostřednictvím zpracování zpráv WM_POINTER* (WM_POINTERENTER, WM_POINTERLEAVE atd.).
- Implementováno umístění některých vnitřních struktur knihovny user32 do sdílené paměti, což zvýšilo výkon a snížilo zatížení Wine Serveru.
- Winex11 přidal podporu pro zpracování událostí XInput2 ve vztahu k jednotlivým oknům.
- Implementována správná podpora klávesnic s rozložením Dvorak.
- Jádro (rozhraní jádra Windows)
- Přidána podpora eskalace oprávnění procesu (procesu, který původně běží jako standardní uživatel, lze udělit oprávnění správce). Při vytváření serverových procesů (msi action server) a také procesů, které volají funkce RtlCreateUserProcess() a CreateProcessInternal(), je ve výchozím nastavení povolen omezený token správce.
- Při získávání informací o jmenovkách disků se nyní, kdykoli je to možné, používá přístup k systémovým službám přes DBus namísto pokusu o přímý přístup k zařízení.
- Mechanismus jednosměrné meziprocesové komunikace (IPC) v Mailslotech je nyní implementován přímo na serveru Wine, což umožňuje plnou sémantickou podporu. Windows.
- Implementováno čekání na události sériového portu v asynchronním režimu.
- Přidána plná podpora pro rozšíření procesoru XSTATE v kontextu vláken, což umožňuje použití nových vektorových rozšíření, jako je AVX-512.
- Vestavěné aplikace
- Stroj pro zpracování vstupních dat používaný v interpretu příkazů cmd.exe byl přepsán. Přidána podpora pro operace „||“ do cmd.exe A "&&".
- Obslužný program findstr přidal podporu regulárních výrazů a vyhledávání bez ohledu na velikost písmen.
- Do obslužných programů regsvr32 a rundll32 byla přidána možnost registrace modulů ARM64EC.
- Přidané nástroje: sort pro třídění vstupních dat, fc pro porovnávání souborů a kde pro vyhledávání souborů.
- Aplikace wmic implementuje interaktivní režim provozu.
- Průzkumník přidal volitelnou podporu pro nabídku Start a panel nástrojů. Povoleno spouštění explorer.exe s omezenými přístupovými právy.
- Vývojové nástroje
- Přidána možnost "-marm64x" do winebuild pro generování hybridních knihoven ARM64X.
- Do winegcc byla přidána možnost "-marm64x", která umožňuje sestavení pro ARM64X.
- Soubory generované pomocí jazyka IDL (Interface Definition Language) používají komponenty, které plně podporují provádění v interpretovaném režimu.
- Do kompilátoru IDL (Interface Definition Language) byla přidána podpora pro generování knihoven typů (TypeLib) ve starém formátu (SLTG).
- Obslužný program winedump přidal podporu pro ukládání výpisů tabulek minidump, informací o výjimkách C++ a prostředků typelib.
- Různé
- Vylepšená podpora pro protokol výměny klíčů Diffie-Hellman (DH). Přidána možnost konfigurovat a přijímat parametry DH. Implementované handlery pro vytváření párů veřejných a soukromých klíčů.
- Je zajištěno použití přírůstkové výplně OAEP (Optimal Asymmetric Encryption Padding) spolu s algoritmem RSA.
- DirectPlay API podporuje síťové relace.
- Vylepšené zpracování asynchronních vstupně/výstupních stavů při práci v režimu WoW64 (64bitová verze) Windows-na-Windows), což umožňuje spouštět 32bitové Windows-aplikace na 64bitových unixových systémech.
- Přidána podpora pro načítání ovladačů ODBC pro DBMS kompilované pro Windows.
- Pro platformu ARM je implementována plná podpora výjimek RPC/COM, C++ RTTI (Run-Time Type Information) a C++.
- V běhovém prostředí C implementují funkce ANSI podporu pro kódování UTF-8.
- Možnosti enginu MSHTML byly rozšířeny. Přidána podpora pro prototypy a konstruktory objektů. Do enginu JavaScript bylo přidáno nové rozhraní pro vazbu objektů pro MSHTML. Vestavěné funkce MSHTML byly převedeny na platné objekty JavaScriptu. Vylepšené shromažďování odpadků JavaScriptu pro pokrytí všech kontextů provádění skriptů ve vláknu. Přidána podpora pro objekty ArrayBuffer a DataView JavaScript.
- Do systému průběžné integrace založeného na Gitlabu byla přidána podpora pro statickou analýzu pomocí testovacích zpráv Clang a JUnit.
- V balíčku je zabudována knihovna Capstone 5.0.3, jejímž prostřednictvím je v debuggeru WineDb implementována demontáž.
- Komponenty byly aktualizovány na nové verze: Vkd3d 1.14, Faudio 24.10, FluidSynth 2.4.0, LDAP 2.5.18, LCMS2 2.16, LibJpeg 9f, LibMPG123 1.32.9, LibPng 1.6.44iff.4.7.0. LibPng 2iff.2.12.8. LibT 1.1.42, LibXslt 1.3.1 a Zlib XNUMX.
Zdroj: opennet.ru
