Po roku vývoja a 30 experimentálnych verziách bola predstavená stabilná verzia otvorenej implementácie Win32 API - Wine 7.0, ktorá obsahovala viac ako 9100 64 zmien. Medzi kľúčové úspechy novej verzie patrí preklad väčšiny modulov Wine do formátu PE, podpora tém, rozšírenie zásobníka pre joysticky a vstupné zariadenia s rozhraním HID a implementácia architektúry WoW32 pre spustenie 64-bitových programov v XNUMX-bitové prostredie.
Wine potvrdilo plnú prevádzku 5156 (pred rokom 5049) programov pre Windows, ďalších 4312 (pred rokom 4227) programov funguje perfektne s dodatočnými nastaveniami a externými DLL. 3813 3703 programov (pred XNUMX XNUMX rokmi) má menšie prevádzkové problémy, ktoré nezasahujú do používania hlavných funkcií aplikácií.
Kľúčové inovácie vo Wine 7.0:
- Moduly vo formáte PE
- Takmer všetky knižnice DLL boli skonvertované tak, aby používali spustiteľný formát súboru PE (Portable Executable, používaný v systéme Windows) namiesto ELF. Použitie PE rieši problémy s podporou rôznych schém ochrany proti kopírovaniu, ktoré overujú identitu systémových modulov na disku a v pamäti.
- Bola implementovaná možnosť interakcie PE modulov s unixovými knižnicami pomocou štandardného systémového volania jadra NT, čo vám umožňuje skryť prístup k Unix kódu pred ladiacimi programami Windows a sledovať registráciu vlákien.
- Vstavané knižnice DLL sa teraz načítajú iba vtedy, ak je na disku zodpovedajúci súbor PE, bez ohľadu na to, či ide o skutočnú knižnicu alebo o stub. Táto zmena umožňuje aplikácii vždy vidieť správnu väzbu na súbory PE. Ak chcete zakázať toto správanie, môžete použiť premennú prostredia WINEBOOTSTRAPMODE.
- WoW64
- Bola implementovaná architektúra WoW64 (64-bit Windows-on-Windows), ktorá vám umožňuje spúšťať 32-bitové aplikácie Windows v 64-bitových procesoch Unix. Podpora je implementovaná prostredníctvom pripojenia vrstvy, ktorá prekladá 32-bitové systémové volania NT na 64-bitové volania NTDLL.
- WoW64 vrstvy sú pripravené pre väčšinu Unixových knižníc a umožňujú 32-bitovým PE modulom prístup k 64-bitovým Unixovým knižniciam. Po konverzii všetkých modulov do formátu PE bude možné spustiť 32-bitové aplikácie Windows bez inštalácie 32-bitových unixových knižníc.
- Témy
- Bola implementovaná podpora tém. Zahrnuté sú dizajnové motívy „Light“, „Blue“ a „Classic Blue“, ktoré je možné vybrať prostredníctvom konfigurátora WineCfg.
- Pridaná možnosť prispôsobiť vzhľad všetkých ovládacích prvkov rozhrania prostredníctvom tém. Vzhľad prvkov sa automaticky aktualizuje po zmene motívu dizajnu.
- Do všetkých vstavaných aplikácií Wine bola pridaná podpora tém. Aplikácie boli prispôsobené pre obrazovky s vysokou hustotou pixelov (High DPI).
- Grafický subsystém
- Pribudla nová knižnica Win32u, ktorá obsahuje časti knižníc GDI32 a USER32 súvisiace so spracovaním grafiky a správou okien na úrovni jadra. V budúcnosti sa začnú práce na portovaní komponentov ovládača, ako sú winex32.drv a winemac.drv, na Win11u.
- Ovládač Vulkan podporuje špecifikáciu grafického API Vulkan 1.2.201.
- Poskytnutá podpora pre výstup šrafovaných geometrických objektov cez Direct2D API s možnosťou kontroly kliknutia (test hitu).
- Direct2D API poskytuje počiatočnú podporu pre vizuálne efekty aplikované pomocou rozhrania ID2D1Effect.
- Direct2D API pridalo podporu pre rozhranie ID2D1MultiThread, ktoré sa používa na organizáciu exkluzívneho prístupu k zdrojom vo viacvláknových aplikáciách.
- Sada knižníc WindowsCodecs poskytuje podporu pre dekódovanie obrázkov vo formáte WMP (Windows Media Photo) a kódovanie obrázkov vo formáte DDS (DirectDraw Surface). Už nepodporujeme kódovanie obrázkov vo formáte ICNS (pre macOS), ktorý nie je podporovaný v systéme Windows.
- Direct3D
- Nové vykresľovacie jadro bolo výrazne vylepšené a prekladá volania Direct3D do grafického API Vulkan. Vo väčšine situácií bola úroveň podpory pre Direct3D 10 a 11 v motore založenom na Vulkan vyrovnaná so starším motorom založeným na OpenGL. Ak chcete povoliť vykresľovacie jadro Vulkan, nastavte premennú registra Direct3D "renderer" na "vulkan".
- Mnoho funkcií Direct3D 10 a 11 je implementovaných, vrátane odložených kontextov, stavových objektov fungujúcich v kontexte zariadenia, trvalých posunov vo vyrovnávacích pamätiach, vymazania zobrazení textúr mimo poradia, kopírovania údajov medzi zdrojmi v beztypových formátoch (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS), atď. .
- Pridaná podpora pre konfigurácie viacerých monitorov, ktorá vám umožňuje vybrať monitor na zobrazenie aplikácie Direct3D v režime celej obrazovky.
- DXGI API poskytuje korekciu gama obrazovky, ktorú môžu použiť aplikácie založené na Direct3D 10 a 11 na zmenu jasu obrazovky. Povolené načítanie virtuálnych počítadiel framebufferov (SwapChain).
- Direct3D 12 pridáva podporu pre koreňové podpisy verzie 1.1.
- V kóde vykresľovania cez Vulkan API sa zlepšila efektivita spracovania dotazov, keď systém podporuje rozšírenie VK_EXT_host_query_reset.
- Pridaná možnosť výstupu virtuálnych framebufferov (SwapChain) cez GDI, ak OpenGL alebo Vulkan nemožno použiť na zobrazenie, napríklad pri výstupe do okna z rôznych procesov, napríklad v programoch založených na frameworku CEF (Chromium Embedded Framework).
- Pri použití backendu shadera GLSL je pre inštrukcie shadera zabezpečený „presný“ modifikátor.
- DirectDraw API pridáva podporu pre 3D vykresľovanie do systémovej pamäte pomocou softvérových zariadení ako „RGB“, „MMX“ a „Ramp“.
- Do databázy grafických kariet Direct3D pribudli karty AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 a NVIDIA GT 1030.
- Kľúč „UseGLSL“ bol odstránený z registra HKEY_CURRENT_USER\Software\Wine\Direct3D, namiesto ktorého od verzie Wine 5.0 musíte použiť „shader_backend“.
- Na podporu Direct3D 12 teraz potrebujete aspoň verziu 3 knižnice vkd1.2d.
- D3DX
- Implementácia D3DX 10 zlepšila podporu pre rámec vizuálnych efektov a pridala podporu pre obrazový formát Windows Media Photo (JPEG XR)
- Pridané funkcie na vytváranie textúr poskytované v D3DX10, ako napríklad D3DX10CreateTextureFromMemory().
- Softvérové rozhrania ID3DX10Sprite a ID3DX10Font boli čiastočne implementované.
- Zvuk a video
- Doplnky GStreamer pre DirectShow a rámec Media Foundation sú spojené do jedného spoločného backendu WineGStreamer, čo by malo zjednodušiť vývoj nových API na dekódovanie obsahu.
- Na základe backendu WineGStreamer sú objekty Windows Media implementované na synchrónne a asynchrónne čítanie.
- Implementácia rámca Media Foundation bola ďalej vylepšená, bola pridaná podpora pre funkcionalitu IMFPMediaPlayer a alokátor vzoriek a vylepšená bola podpora pre vyrovnávacie pamäte vykresľovania EVR a SAR.
- Knižnica wineqtdecoder, ktorá poskytuje dekodér pre formát QuickTime, bola odstránená (všetky kodeky teraz používajú GStreamer).
- Vstupné zariadenia
- Zásobník pre vstupné zariadenia, ktoré podporujú protokol HID (Human Interface Devices), bol výrazne vylepšený a poskytuje funkcie, ako je analýza HID deskriptorov, spracovanie HID správ a poskytovanie mini-HID ovládačov.
- V backendoch ovládača winebus.sys bol vylepšený preklad popisov zariadení do HID správ.
- Pridaný nový backend DirectInput pre joysticky, ktoré podporujú protokol HID. Bola implementovaná možnosť používať efekty spätnej väzby v joystickoch. Vylepšený ovládací panel joysticku. Optimalizovaná interakcia so zariadeniami kompatibilnými s XInput. Vo WinMM bola podpora joysticku presunutá do DInput namiesto použitia backendu evdev v systéme Linux a IOHID v systéme macOS IOHID. Starý ovládač joysticku winejoystick.drv bol odstránený.
- Do modulu DInput boli pridané nové testy založené na použití virtuálnych zariadení HID a nevyžadujúcich fyzické zariadenie.
- Text a fonty
- Pridaný objekt Font Set do DirectWrite.
- RichEdit správne implementuje rozhranie TextHost.
- Kernel (rozhrania jadra systému Windows)
- Pri spustení neidentifikovaného spustiteľného súboru (napríklad „wine foo.msi“) vo Wine sa teraz volá start.exe, ktorý vyvolá obslužné programy priradené k typu súboru.
- Pridaná podpora pre synchronizačné mechanizmy NtAlertThreadByThreadId a NtWaitForAlertByThreadId, podobne ako futexy v Linuxe.
- Pridaná podpora pre ladiace objekty NT používané na ladenie funkcií jadra.
- Pridaná podpora pre dynamické kľúče databázy Registry na ukladanie údajov o výkone.
- C Runtime
- Runtime C implementuje celú sadu matematických funkcií, ktoré sa prenášajú hlavne z knižnice Musl.
- Všetky platformy CPU poskytujú správnu podporu pre funkcie s pohyblivou rádovou čiarkou.
- Sieťové funkcie
- Vylepšený režim kompatibility pre Internet Explorer 11 (IE11), ktorý sa teraz štandardne používa na spracovanie dokumentov HTML.
- Knižnica mshtml implementuje režim JavaScript ES6 (ECMAScript 2015), ktorý poskytuje podporu pre funkcie, ako sú výraz let a objekt Map.
- Inštalácia balíkov MSI s doplnkami k jadru Gecko do pracovného adresára Wine sa teraz vykonáva podľa potreby a nie počas aktualizácie Wine.
- Pridaná podpora protokolu DTLS.
- Bola implementovaná služba NSI (Network Store Interface), ktorá ukladá a prenáša informácie o smerovaní a sieťových rozhraniach v počítači do iných služieb.
- Manipulátory rozhrania WinSock API, ako napríklad setsockopt a getsockopt, boli presunuté do NTDLL a ovládača afd.sys, aby vyhovovali architektúre Windows.
- Vlastné sieťové databázové súbory Wine, ako sú /etc/protocols a /etc/networks, sú teraz nainštalované v pracovnom adresári Wine namiesto prístupu k podobným unixovým databázam.
- Alternatívne platformy
- Pridaná podpora pre zariadenia Apple založené na čipoch M1 ARM (Apple Silicon).
- Podpora funkcií BCrypt a Secur32 v systéme macOS teraz vyžaduje inštaláciu knižnice GnuTLS.
- 32-bitové spustiteľné súbory pre platformy ARM sú teraz postavené v režime Thumb-2, podobne ako Windows. Na načítanie takýchto súborov sa používa preloader.
- Pre 32-bitové platformy ARM bola implementovaná podpora pre uvoľnenie výnimiek.
- Pre FreeBSD bol rozšírený počet podporovaných dotazov na nízkoúrovňové systémové informácie, ako je stav pamäte a úroveň nabitia batérie.
- Vstavané aplikácie a vývojové nástroje
- Pomôcka reg.exe pridala podporu pre 32- a 64-bitové zobrazenia registra. Pridaná podpora pre kopírovanie kľúčov databázy Registry.
- Pomôcka WineDump pridala podporu pre výpis metadát systému Windows a zobrazenie podrobných informácií o položkách CodeView.
- Wine Debugger (winedbg) poskytuje možnosť ladiť 32-bitové procesy zo 64-bitového debuggera.
- Do kompilátora IDL (widl) bola pridaná možnosť načítať knižnice zabudované do súborov PE (widl), bola poskytnutá podpora pre atribúty a konštrukcie špecifické pre WinRT a implementovalo sa vyhľadávanie knižníc podľa platformy.
- Montážny systém
- V adresároch špecifických pre architektúru sa teraz knižnice ukladajú s názvami, ktoré odrážajú architektúru a typ spustiteľného súboru, napríklad „i386-windows“ pre formát PE a „x86_64-unix“ pre knižnice unix, čo umožňuje podporu pre rôzne architektúry v jednotnú inštaláciu Wine a poskytnúť krížovú kompiláciu Winelib.
- Na nastavenie možnosti v hlavičkách súborov PE, ktorá riadi prechod na používanie natívnych knižníc DLL, bol do winebuild pridaný príznak '--prefer-native option' (spracovanie DLL_WINE_PREATTACH v DllMain bolo zastavené).
- Pridaná podpora pre verziu 4 dátového formátu ladenia Dwarf, ktorý sa teraz štandardne používa pri vytváraní Wine knižníc.
- Pridaná možnosť zostavenia '—enable-build-id' na uloženie jedinečných identifikátorov zostavy do spustiteľných súborov.
- Pridaná podpora pre používanie kompilátora Clang v režime kompatibility MSVC.
- rôzne
- Názvy typických adresárov v používateľskom prostredí (Windows Shell) sú dané schémou používanou počnúc Windows Vista, t.j. Namiesto 'My Documents' sa teraz vytvorí adresár 'Documents' a väčšina údajov sa uloží do adresára 'AppData'.
- Do vrstvy knižnice OpenCL bola pridaná podpora špecifikácie OpenCL 1.2.
- Ovládač WinSpool pridal podporu pre rôzne veľkosti strán pri tlači.
- Pridaná počiatočná podpora pre MSDASQL, poskytovateľa Microsoft OLE DB pre ovládače ODBC.
- Motor Wine Mono s implementáciou platformy .NET bol aktualizovaný na verziu 7.0.0.
- Údaje Unicode boli aktualizované na špecifikáciu Unicode 14.
- Zdrojový strom obsahuje knižnice Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt a Zlib, ktoré sú kompilované vo formáte PE a nevyžadujú verziu vo formáte Unix. Zároveň je možné tieto knižnice importovať zo systému a použiť tak externé zostavy namiesto vstavaných možností PE.
Zdroj: opennet.ru