Stabilní vydání Wine 7.0

Po roce vývoje a 30 experimentálních verzích byla představena stabilní verze otevřené implementace Win32 API - Wine 7.0, která obsahovala více než 9100 64 změn. Mezi klíčové úspěchy nové verze patří překlad většiny modulů Wine do formátu PE, podpora témat, rozšíření zásobníku pro joysticky a vstupní zařízení s rozhraním HID a implementace architektury WoW32 pro spouštění 64bitových programů v XNUMXbitové prostředí.

Wine potvrdilo plné fungování 5156 (před rokem 5049) programů pro Windows, dalších 4312 (před rokem 4227) programů funguje perfektně s dodatečným nastavením a externími DLL. 3813 3703 programů (před XNUMX XNUMX lety) má drobné provozní problémy, které nenarušují používání hlavních funkcí aplikací.

Klíčové inovace ve Wine 7.0:

  • Moduly ve formátu PE
    • Téměř všechny knihovny DLL byly převedeny na formát spustitelných souborů PE (Portable Executable, používaný ve Windows) namísto ELF. Použití PE řeší problémy s podporou různých schémat ochrany proti kopírování, která ověřují identitu systémových modulů na disku a v paměti.
    • Byla implementována možnost interakce PE modulů s unixovými knihovnami pomocí standardního systémového volání jádra NT, což umožňuje skrýt přístup k unixovému kódu před ladicími programy Windows a sledovat registraci vláken.
    • Vestavěné knihovny DLL se nyní načítají pouze v případě, že je na disku odpovídající soubor PE, bez ohledu na to, zda se jedná o skutečnou knihovnu nebo útržek. Tato změna umožňuje aplikaci vždy vidět správnou vazbu na soubory PE. Chcete-li toto chování zakázat, můžete použít proměnnou prostředí WINEBOOTSTRAPMODE.
  • WoW64
    • Byla implementována architektura WoW64 (64-bit Windows-on-Windows), která vám umožňuje spouštět 32bitové aplikace Windows v 64bitových unixových procesech. Podpora je implementována prostřednictvím připojení vrstvy, která převádí 32bitová systémová volání NT na 64bitová volání NTDLL.
    • Vrstvy WoW64 jsou připraveny pro většinu unixových knihoven a umožňují 32bitovým PE modulům přístup k 64bitovým unixovým knihovnám. Jakmile budou všechny moduly převedeny do formátu PE, bude možné spouštět 32bitové aplikace Windows bez instalace 32bitových unixových knihoven.
  • Témata
    • Byla implementována podpora tématu. Jsou zahrnuty motivy designu „Light“, „Blue“ a „Classic Blue“, které lze vybrat pomocí konfigurátoru WineCfg.
    • Přidána možnost přizpůsobit vzhled všech ovládacích prvků rozhraní prostřednictvím témat. Vzhled prvků se automaticky aktualizuje po změně motivu návrhu.
    • Podpora motivů byla přidána do všech vestavěných aplikací Wine. Aplikace byly přizpůsobeny obrazovkám s vysokou hustotou pixelů (High DPI).
  • Grafický subsystém
    • Byla přidána nová knihovna Win32u, která zahrnuje části knihoven GDI32 a USER32 související se zpracováním grafiky a správou oken na úrovni jádra. V budoucnu začnou práce na portování komponent ovladače, jako je winex32.drv a winemac.drv, na Win11u.
    • Ovladač Vulkan podporuje specifikaci grafického API Vulkan 1.2.201.
    • Poskytovaná podpora pro výstup šrafovaných geometrických objektů prostřednictvím rozhraní Direct2D API se schopností zkontrolovat, zda bylo kliknutí dosaženo (test hitu).
    • Direct2D API poskytuje počáteční podporu pro vizuální efekty aplikované pomocí rozhraní ID2D1Effect.
    • Direct2D API přidalo podporu pro rozhraní ID2D1MultiThread, které se používá k organizaci exkluzivního přístupu ke zdrojům ve vícevláknových aplikacích.
    • Sada knihoven WindowsCodecs poskytuje podporu pro dekódování obrázků ve formátu WMP (Windows Media Photo) a kódování obrázků ve formátu DDS (DirectDraw Surface). Již nepodporujeme kódování obrázků ve formátu ICNS (pro macOS), který není podporován ve Windows.
  • Direct3D
    • Nové vykreslovací jádro bylo výrazně vylepšeno a převádí volání Direct3D do grafického API Vulkan. Ve většině situací byla úroveň podpory pro Direct3D 10 a 11 v enginu založeném na Vulkan přivedena na úroveň se starším enginem založeným na OpenGL. Chcete-li povolit vykreslovací modul Vulkan, nastavte proměnnou registru Direct3D "renderer" na "vulkan".
    • Je implementováno mnoho funkcí Direct3D 10 a 11, včetně odložených kontextů, stavových objektů pracujících v kontextu zařízení, trvalých offsetů ve vyrovnávacích pamětech, vymazání zobrazení textur mimo pořadí, kopírování dat mezi zdroji v beztypových formátech (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS), atd. .
    • Přidána podpora konfigurací s více monitory, která umožňuje vybrat monitor pro zobrazení aplikace Direct3D v režimu celé obrazovky.
    • DXGI API poskytuje gama korekci obrazovky, kterou mohou používat aplikace založené na Direct3D 10 a 11 ke změně jasu obrazovky. Povoleno načítání čítačů virtuálních framebufferů (SwapChain).
    • Direct3D 12 přidává podporu pro kořenové podpisy verze 1.1.
    • Ve vykreslovacím kódu přes Vulkan API byla vylepšena efektivita zpracování dotazů, když systém podporuje rozšíření VK_EXT_host_query_reset.
    • Přidána možnost výstupu virtuálních framebufferů (SwapChain) přes GDI, pokud OpenGL nebo Vulkan nelze použít pro zobrazení, například při výstupu do okna z různých procesů, například v programech založených na frameworku CEF (Chromium Embedded Framework).
    • Při použití backendu shaderu GLSL je pro instrukce shaderu zajištěn "přesný" modifikátor.
    • DirectDraw API přidává podporu pro 3D vykreslování do systémové paměti pomocí softwarových zařízení, jako jsou „RGB“, „MMX“ a „Ramp“.
    • Do databáze grafických karet Direct3D byly přidány karty AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 a NVIDIA GT 1030.
    • Klíč „UseGLSL“ byl odstraněn z registru HKEY_CURRENT_USER\Software\Wine\Direct3D, místo kterého je od Wine 5.0 potřeba použít „shader_backend“.
    • Pro podporu Direct3D 12 nyní potřebujete alespoň verzi 3 knihovny vkd1.2d.
  • D3DX
    • Implementace D3DX 10 zlepšila podporu pro rámec vizuálních efektů a přidala podporu pro obrazový formát Windows Media Photo (JPEG XR)
    • Přidané funkce pro vytváření textur poskytované v D3DX10, jako je D3DX10CreateTextureFromMemory().
    • Softwarová rozhraní ID3DX10Sprite a ID3DX10Font byla částečně implementována.
  • Zvuk a video
    • Doplňky GStreamer pro DirectShow a framework Media Foundation jsou sloučeny do jednoho společného backendu WineGStreamer, což by mělo zjednodušit vývoj nových API pro dekódování obsahu.
    • Na základě backendu WineGStreamer jsou objekty Windows Media implementovány pro synchronní a asynchronní čtení.
    • Implementace frameworku Media Foundation byla dále vylepšena, byla přidána podpora pro funkcionalitu IMFPMediaPlayer a alokátor vzorků a byla vylepšena podpora vyrovnávací paměti vykreslování EVR a SAR.
    • Knihovna wineqtdecoder, která poskytuje dekodér pro formát QuickTime, byla odstraněna (všechny kodeky nyní používají GStreamer).
  • Vstupní zařízení
    • Zásobník pro vstupní zařízení, která podporují protokol HID (Human Interface Devices), byl výrazně vylepšen a poskytuje funkce, jako je analýza HID deskriptorů, zpracování HID zpráv a poskytování mini-HID ovladačů.
    • V backendech ovladače winebus.sys byl vylepšen překlad popisů zařízení do zpráv HID.
    • Přidán nový backend DirectInput pro joysticky, které podporují protokol HID. Byla implementována možnost používat efekty zpětné vazby v joystickech. Vylepšený ovládací panel joysticku. Optimalizovaná interakce se zařízeními kompatibilními s XInput. Ve WinMM byla podpora joysticku přesunuta do DInput namísto použití backendu evdev na Linuxu a IOHID na macOS IOHID. Starý ovladač joysticku winejoystick.drv byl odstraněn.
    • Do modulu DInput byly přidány nové testy založené na použití virtuálních zařízení HID a nevyžadujících fyzické zařízení.
  • Text a písma
    • Přidán objekt Font Set do DirectWrite.
    • RichEdit správně implementuje rozhraní TextHost.
  • Kernel (rozhraní jádra systému Windows)
    • Při spuštění neidentifikovaného spustitelného souboru (jako je „wine foo.msi“) ve Wine se nyní zavolá start.exe, který vyvolá obslužné rutiny spojené s typem souboru.
    • Přidána podpora pro synchronizační mechanismy NtAlertThreadByThreadId a NtWaitForAlertByThreadId, podobné futexům v Linuxu.
    • Přidána podpora pro ladicí objekty NT používané k ladění funkcí jádra.
    • Přidána podpora dynamických klíčů registru pro uložení dat o výkonu.
  • C Runtime
    • Runtime C implementuje úplnou sadu matematických funkcí, které jsou převážně přeneseny z knihovny Musl.
    • Všechny platformy CPU poskytují správnou podporu funkcí s pohyblivou řádovou čárkou.
  • Síťové funkce
    • Vylepšený režim kompatibility pro Internet Explorer 11 (IE11), který se nyní standardně používá pro zpracování dokumentů HTML.
    • Knihovna mshtml implementuje režim JavaScriptu ES6 (ECMAScript 2015), který poskytuje podporu pro funkce, jako je výraz let a objekt Map.
    • Instalace balíčků MSI s dodatky k enginu Gecko do pracovního adresáře Wine se nyní provádí v případě potřeby, nikoli během aktualizace Wine.
    • Přidána podpora protokolu DTLS.
    • Byla implementována služba NSI (Network Store Interface), která ukládá a přenáší informace o směrování a síťových rozhraních v počítači do jiných služeb.
    • Obslužné rutiny rozhraní WinSock API, jako jsou setsockopt a getsockopt, byly přesunuty do NTDLL a ovladače afd.sys, aby odpovídaly architektuře Windows.
    • Vlastní síťové databázové soubory Wine, jako jsou /etc/protocols a /etc/networks, jsou nyní instalovány v pracovním adresáři Wine namísto přístupu k podobným unixovým databázím.
  • Alternativní platformy
    • Přidána podpora pro zařízení Apple založené na čipech M1 ARM (Apple Silicon).
    • Podpora funkcí BCrypt a Secur32 na macOS nyní vyžaduje instalaci knihovny GnuTLS.
    • 32bitové spustitelné soubory pro platformy ARM jsou nyní postaveny v režimu Thumb-2, podobně jako Windows. K načtení takových souborů se používá preloader.
    • Pro 32bitové platformy ARM byla implementována podpora pro uvolnění výjimek.
    • Pro FreeBSD byl rozšířen počet podporovaných dotazů na nízkoúrovňové systémové informace, jako je stav paměti a úroveň nabití baterie.
  • Vestavěné aplikace a vývojové nástroje
    • Nástroj reg.exe přidal podporu pro 32bitové a 64bitové zobrazení registru. Přidána podpora pro kopírování klíčů registru.
    • Nástroj WineDump přidal podporu pro ukládání metadat Windows a zobrazování podrobných informací o položkách CodeView.
    • Wine Debugger (winedbg) poskytuje možnost ladit 32bitové procesy z 64bitového ladicího programu.
    • Do kompilátoru IDL (widl) byla přidána možnost načítat knihovny zabudované do souborů PE, byla poskytnuta podpora pro atributy a konstrukce specifické pro WinRT a bylo implementováno vyhledávání knihoven podle platformy.
  • Montážní systém
    • V adresářích specifických pro architekturu jsou nyní knihovny ukládány s názvy, které odrážejí architekturu a typ spustitelného souboru, jako například 'i386-windows' pro formát PE a 'x86_64-unix' pro knihovny unix, což umožňuje podporu pro různé architektury v jednom Wine. instalace a zajištění křížové kompilace Winelib.
    • Chcete-li nastavit možnost v záhlaví souborů PE, která řídí přechod na použití nativních knihoven DLL, byl do winebuild přidán příznak '--prefer-native option' (zpracování DLL_WINE_PREATTACH v DllMain bylo zastaveno).
    • Přidána podpora pro verzi 4 formátu dat pro ladění Dwarf, který se nyní standardně používá při vytváření knihoven Wine.
    • Přidána možnost sestavení '—enable-build-id' pro uložení jedinečných identifikátorů sestavení do spustitelných souborů.
    • Přidána podpora pro použití kompilátoru Clang v režimu kompatibility MSVC.
  • Různé
    • Názvy typických adresářů v uživatelském shellu (Windows Shell) jsou dány použitému schématu počínaje Windows Vista, tzn. Místo 'My Documents' je nyní vytvořen adresář 'Documents' a většina dat je uložena do adresáře 'AppData'.
    • Do vrstvy knihovny OpenCL byla přidána podpora specifikace OpenCL 1.2.
    • Ovladač WinSpool přidal podporu pro různé velikosti stránek při tisku.
    • Přidána počáteční podpora pro MSDASQL, poskytovatele Microsoft OLE DB pro ovladače ODBC.
    • Engine Wine Mono s implementací platformy .NET byl aktualizován na verzi 7.0.0.
    • Data Unicode byla aktualizována na specifikaci Unicode 14.
    • Zdrojový strom obsahuje knihovny Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt a Zlib, které jsou kompilovány ve formátu PE a nevyžadují verzi ve formátu Unix. Současně lze tyto knihovny také importovat ze systému a používat tak externí sestavy namísto vestavěných možností PE.

Zdroj: opennet.ru

Přidat komentář