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.
Bolo potvrdené, že 5156 (5049 pred rokom) programov funguje správne vo Wine WindowsĎalších 4 312 programov (4 227 pred rokom) funguje bezchybne s dodatočnými nastaveniami a externými knižnicami DLL. 3 813 programov (3 703 pred rokom) má menšie problémy, ktoré nenarúšajú základnú funkčnosť aplikácií.
Kľúčové inovácie vo Wine 7.0:
- Moduly vo formáte PE
- Takmer všetky knižnice DLL boli konvertované na použitie formátu spustiteľných súborov PE (Portable Executable, používa sa v). Windows) namiesto ELF. Použitie PE rieši problém podpory 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 s knižnicami Unixu pomocou štandardného systémového volania jadra NT, čo umožňuje skryť prístup k kódu Unixu pred debuggermi. Windows a sledovať registráciu tokov.
- 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
- Implementovaná architektúra WoW64 (64-bitová) Windows-ON-Windows), čo vám umožňuje spúšťať 32-bitové Windows- aplikácie v 64-bitových unixových procesoch. Podpora je implementovaná prostredníctvom vrstvy, ktorá prekladá 32-bitové systémové volania NT na 64-bitové volania NTDLL.
- Medzivrstvy WoW64 sú pripravené pre väčšinu unixových knižníc a umožňujú 32-bitovým modulom vo formáte PE 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é Windows-aplikácie 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.
- V súbore knižníc WindowsBola implementovaná podpora kodekov na dekódovanie obrázkov vo formáte WMP (Windows Media Photo) a kódovanie obrázkov vo formáte DDS (DirectDraw Surface). Podpora kódovania obrázkov vo formáte ICNS (pre macOS), čo nie je podporované v 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 vylepšuje podporu pre rámec vizuálnych efektov a pridáva podporu pre obrazový formát. Windows Mediálna fotografia (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.
- Objekty sú implementované na základe backendu WineGStreamer Windows Médiá pre 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. Implementovaná možnosť použitia efektov silovej spätnej väzby v joystickoch. Vylepšené. ovládací panel Joysticky. Optimalizovaná interakcia so zariadeniami kompatibilnými s XInput. Vo WinMM bola podpora joysticku presunutá do DInput namiesto použitia backendu evdev. Linux a IOHID v macOS IOHID. Odstránený starý ovládač joysticku winejoystick.drv.
- 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.
- Jadro (rozhrania jadra 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, ktoré sú blízke futexom v Linux.
- 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.
- Obslužné programy rozhrania WinSock API, ako napríklad setsockopt a getsockopt, boli presunuté do ovládača NTDLL a afd.sys, aby sa prispôsobili 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 na platforme macOS Teraz je potrebná inštalácia knižnice GnuTLS.
- 32-bitové spustiteľné súbory pre platformy ARM sú teraz zostavované v režime Thumb-2, podobne ako WindowsNa načítanie takýchto súborov sa používa predbežný načítač.
- 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.
- Nástroj WineDump teraz podporuje výstup metadát. Windows a zobraziť podrobné informácie o záznamoch 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
- Pomenovanie typických adresárov v používateľskom shelli (Windows Shell) sa redukuje na schému používanú od roku Windows Vista, t. j. namiesto priečinka „Moje dokumenty“ sa teraz vytvorí priečinok „Dokumenty“ a väčšina údajov sa uloží do priečinka „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
