Po roku vývoja a 25 experimentálnych verziách bol predstavený stabilný release otvorenej implementácie Win32 API — Wine 11.0, ktorý obsahuje viac ako 6300 zmien a 600 opráv chýb. Medzi kľúčové úspechy v novej verzii patrí úplná podpora NTSYNC, implementácia mechanizmu Reparse Point a využitie novej implementácie architektúry WoW64.
V Wine bola potvrdená plná funkčnosť 5419 programov pre Windows (pred rokom 5372, pred dvoma rokmi 5336, pred tromi rokmi 5266), ďalších 4500 programov (pred rokom 4435, pred dvoma rokmi 4397, pred tromi rokmi 4370) funguje výborne pri ďalších nastaveniach a externých DLL. Pri 4086 programoch (pred rokom 4020, pred dvoma rokmi 3943, pred tromi rokmi 3888) sa pozorujú drobné problémy, ktoré nebránia používaniu základných funkcií aplikácií.
Kľúčové novinky Wine 11.0:
- Úplná podpora ovládača ntsync, ktorý výrazne zvyšuje výkon hier pre Windows spúšťaných pomocou Wine. Ovládač je súčasťou kernelu Linux od verzie 6.14 a implementuje symbolické zariadenie /dev/ntsync a súbor primitiv pre synchronizáciu, ktoré sa používajú v kernelu Windows NT. Významný nárast výkonu sa dosahuje eliminovaním režijných nákladov spojených s používaním RPC v priestore používateľa.
- Pridaná možnosť nastavenia priorít vlákien v Linuxe a macOS.
- V ntdll bol pridaný API synchronizácie „Synchronization barriers“, ktorý umožňuje pozastaviť vykonávanie niekoľkých vlákien do dosiahnutia určitej výkonnostnej úrovne vo všetkých vláknach (napríklad počkať, kým všetky vlákna dosiahnu určité štádium pri paralelnom vykonávaní toho istého kódu).
- Bola pretransformovaná do plne podporovanej novej implementácie vrstvy WoW64 (64-bit Windows-on-Windows), ktorá umožňuje spúšťať 32-bitové aplikácie Windows v 64-bitových Unixových systémoch. Na rozdiel od starej implementácie WoW64, v ktorej sa 32-bitové aplikácie spúšťali v 32-bitových Unixových procesoch, nový WoW64 zabezpečuje spúšťanie 32-bitového kódu vo vnútri 64-bitového procesu. Bola implementovaná podpora spúšťania 16-bitových aplikácií v režime WoW64.
Vo všetkých moduloch, ktoré pristupujú k Unix knižniciam, sú zavedené prevodníky systémových volaní WoW64 (thunk), ktoré umožňujú 32-bitovým modulom vo formáte PE pristupovať k 64-bitovým Unix knižniciam. Pridaná bola možnosť spúšťania starých inštalácií WoW64 v novom režime prostredníctvom nastavenia premennej prostredia "WINEARCH=wow64". 32-bitové prefixy vytvorené pri nastavení WINEARCH=win32 sú označené ako zastarané a nie sú podporované v novom režime WoW64. Odstránený bol samostatný načítač wine64, namiesto ktorého je použitý univerzálny načítač, ktorý určuje režim podľa bitovej architektúry spusteného súboru.
- Jadro (rozhrania jadra Windows)
- Implementovaný je mechanizmus Reparse Point, pomocou ktorého je možné pripojiť k súborom a adresárom dodatočné údaje, ktoré sú identifikovateľné prostredníctvom tagov. Podporované sú typy Reparse Point, ako symbolické odkazy a montážne body.
- Na zvýšenie výkonu sledovania operácií zápisu do pamäte je použitý mechanizmus UFFD (userfaultfd), ktorý umožňuje vytvárať spracovateľov prístupov k nealokovaným stránkam pamäte (page faults) v užívateľskom priestore. V vykonaných testoch použitie UFFD skrátilo čas načítania úrovní v hre "Streets of Rage 4" z 6-8 sekúnd na 1.5-2 sekundy, čo zodpovedá výkonom spustenia na platforme Windows.
- Sú použité čísla systémových volaní NT, ktoré sú identické s poslednými verziami Windows, čo je potrebné na podporu aplikácií používajúcich pevne zadané čísla systémových volaní.
- Na systémoch ARM64 je realizovaná možnosť simulácie stránok pamäte veľkosti 4K v prostrediach s jadrami Linux, ktoré používajú väčšie stránky pamäte (16K alebo 64K). Simulácia umožňuje spúšťať jednoduché aplikácie, pre zložitejšie programy sa odporúča používať jadrá Linux s 4-kilobajtovými stránkami pamäte.
- Grafický subsystém
- Na systémoch X11 (winex11) je pre OpenGL predvolene použitý vykresľovací backend, ktorý používa EGL. Backend GLX je označený ako zastaraný, ale zatiaľ zostáva dostupný ako záložný a používa sa v prípade nedostatku EGL.
- Pridaná je základná podpora objektov D3DKMT, ktoré poskytujú nízkoúrovňový prístup k grafickým zariadeniam z užívateľského priestoru. Implementované sú Vulkan rozšírenia VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32 a VK_KHR_win32_keyed_mutex.
- V režime WoW64 (64-bit Windows-on-Windows) bola implementovaná podpora mapovania pamäte pre OpenGL pomocou API Vulkan, čo umožňuje zrýchlenie behu 32-bitových OpenGL aplikácií v Wine.
- Bola zavedená emulácia frontového buffera pre OpenGL na platformách bez jeho zabudovanej podpory.
- Do ovládača pre grafické API Vulkan bola pridaná podpora špecifikácie Vulkan 1.4.335.
- V súbore knižníc WindowsCodecs bola rozšírená podpora metadát v súboroch s obrazmi a implementovaná podpora konverzie medzi cel číslicovými formátmi vyjadrenia farby a formátmi s plávajúcou desatinnou čiarkou.
- Bola odstránená závislosť od knižnice OSMesa (Off-screen Mesa). Implementovala sa možnosť vykresľovania bitmapových grafík cez OpenGL s využitím hardvérového akcelerovaného OpenGL runtime.
- Integrácia s pracovnou plochou
- V ovládači winewayland.drv, ktorý umožňuje používať Wine v prostrediach založených na protokole Wayland bez využitia XWayland a komponentov X11, bola implementovaná podpora schránky, vstupných metód, nepravidelných okien a priehľadnosti.
- Bola vylepšená integrácia s X11: zabezpečené posielanie požiadaviek na aktiváciu okien správcu okien a využitie protokolu EWMH na synchronizáciu stavu aktívnych okien X11 a Win32.
- Bola implementovaná podpora exkluzívneho celoplošného režimu. Vylepšená podpora celoplošného režimu v D3D a zlepšená funkčnosť starších hier založených na DDraw.
- Zvýšila sa výkonnosť niektorých funkcií správy okien. Na interakciu medzi procesmi sa využíva zdieľaná pamäť.
- Direct3D
- V Direct3D 11 bola pridaná podpora hardvérového urýchlenia dekódovania videa vo formáte H.264, implementovaná pomocou grafického API Vulkan.
- V Direct3D 11 bola implementovaná podpora minmax filtrácie textúr, s použitím OpenGL rozšírenia GL_ARB_texture_filter_minmax alebo Vulkan rozšírenia VK_EXT_sampler_filter_minmax.
- V Direct3D 11 boli implementované funkcie načítania textúr.
- Bola zavedená rozsiahla podpora funkcií Direct3D pre vykresľovanie cez Vulkan, ako je zmes vrcholov, ploché tieňovanie, užívateľské orezávacie plochy a rôzne formáty zdrojov.
- Vo vstavaných verziách vkd3d-shader bola zlepšená podpora modelov shaderov 1, 2 a 3.
- V metóde D3DXSaveSurfaceToFileInMemory bola implementovaná podpora obrázkov PNG, JPEG a BMP.
- Direct3D 10 a 11 implementovali podporu kompresie a dekompresie formátov BC4 a BC5, ako aj generovanie MIP úrovní (MipMap) pri načítaní textúr.
- Implementované metódy ID3DXEffect::SetRawValue() a ID3DXSkinInfo::UpdateSkinnedMesh().
- Vstupné zariadenia
- Zlepšená kompatibilita s hernými ovládačmi vďaka použitiu backendu hidraw.
- Zlepšená podpora vibračného efektu (Force feedback) pri používaní herných volantov a ovládačov.
- Zlepšená podpora gamepadov v API Windows.Gaming.Input a pri používaní backendu evdev.
- Do ovládacieho panelu herných ovládačov bola pridaná karta na nastavenie API Windows.Gaming.Input.
- Zvýšená kompatibilita DirectInput so starými hrami.
- Bluetooth
- Do ovládača pre Bluetooth bola pridaná možnosť skenovania, nastavenia zistiteľnosti a párovania zariadení.
- Pridaná podpora služieb Bluetooth Low Energy.
- Aplikáciám bola poskytnutá možnosť vytvárať nízkoúrovňové RFCOMM pripojenia s vonkajšími zariadeniami pomocou API Winsock.
- Podpora skenerov
- Implementovaná podpora API TWAIN 2.0, umožňujúca prístup k skenerom z 64-bitových aplikácií.
- Implementovaná podpora komponentu DAT_IMAGENATIVEXFER na prenos obrázka zo skenera do aplikácie.
- Zabezpečené uchovanie vybraného skenera a nastavení skenera v registri.
- Pridaná podpora viacstranového skenovania a automatického podávača dokumentov.
- Zastavená blokácia aplikácie počas volania skenovacieho rozhrania.
- Pridaná podpora nahrania natívnych ovládačov Windows pre skenery.
- Internacionalizácia
- Zabezpečená generácia databázy lokalít vo formáte locale.nls z databázy Unicode CLDR (Unicode Common Locale Data Repository) verzie 48. Pridaná podpora ďalších lokalít bua-RU, bqi-IR, cop-EG, ht-HT, kek-GT, lzz-TR, mww-Hmnp-US, oka-CA, pi-Latn-GB, pms-IT, sgs-LT, suz-Deva-NP a suz-Sunu-NP.
- Tabuľky Unicode boli aktualizované na verziu štandardu 17.0.0. Aktualizovaná databáza časových pásoch.
- Network capabilities
- V engíne MSHTML v režime zhodného štandardu bola zabezpečená práca s atribútmi prvkov ako s plnohodnotnými uzlami DOM. Implementované objekty DOMParser, XDomainRequest a msCrypto.
- Pridaná podpora typovaných polí v JavaScripte.
- Pre ICMPv6 bola implementovaná príkaz ping.
- DB
- Do knižnice MSADO (ActiveX Data Objects) bola pridaná podpora zapisovania zmien do DB. Implementované väčšina funkcií objektu Recordset.
- V knižnici odbc32 bola zlepšená podpora ANSI win32 ovládačov, ktoré nie sú určené na prácu s Unicode. Implementované funkcie SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLGetInfoW(), SQLStatisticsW() a QLColumnsW().
- Built-in applications
- Do WineCfg bola pridaná karta na nastavenie predvoľby MIDI zariadenia.
- V utilite cmd bolo implementované automatické dopĺňanie názvov súborov v interaktívnom režime, pridala sa podpora zložitých príkazov a bola implementovaná príkaz «mklink /j» na vytvorenie Reparse Point.
- Do utility conhost (Console Hosting) bola pridelená podpora pre získavanie histórie stlačením klávesov F1 a F3.
- Boli implementované príkazy timeout, runas a subst.
- Do utility find boli pridané možnosti «/c» na zobrazenie počtu zhôd a /i na porovnávanie bez rozlíšenia veľkých a malých písmen.
- V utilite whoami sa objavila možnosť nastaviť formát výstupu.
- Rôzne
- V implementácii jazyka na popis rozhraní WIDL (Wine Interface Definition Language) bola pridaná podpora generovania metadát Windows Runtime (WinRT). Zabezpečená generácia a inštalácia súborov WinMD (Windows Metadata) pre API WinRT (Windows Runtime).
- Do utility winedump bola pridaná podpora pre dumpovanie zdrojov MUI, čísel systémových volaní, zabudovaných NE-modulov a veľkých súborov PDB (> 4 GB).
- Bola vykonaná refaktorizácia implementácie Common Control, knižnica COMCTL32 bola rozdelená na samostatné moduly pre verzie 5 a 6.
- Do BCrypt bola pridaná podpora štandardu formovania kľúča PBKDF2.
- Bola pridaná podpora pre adresáre UserProgramFiles, AccountPictures a Screenshots.
- Do zostavy boli integrované knižnice LLVM Compiler-RT 8.0.1 a TomCrypt 1.18.2. Na určenie CPU na platforme FreeBSD bola využitá knižnica HwLoc.
- Komponenty Vkd3d 1.18, Faudio 25.12, FluidSynth 2.4.2, LCMS2 2.17, LibMPG123 1.33.0, Libpng 1.6.51, LibTiff 4.7.1, LibXml2 2.12.10, LibXslt 1.1.43 boli aktualizované na nové verzie.
Zdroj: opennet.ru
