Stabilní verze Wine 9.0

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á zahrnuje více než 7000 změn. Mezi klíčová vylepšení v nové verzi patří implementace architektury WoW64 pro spuštění 32bitových programů v 64bitovém prostředí, integrace ovladače pro podporu Waylandu, podpora architektury ARM64, implementace API DirectMusic a podpora chytrých karet.

Ve Wine byla potvrzena plná funkčnost 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ů funguje skvěle s dodatečnými nastaveními a externími DLL. U 3943 programů (před rokem 3888, před dvěma lety 3813, před třemi lety 3703) jsou pozorovány drobné problémy, které nebrání používání základních funkcí aplikací.

Klíčové novinky Wine 9.0:

  • Přidán ovladač winewayland.drv, který umožňuje používat Wine v prostředích založených na protokolu Wayland bez použití XWayland a komponent X11. Vývoj je zaměřen na zajištění provozu čistého Waylandového prostředí s podporou spuštění Windows aplikací, které nevyžaduje instalaci balíčků souvisejících s X11, což přináší vyšší výkon a responsivitu her díky vyloučení 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 pro X11 mohou špehovat jiné aplikace, protože protokol X11 umožňuje přístup ke všem událostem vstupu a provádět substituce fiktivních stisků kláves).

    Ovladač je označen jako experimentální a stále ve vývoji, nicméně již podporuje mnohé funkce, 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ími souřadnicemi při sledování pohybu myši a podpora grafického API Vulkan. Ovladač není ve výchozím stavu aktivní a pro jeho aktivaci je nutné přidat „wayland“ do registru „HKCU\Software\Wine\Drivers“ a zajistit, že není nastavena proměnná prostředí DISPLAY: wine reg.exe add HKCU\\Software\\Wine\\Drivers \/v Graphics \/d x11,wayland

  • Byl proveden překlad všech modulů na rozhraní systémových volání NT, místo přímého volání mezi úrovněmi PE a Unix, což znamenalo dokončení mnohaleté práce na překladu všech DLL knihoven pro použití formátu spustitelných souborů PE (Portable Executable).
  • Pokračovalo se ve vývoji vrstvy WoW64 (64-bit Windows-on-Windows), která umožňuje spouštění 32-bitových Windows aplikací v 64-bitových Unix systémech. Ve všech modulech, které se obracejí na Unix knihovny, byly použity převodníky systémových volání WoW64 (thunk), které umožňují 32-bitovým modulům ve formátu PE přistupovat k 64-bitovým Unix knihovnám.

    Byl vylepšen nový režim spouštění WoW64, ve kterém se 32-bitový kód spouští uvnitř 64-bitového procesu (ve starém režimu WoW64 se 32-bitové aplikace spouštěly v 32-bitových Unix procesech). Byla přidána podpora nového režimu WoW64 na platformě macOS. Jelikož v novém režimu WoW64 existují určité nedostatky, jako je absence podpory 16-bitového režimu a zhoršení výkonu OpenGL v důsledku absence podpory rozšíření ARB_buffer_storage, ještě není ve výchozím nastavení zapnut a vyžaduje sestavení s volbou "--enable-archs=i386,x86_64" v konfiguračním skriptu.

  • Byla přidána možnost spouštění existujících spustitelných souborů Windows na systémech s architekturou ARM64. Byla implementována možnost sestavení Wine pro ABI ARM64EC (ARM64 Emulation Compatible) a podpora načítání modulů ARM64EC, které se používají k usnadnění portace aplikací původně napsaných pro architekturu x86_64 na systémy ARM64, prostřednictvím poskytnutí možnosti spuštění v prostředí ARM64 jednotlivých modulů s kódem x86_64 pomocí emulátoru. Byla přidána podpora pro formát PE souborů ARM64X, který umožňuje načítat jeden spustitelný soubor v procesech x64/Arm64EC a ARM64. Byl implementován rozhraní pro emulaci 32-bitových systémů x86, avšak knihovna s emulátorem zatím není součástí hlavní verze Wine (pro spuštění x86 kódu v prostředí ARM64 lze použít externí emulátor FEX).
  • Grafický subsystém
    • Ovladač PostScript byl přepracován pro podporu spool souborů ve formátu Windows, ve kterých jsou uchovávána data o úlohách odesílaných k tisku. Byly vyloučeny přímé přístupy k ovladači z Unixového prostředí.
    • Do témat pro WinRT byla přidána podpora tmavého režimu. V WineCfg byla přidána možnost pro aktivaci tmavého vzhledu rozhraní.
    • Do ovladače grafického API Vulkan byla přidána podpora specifikace Vulkan 1.3.272 (ve Wine 8.0 byla podporována verze 1.3.237).
    • Byla provedena optimalizace funkcí knihovny GdiPlus, která zvýšila výkon při práci s grafikou.
  • Direct3D
    • Bylo zajištěno pozastavení zpracování vícerozměrného toku příkazů v případě absence zpracovávaných vykreslovacích příkazů, což umožňuje snížit spotřebu energie na úroveň jednoho vláknového zpracování při provádění programů, které nevyužívají celé pásmo propustnosti příkazového toku.
    • V Direct3D 10 byla implementována podpora dalších efektů.
    • Byly provedeny optimalizace výkonu v kódu WineD3D a backendu využívajícím grafické API Vulkan.
    • Do kódu vykreslování založeného na API Vulkan byla přidána kontrola schopností, které zařízení podporuje, a výstup aplikaci informací o dostupné úrovni funkčnosti Direct3D.
    • Byly implementovány funkce D3DXFillTextureTX a D3DXFillCubeTextureTX.
    • Do klasického backendu shaderů OpenGL ARB byla přidána podpora určení stínů pomocí rozšíření ARB_fragment_program_shadow.
    • Do D3DXLoadMeshHierarchyFromX a podobných funkcí byla přidána podpora načítání uživatelských dat pomocí rozhraní ID3DXLoadUserData.
  • Zvuk a video
    • Byla navržena počáteční implementace API DirectMusic. Byla přidána podpora sbírek, nástrojů a zvukových vzorků ve formátu SoundFont. Byla přidána podpora efeku Doppler. Byly implementovány testy pro ověření správnosti implementace při práci sekvenčního nástroje dmime a MIDI syntetizátoru dmsynth.
    • Pro použití v API DirectMusic byla integrována knihovna FluidSynth.
    • Byla implementována podpora načítání zvukových fontů (SoundFont — formáty pro syntézu na základě vzorků používané pro reprodukci MIDI souborů) ve formátech DLS1 a DLS2, stejně jako ve formátu SF2 používaném v Linuxu.
    • Byla přidána možnost reprodukce MIDI obsahu pomocí knihovny dmsynth, využívající softwarový syntetizátor FluidSynth a API DirectSound pro výstup zvuku.
    • Byl přidán dekodér pro video ve formátu video kodeku Indeo IV50.
  • DirectShow
    • Byl implementován komponent DMO (DirectX Media Object) s dekodérem formátu WMV (Windows Media Video).
    • Byl přidán filtr pro zachycení zvuku (DirectShow Audio Capture Filter).
    • Do filtru pro rozdělení toků MPEG‑1 (DirectShow MPEG‑1 Stream Splitter) byla přidána podpora video streamů a služebních toků kromě zvukových streamů.
    • Byl implementován filtr pro dekódování videa ve formátu MPEG‑1 (DirectShow MPEG‑1 Video Decoder).
  • Vstupní zařízení
    • V DirectInput byla implementována podpora mapování akcí (action maps), které umožňují přiřadit tlačítka na herním ovladači k určitým akcím ve hrách.
  • Integrace s plochou
    • Bylo zajištěno exportování do hlavního uživatelského prostředí přiřazení, které umožňuje spouštět aplikace ovládané Wine jako obslužné programy protokolů při otevření URL (například spuštění spotify.exe při otevření odkazů typu „spotify:user:spotify:playlist:848218482355482821“).
    • Bylo realizováno extrakce dat EDID (Extended Display Identification Data) s informacemi o parametrech připojeného monitoru, jako je název a model zařízení.
    • Byla poskytnuta možnost zavření okna pracovní plochy zobrazeného v režimu celé obrazovky pomocí tlačítka „Exit desktop“ v nabídce „Start“.
  • Mezinárodní standardizace
    • Byla rozšířena podpora IME (Input Method Editors). Byla provedena práce na zajištění kompatibility s nativními implementacemi IME pro Windows a na zlepšení integrace s Linux IME.
    • Byla zajištěna generace DB lokalizací ve formátu locale.nls z databáze Unicode CLDR (Unicode Common Locale Data Repository) verze 44. Byla přidána podpora dalších lokalizací bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA, prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN a za-CN.
    • Došlo k překladu rozhraní do gruzínského jazyka. Byly zajištěny úplné překlady pro 16 jazyků a částečné pro 31 jazyků.
    • Tabulky symbolů Unicode byly aktualizovány na verzi standardu 15.1.0. Byla aktualizována databáze časových pásem.
  • Jádro (rozhraní jádra Windows)
    • Jako ve výchozí verzi Windows byla určena Windows 10.
    • Pro spustitelné soubory ve formátu PE byla implementována podpora randomizace adresního prostoru (ASLR), ale adresy načítání kódu do paměti zatím nejsou plně randomizovány.
    • Byla implementována podpora slabě fragmentované haldy (LFH, Low Fragmentation Heap), což umožnilo zvýšit výkon operací alokace paměti.
    • Do mechanismu alokace virtuální paměti byla přidána podpora rezervace paměti (placeholder), která umožňuje aplikaci rezervovat určitou oblast virtuální paměti pro budoucí použití.
    • 64-bitové načítače (loader a preloader) spustitelných souborů a knihoven byly sestaveny ve formátu PIE (Position-Independent Executables) pro uvolnění části 32-bitového adresního prostoru.
    • Byla zajištěna správná rozvinutí zásobníku (stack unwinding) pro systémové volání NT a uživatelské callbackové volání.
  • Síťové funkce
    • V enginu MSHTML byla implementována podpora mechanismu sběru odpadu „Cycle Collection“.
    • Do MSHTML byla přidána podpora synchronního režimu zpracování požadavků XMLHttpRequest.
    • Do jscript.dll byla přidána podpora objektu WeakMap pro práci se sadou párů klíč/hodnota, kde klíč je objekt, ke kterému může být přiřazena libovolná hodnota. Byly implementovány metody WeakMap.get(), WeakMap.delete(), WeakMap.clear() a WeakMap.has().
    • Browsertengine Gecko byl aktualizován na verzi 2.47.4.
    • Byla realizována podpora oznámení o změně stavu síťového rozhraní.
  • Kryptografie a bezpečnost
    • Do knihovny Winscard.dll byla přidána podpora čipových karet implementovaných prostřednictvím systémové knihovny PCSClite.
    • Do BCrypt byla přidána podpora protokolu výměny klíčů Diffie-Hellman.
    • Byl implementován balíček Negotiate, který poskytuje rozhraní pro používání SSPI (Security Support Provider Interface) pro volání poskytovatelů SSP (Security Support Provider).
  • Vestavěné aplikace
    • V ladicím programu Wine Debugger (winedbg) pro disassemblaci strojových instrukcí X86 byla zapojena knihovna Zydis.
    • Do rozhraní WineCfg byla přidána možnost nastavení starších verzí Windows (do XP) na 64-bitových platformách, což umožňuje spouštět zastaralé aplikace v režimu WoW64.
    • Ve všech vestavěných grafických aplikacích byla realizována výstupní zpráva o chybách v samostatném dialogu místo jejich zobrazení v konzoli.
    • V programu systeminfo byla zajištěna možnost zobrazení informací z databáze WMI (Windows Management Instrumentation).
    • Byla přidána aplikace klist pro zobrazení Kerberos tiketů.
    • V aplikaci taskkill byla implementována možnost nuceného ukončení podřízených procesů.
    • Do utility start byl přidán parametr „/machine“ pro výběr architektury používané při spuštění hybridních spustitelných souborů, které podporují x86 a ARM.
    • Byla implementována většina funkcí programu tasklist.
    • Byla přidána základní implementace aplikace findstr.
  • Nástroje pro vývojáře
    • V utilitě WineDump byla zavedena možnost výstupu obsahu souborů registru Windows (formát REGF) a také zobrazení údajů pro všechny architektury (x86/ARM64), které jsou podporovány v hybridních PE souborech.
    • V překladači IDL byla přidána podpora atributů „composable“, „default_overload“, „deprecated“ a „protected“.
    • Byla odstraněna knihovna libwine.so, která byla prohlášena za zastaralou ve verzi Wine 6.0 a nyní se už dlouho nepoužívá ve Wine. Programy ve formátu ELF, sestavené ve starších verzích Wine (5.0 a starších) s libwine.so, vyžadují pro spuštění ve Wine 9.0 přepracování.
  • Vestavěné knihovny a externí závislosti
    • Součástí integrace jsou knihovny FluidSynth 2.3.3, Musl 1.2.3 (pouze matematické funkce) a Zydis 4.0.0.
    • Byly aktualizovány na nové verze 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, LibXslt 1.1.38 a Zlib 1.3. Engin Wine Mono s implementací platformy .NET byl aktualizován na verzi 8.1.0.
    • V ovladači winewayland.drv jsou jako externí závislosti použity klientská knihovna Wayland a také knihovny xkbcommon a xkbregistry.
    • Pro podporu smart karet je použita externí knihovna PCSClite (v macOS - PCSC).
    • Pro sestavení PE souborů na platformách jiných než i386 je nyní vyžadován krosový kompilátor s podporou direktiv „.seh“ pro zpracování výjimek.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster