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.
Bylo potvrzeno, že 5336 (5266 před rokem, 5156 před dvěma lety, 5049 před třemi lety) programů ve Wine funguje správně. WindowsDalších 4 397 programů (4 370 před rokem, 4 312 před dvěma lety, 4 227 před třemi lety) funguje bez problémů s dalším nastavením a externími knihovnami DLL. 3 943 programů (3 888 před rokem, 3 813 před dvěma lety, 3 703 před třemi lety) má drobné problémy, které nenarušují základní funkčnost aplikací.
Klíčové inovace ve Wine 9.0:
- Byl přidán 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. Cílem tohoto vývoje je poskytnout čisté prostředí Wayland s podporou spouštění. Windows- aplikace, které nevyžadují instalaci balíčků souvisejících s X11, což umožňuje vyšší výkon a odezvu her eliminací zbytečných vrstev. Použití čistého prostředí Wayland pro Wine také eliminuje bezpečnostní problémy spojené s 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 provádět nahrazování stisků 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).
- Vývoj vrstvy WoW64 (64bitová verze) pokračoval Windows-na-Windows), což umožňuje spouštět 32bitové Windows- aplikace na 64bitových unixových systémech. Všechny moduly přistupující k unixovým knihovnám používají překladače systémových volání (thunks) WoW64, což umožňuje 32bitovým modulům ve formátu PE přístup k 64bitovým unixovým knihovnám.
Nový režim spouštění WoW64 byl vylepšen a umožňuje běh 32bitového kódu v 64bitovém procesu (ve starém režimu WoW64 běžely 32bitové aplikace v 32bitových unixových procesech). Byla přidána podpora pro používání nového režimu WoW64 na platformě. macOSProtože nový režim WoW64 má několik drobných chyb, jako je například chybějící podpora 16bitových architektur a snížený výkon OpenGL kvůli chybějící podpoře rozšíření ARB_buffer_storage, není zatím ve výchozím nastavení povolen a vyžaduje sestavení s volbou „--enable-archs=i386,x86_64“ v konfiguračním skriptu.
- Přidána možnost spouštět existující spustitelné soubory Windows Na systémech s architekturou ARM64. Wine lze nyní sestavit pro ABI ARM64EC (ARM64 Emulation Compatible) a načíst moduly ARM64EC. Tyto moduly se používají ke zjednodušení portování aplikací původně napsaných pro architekturu x86_64 na systémy ARM64 tím, že umožňují spouštění jednotlivých modulů kódu x86_64 v prostředí ARM64 pomocí emulátoru. Byla přidána podpora pro formát souboru ARM64X PE, který umožňuje načíst jeden spustitelný soubor v procesech x64/Arm64EC i ARM64. Bylo implementováno rozhraní pro emulaci 32bitových systémů x86, ale knihovna emulátoru zatím není zahrnuta v hlavní distribuci Wine (externí emulátor FEX lze použít ke spuštění kódu x86 v prostředí ARM64).
- Grafický subsystém
- Ovladač PostScript byl přepracován pro podporu souborů pro spoolování ve formátu Windows, které ukládají data o tiskových úlohách. Přímá volání ovladače z prostředí Unixu 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í.
- Implementována podpora pro načítání zvukových fontů (SoundFont - formáty pro syntézu založenou na samplech používané k přehrávání MIDI souborů) ve formátech DLS1 a DLS2, stejně jako ve formátu SF2 používaném v Linux.
- 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 Mediální 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
- Podpora editorů IME (Input Method Editors) byla rozšířena. Byly provedeny práce na zajištění kompatibility s nativními editory. Windows Implementace IME a vylepšená integrace 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.
- Jádro (rozhraní jádra Windows)
- Jako vydaná verze Windows definované ve výchozím nastavení 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.
- Rozhraní WineCfg bylo aktualizováno pro podporu starších verzí na 64bitových platformách. Windows (před XP), který umožňuje spouštět starší aplikace v 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 zobrazuje informace z databáze WMI (Windows Řídicí instrumentace).
- 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
- Nástroj WineDump má schopnost zobrazit obsah souborů registru. Windows (formát REGF) a také zobrazení dat 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
