Po roce vývoje a 26 experimentálních verzích byla představena stabilní verze otevřené implementace Win32 API - Wine 9.0, která obsahovala více než 7000 64 změn. Mezi klíčové úspěchy v nové verzi patří implementace architektury WoW32 pro běh 64bitových programů v 64bitovém prostředí, integrace ovladačů pro podporu Wayland, podpora architektury ARMXNUMX, implementace DirectMusic API a podpora čipových karet.
Wine potvrdil plný provoz 5336 (před rokem 5266, před dvěma lety 5156, před třemi lety 5049) programů pro Windows, dalších 4397 (před rokem 4370, před dvěma lety 4312, před třemi lety 4227) programů perfektně funguje další nastavení a externí DLL. 3943 programů (před rokem 3888, před dvěma lety 3813, před třemi lety 3703) má drobné problémy v provozu, které nenarušují používání hlavních funkcí aplikací.
Klíčové inovace ve Wine 9.0:
- Přidán ovladač winewayland.drv, který vám umožňuje používat Wine v prostředích založených na protokolu Wayland bez použití komponent XWayland a X11. Vývoj je zaměřen na poskytování čistého prostředí Wayland s podporou spouštění aplikací pro Windows, které nevyžadují instalaci balíčků souvisejících s X11, což umožňuje vyšší výkon a odezvu her odstraněním zbytečných vrstev. Použití čistého prostředí Wayland pro Wine také eliminuje bezpečnostní problémy vlastní X11 (například nedůvěryhodné hry X11 mohou špehovat jiné aplikace, protože protokol X11 umožňuje přístup ke všem vstupním událostem a falešnou náhradu stisku kláves).
Ovladač je označen jako experimentální a ve vývoji, ale přesto již podporuje mnoho funkcí, jako je správa oken, práce s více monitory, podpora škálování výstupu na obrazovkách s vysokou hustotou pixelů (high-DPI), práce s relativní souřadnice při sledování pohybu myši a podpora grafického API Vulkan. Ve výchozím nastavení není ovladač aktivní a pro jeho povolení byste měli přidat „wayland“ do parametru registru „HKCU\Software\Wine\Drivers“ a ujistěte se, že proměnná prostředí DISPLAY není nastavena: wine reg.exe add HKCU\ \Software\\Wine\\Ovladače /v Grafika /d x11,wayland
- Všechny moduly byly převedeny na rozhraní systémového volání NT, místo aby uskutečňovaly přímá volání mezi vrstvami PE a Unix, což znamená dokončení mnoha let práce na převodu všech knihoven DLL do formátu spustitelného souboru PE (Portable Executable).
- Pokračoval vývoj vrstvy WoW64 (64-bit Windows-on-Windows), která umožňuje spouštění 32bitových aplikací Windows na 64bitových unixových systémech. Všechny moduly, které přistupují k unixovým knihovnám, používají thunks systémového volání WoW64, aby umožnily 32bitovým modulům ve formátu PE přístup k 64bitovým unixovým knihovnám.
Vylepšen nový režim spouštění WoW64, který spouští 32bitový kód uvnitř 64bitového procesu (ve starém režimu WoW64 běžely 32bitové aplikace v 32bitových unixových procesech). Přidána podpora pro používání nového režimu WoW64 na platformě macOS. Vzhledem k tomu, že nový režim WoW64 má některé nedostatky, jako je nedostatek podpory pro 16bitový režim a snížený výkon OpenGL kvůli nedostatku podpory pro rozšíření ARB_buffer_storage, není dosud ve výchozím nastavení povolen a vyžaduje sestavení s možností „—enable- archs=i386,x86_64 " v konfiguračním skriptu.
- Přidána možnost spouštět stávající spustitelné soubory Windows na systémech s architekturou ARM64. Byla implementována schopnost sestavit Wine pro ARM64EC ABI (kompatibilní s emulací ARM64) a podpora načítání modulů ARM64EC, která se používá ke zjednodušení portování aplikací původně napsaných pro architekturu x64_86 do systémů ARM64 tím, že poskytuje možnost spouštět jednotlivé moduly pomocí x64_86. kód v prostředí ARM64 pomocí emulátoru. Přidána podpora pro souborový formát ARM64X PE, který umožňuje načíst jeden spustitelný soubor v procesech x64/Arm64EC a ARM64. Bylo implementováno rozhraní pro emulaci 32bitových x86 systémů, ale knihovna s emulátorem zatím není součástí hlavního balíčku Wine (externí emulátor FEX můžete použít ke spuštění x86 kódu v prostředí ARM64).
- Grafický subsystém
- Ovladač PostScript byl přepracován tak, aby podporoval zařazovací soubory ve formátu Windows, které ukládají data o tiskových úlohách. Přímá volání ovladače z prostředí Unix jsou vyloučena.
- Do motivů WinRT byla přidána podpora tmavého režimu. Do WineCfg bylo přidáno nastavení, které umožňuje návrh tmavého rozhraní.
- Ovladač pro grafické rozhraní API Vulkan přidal podporu pro specifikaci Vulkan 1.3.272 (8.0 bylo podporováno ve Wine 1.3.237).
- Funkce knihovny GdiPlus byly optimalizovány, což umožňuje zvýšený grafický výkon.
- Direct3D
- Analýza toku příkazů s více vlákny je pozastavena, pokud se nezpracovávají žádné příkazy vykreslování, což umožňuje snížit spotřebu energie na úroveň jednovláknového zpracování při provádění programů, které nezabírají celou šířku pásma toku příkazů.
- Direct3D 10 obsahuje podporu pro další efekty.
- Provedl optimalizaci výkonu kódu a backendu WineD3D pomocí grafického API Vulkan.
- Vykreslovací kód založený na Vulkan API nyní kontroluje, jaké funkce zařízení podporuje, a říká aplikaci, jaká úroveň funkčnosti Direct3D je k dispozici.
- Byly implementovány funkce D3DXFillTextureTX a D3DXFillCubeTextureTX.
- Klasický backend shaderu OpenGL ARB přidal podporu pro definování stínů pomocí rozšíření ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX a podobné funkce přidaly podporu pro načítání uživatelských dat pomocí rozhraní ID3DXLoadUserData.
- Zvuk a video
- Byla navržena počáteční implementace rozhraní DirectMusic API. Přidána podpora pro sbírky, nástroje a zvukové vzorky ve formátu SoundFont. Přidána podpora pro Dopplerův efekt. Byly provedeny testy pro ověření správné implementace při provozu sekvenceru dmime a MIDI syntezátoru dmsynth.
- Knihovna FluidSynth je zabudována do rozhraní DirectMusic API pro použití.
- Byla implementována podpora načítání zvukových fontů (SoundFont - formáty pro syntézu založenou na vzorcích používané k přehrávání MIDI souborů) ve formátech DLS1 a DLS2 a také ve formátu SF2 používaném v Linuxu.
- Přidána možnost přehrávání obsahu MIDI pomocí knihovny dmsynth, pomocí softwarového syntezátoru FluidSynth a rozhraní DirectSound API pro výstup zvuku.
- Přidán dekodér pro video ve formátu video kodeku Indeo IV50.
- DirectShow
- Byla implementována komponenta DMO (DirectX Media Object) s dekodérem formátu WMV (Windows Media Video).
- Přidán filtr pro zachycení zvuku (DirectShow Audio Capture Filter).
- Kromě audio streamů nyní MPEG-1 Stream Splitter (DirectShow MPEG-1 Stream Splitter) podporuje video streamy a toky služeb.
- Byl implementován filtr pro dekódování videa ve formátu MPEG‑1 (DirectShow MPEG‑1 Video Decoder).
- Vstupní zařízení
- DirectInput podporuje mapování akcí, které umožňuje svázat tlačítka na herním ovladači s konkrétními akcemi ve hrách.
- Desktopová integrace
- Vazby byly exportovány do hlavního uživatelského prostředí, což umožňuje aplikacím spuštěným pod Wine, aby byly volány jako obslužné rutiny protokolu při otevírání adresy URL (například spuštění spotify.exe při otevírání odkazů jako „spotify:user:spotify:playlist:848218482355482821“).
- Implementována extrakce dat EDID (Extended Display Identification Data) s informacemi o parametrech připojeného monitoru, jako je název a model zařízení.
- Okno plochy nasazené v režimu celé obrazovky je možné zavřít pomocí tlačítka „Ukončit plochu“ v nabídce „Start“.
- Internacionalizace
- Rozšířená podpora pro IME (Input Method Editors). Byla provedena práce s cílem zajistit kompatibilitu s nativními implementacemi Windows IME a zlepšit integraci s Linux IME
- Generování národních databází ve formátu locale.nls z databáze Unicode CLDR (Unicode Common Locale Data Repository) verze 44 Byla poskytnuta podpora pro další národní prostředí bew-ID, blo-BJ, csw-CA, tj.-EE, mic-CA. , byl přidán prg-PL , skr-PK, tyv-RU, vmw-MZ, xnr-IN a za-CN.
- Rozhraní bylo přeloženo do gruzínštiny. Úplné překlady jsou poskytovány pro 16 jazyků a částečné překlady pro 31 jazyků.
- Tabulky znaků Unicode byly aktualizovány na standardní verzi 15.1.0. Databáze časových pásem byla aktualizována.
- Kernel (rozhraní jádra systému Windows)
- Výchozí verze systému Windows, která je vydána, je Windows 10.
- U spustitelných souborů ve formátu PE je implementována podpora pro randomizaci adresního prostoru (ASLR), ale adresy pro načítání kódu do paměti ještě nejsou zcela randomizovány.
- Byla implementována podpora pro slabě fragmentovanou haldu (LFH, Low Fragmentation Heap), což zvýšilo výkon operací alokace paměti.
- Do mechanismu přidělování virtuální paměti byla přidána podpora pro rezervaci paměti (placeholder), která umožňuje aplikaci rezervovat si konkrétní oblast virtuální paměti pro budoucí použití.
- 64bitové zavaděče (loader a preloader) spustitelných souborů a knihoven jsou kompilovány ve formátu PIE (Position-Independent Executables), aby se uvolnila část 32bitového adresního prostoru.
- Pro systémová volání NT a zpětná volání uživatelů je zajištěno správné odvíjení zásobníku.
- Síťové funkce
- Modul MSHTML podporuje mechanismus shromažďování odpadků „Cycle Collection“.
- MSHTML přidal podporu pro synchronní zpracování požadavků XMLHttpRequest.
- jscript.dll přidává podporu pro objekt WeakMap pro práci s kolekcí párů klíč/hodnota, ve kterých je klíčem objekt, ke kterému může být připojena libovolná hodnota. Implementované metody WeakMap.get(), WeakMap.delete(), WeakMap.clear() a WeakMap.has().
- Prohlížeč Gecko byl aktualizován na verzi 2.47.4.
- Byla implementována podpora upozornění na změny stavu síťového rozhraní.
- Kryptografie a bezpečnost
- Do knihovny Winscard.dll byla přidána podpora čipových karet, implementovaná prostřednictvím systémové knihovny PCSClite.
- BCrypt přidal podporu pro protokol výměny klíčů Diffie-Hellman.
- Byl implementován balíček Negotiate, který poskytuje vrstvu pro použití rozhraní SSPI (Security Support Provider Interface) pro přístup k poskytovatelům SSP (Security Support Provider).
- Vestavěné aplikace
- Wine Debugger (winedbg) používá knihovnu Zydis k rozebrání strojových instrukcí X86.
- Do rozhraní WineCfg byla přidána možnost vystavit starší verze Windows (pre-XP) na 64bitových platformách, což umožňuje spouštět starší aplikace pomocí režimu WoW64.
- Všechny vestavěné grafické aplikace nyní zobrazují informace o chybě v samostatném dialogu, místo aby je zobrazovaly v konzole.
- Program systeminfo poskytuje zobrazení informací z databáze WMI (Windows Management Instrumentation).
- Přidána aplikace klist pro zobrazení lístků Kerberos.
- Aplikace taskkill implementuje schopnost násilně ukončit podřízené procesy.
- Do startovacího nástroje byla přidána možnost „/machine“ pro výběr architektury používané při spouštění hybridních spustitelných souborů, které podporují x86 a ARM.
- Většina funkcí programu tasklist byla implementována.
- Přidána základní implementace aplikace findstr.
- Vývojové nástroje
- Obslužný program WineDump poskytuje možnost zobrazit obsah souborů registru Windows (formát REGF) a také zobrazit data pro všechny architektury (x86/ARM64) podporované v hybridních souborech PE.
- Kompilátor IDL přidal podporu pro atributy "composable", "default_overload", "deprecated" a "protected".
- Odstraněn libwine.so, který byl ve Wine 6.0 zastaralý a ve Wine se již dlouho nepoužívá. Programy ve formátu ELF zabudované ve starších verzích Wine (5.0 a starší) s libwine.so vyžadují přebudování, aby mohly běžet ve Wine 9.0.
- Vestavěné knihovny a externí závislosti
- V balíčku jsou integrovány knihovny FluidSynth 2.3.3, Musl 1.2.3 (pouze matematické funkce) a Zydis 4.0.0.
- Komponenty Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5 a Zlib1.1.38X byly aktualizovány na nové verze 1.3.slt. Engine Wine Mono s implementací platformy .NET byl aktualizován na verzi 8.1.0.
- Ovladač winewayland.drv používá klientskou knihovnu Wayland jako externí závislosti a také knihovny xkbcommon a xkbregistry.
- Pro podporu čipových karet se používá externí knihovna PCSClite (v macOS - PCSC).
- Vytváření souborů PE na platformách jiných než i386 nyní vyžaduje křížový kompilátor s podporou direktiv ".seh" pro zpracování výjimek.
Zdroj: opennet.ru
