Stabilné vydanie Wine 7.0

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

Pridať komentár