Egy év fejlesztés és 29 kísérleti verzió után bemutatásra került a Win32 API nyílt forráskódú megvalósításának stabil verziója — a Wine 10.0, amely több mint 6000 változást tartalmaz. A legfontosabb újítások között szerepel az ARM64EC architektúra teljes támogatása, a nagy pixeldensitású kijelzőkhez való skálázás, a Wayland meghajtó alapértelmezett aktiválása, a képernyő és joystick beállító panelének megvalósítása, egy alternatív multimédiás backend FFmpeg alapokon, Bluetooth meghajtó, a Vulkan 1.4 támogatása és a videomódok váltásának emulálása.
A Wine-ban 5372 Windows program teljes körű működését igazolták (egy évvel ezelőtt 5336, két évvel ezelőtt 5266, három évvel ezelőtt 5156), további 4435 program (egy évvel ezelőtt 4397, két évvel ezelőtt 4370, három évvel ezelőtt 4312) remekül működik külső DLL-ekkel és további beállításokkal. 4020 programnál (egy évvel ezelőtt 3943, két évvel ezelőtt 3888, három évvel ezelőtt 3813) kisebb problémák fordulnak elő, amelyek nem zavarják az alkalmazások alapfunkcióinak használatát.
A Wine 10.0 kulcsfontosságú újításai:
- ARM64
- Teljes körű támogatást biztosít az ARM64EC (ARM64 Emulation Compatible) architektúrához, amelynek támogatási szintje a Wine-ban az ARM64 architektúrával egyenlővé vált. Az ARM64EC architektúra célja az x86_64 rendszerekre eredetileg írt alkalmazások ARM64 rendszerekre való portolásának egyszerűsítése, és lehetővé teszi, hogy ARM64 környezetben egyes x86_64 kódú modulokat egy emulátor segítségével futtassunk.
- Teljes körű támogatást kapott az ARM64X PE fájlformátum, amely lehetővé teszi, hogy egy végrehajtható fájlban egyesítve legyen az ARM64EC és ARM64 architektúrák kódja. A Wine ARM64X formátumban való összegyűjtéséhez szükséges az LLVM telepítése a Git-ből (a szükséges funkcionalitás az LLVM 20-as verziójában fog szerepelni), és a 'configure' szkript futtatásakor a '--enable-archs=arm64ec,aarch64' opciót kell megadni.
- Kifejlesztették a 64-bites x86 rendszerek emulációjához szükséges interfészt. Az ARM64EC használatakor a Wine önállóan fut, és az emuláció csak az x86-64 alkalmazások kódjára vonatkozik. Az emulátor könyvtár egyelőre nem került be az alap Wine összetevői közé, de x86-64 kód ARM64 környezetben való futtatásához egy külső FEX emulátor használható, amely ARM64EC támogatással épült.
- ARM64 támogatásához a rendszerben 4 KB-os memóriablokkok használata szükséges, ahogy azt az ABI Windows megköveteli (16K vagy 64K memóriablokkokkal működő Linux kernellel rendelkező környezetekben a futtatás jelenleg nem támogatott).
- Grafikai alrendszer
- Továbbfejlesztett precíziós skálázás a nagy sűrűségű képernyőkön (High-DPI). A DPI Awareness mód támogatását is biztosítottuk az alkalmazások megjelenítésének kezelésére nagy sűrűségű képernyőkön, figyelembe véve, hogy az alkalmazás támogatja-e a DPI változásához való alkalmazkodást, vagy sem (azok az alkalmazások, amelyek nem veszik figyelembe a DPI-t, automatikusan skálázódnak). Új opciók lettek hozzáadva a High-DPI támogatás felülbírálására bizonyos alkalmazásokhoz vagy Wine előtagokhoz.
- A Vulkan grafikus API-hoz készült meghajtóba került a Vulkan 1.4 specifikáció támogatása (a Wine 9.0-ban a Vulkan 1.3.272 volt a támogatott verzió). Vulkan kiterjesztések támogatása lett hozzáadva a videó kódolásához és dekódolásához.
- Az X11 háttérrel való használatkor lehetőség nyílik Vulkan gyermekkijelzők rajzolására az olyan alkalmazások számára, amelyek ilyen ablakokat használnak 3D-tartalom megjelenítésére (korábban ez a lehetőség csak az OpenGL számára volt elérhető).
- A GdiPlus könyvtárhoz hozzáadódott a betűk összekapcsolásának mechanizmusának támogatása, amely lehetővé teszi, hogy a szöveg megjelenítésekor több betűtípust is felhasználjanak, ha egyedileg nincsenek olyan betűtípusok, amelyek lefedik az összes megjelenő karaktert.
- Wayland
- Az alapértelmezett konfigurációban aktiválva lett a winewayland.drv meghajtó, amely lehetővé teszi a Wine használatát Wayland protokoll alapú környezetekben XWayland és X11 komponensek alkalmazása nélkül. A Wine alapból közvetlenül Wayland-on indítja az alkalmazásokat, ha XWayland nem elérhető, ellenkező esetben az XWayland használatával való indítás marad prioritásos. A Wayland kényszerített aktiválásához használható a DISPLAY környezeti változó, vagy hozzáadható egy kulcs a rendszerleíró adatbázishoz, létrehozva a következő file.reg fájlt: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] "Graphics"="wayland" és azt a következő paranccsal lehet alkalmazni: $ WINEPREFIX=\/út\/a\/prefixhez wine regedit \/út\/a\/file.reg
- A winewayland.drv meghajtóban hozzáadódott az OpenGL és a pixel buffer (pBuffer) támogatása.
- Megoldódott a felugró ablakok pozicionálásával kapcsolatos problémák Wayland alapú környezetekben.
- Wayland használata esetén megvalósult a gombok lenyomva tartásakor a gyorsismétlés támogatása.
- Asztali integráció
- Hozzáadva egy kísérleti "modesetting" emulációs mechanizmus, amely lehetővé teszi a videomódok közötti váltást anélkül, hogy ténylegesen megváltoztatnánk a képernyő beállításait. A képernyő felbontásának megváltozásának látszata anélkül érhető el, hogy átállnánk a videomódra, az ablakok kiterjesztése és méretezése révén.
- Hozzáadva egy új Desktop Control Panel (desk.cpl) applikáció, amely megvalósítja a kijelzőbeállítások vezérlőfelületét (például virtuális desktop felbontás változtatása vagy a szimulált kijelzőparaméterek beállítása).
- Mostantól lehetőség van a képernyő beállításainak alapértelmezettre állítására, ha a folyamat váratlan leállítása után nem lehet helyreállítani az állapotot.
- Hozzáadva a rendszer tálcáján található ikonok megjelenítésének letiltásának támogatása (a "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" mappában az "NoTrayItemsDisplay=1" megadása szükséges).
- Hozzáadva a Shell launcher kikapcsolásának támogatása asztali módban (a "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" mappában az "NoDesktop=1" megadása szükséges).
- Direct3D
- OpenGL használatával mostantól szükséges a GLSL 1.20 támogatás, valamint az EXT_framebuffer_object és ARB_texture_non_power_of_two kiterjesztések. A régi ARB shader háttér és az OffscreenRenderingMode beállítások támogatása megszűnt.
- A Direct3D 9 és régebbi verziókhoz hozzáadva egy fix funkciós grafikus csővezeték (a régi Direct3D-ben csak előre definiált grafikus műveletek álltak rendelkezésre, amelyeket nem lehetett módosítani), amelyet az HLSL shader nyelv segítségével valósítottak meg és lehetővé teszi a fix funkciók emulálását a Vulkan vagy OpenGL API-n keresztül.
- Vulkan használatakor aktiválva vannak a Vulkan kiterjesztések a grafikus csővezeték állapotának dinamikus változtatására, amelyek csökkentik a játékokban tapasztalható akadozást.
- Hozzáadva egy alternatív glsl-vkd3d háttér GLSL shaderekhez, amely a vkd3d-shader-t használja.
- Kezdeti támogatás a Direct3D effektusok fordításához, a vkd3d-shader használatával.
- A D3DX9 könyvtárban lehetőség kínálkozik MIP-textúrák (MipMap) generálására térfogatú textúrák betöltésekor. Támogatás került a 64bpp RGBA és 48bpp RGB színformátumokhoz PNG képekben, valamint az X8L8V8U8, A2W10V10U10, A8P8, V16U16 és Q16W16V16U16 formátumokhoz.
- Hang és video
- Alternatív megoldásként egy új multimédia háttérprogram került bevezetésre, amely az FFmpeg használatára épül, és lehetővé teszi a Media Foundation keretrendszer működését. Az alternatív háttérprogram aktiválásához a 'HKCU\Software\Wine\MediaFoundation' regisztrációs kulcsban a 'DisableGstByteStreamHandler=1' beállítást kell megadni.
- Javították a Media Foundation API megvalósítását, amely most jobban illeszkedik a demultiplexelő és dekódoló komponensektől függő alkalmazásokhoz.
- A DirectMusic API-hoz hozzáadva a MIDI fájlok betöltésének támogatása.
- Bemeneti eszközök
- Megérkezett a Bluetooth-illesztőprogram kezdeti verziója.
- Hozzáadva egy Joystick Control Panel (joy.cpl) applet, amely beállításokat tartalmaz a joystickhoz.
- Fejlesztések történtek a mutatóeszközök (touchpadok, egerek) kezelésében, amelyek a HID (Human Interface Device) protokollt használják. Hozzáadva a mouhid.sys illesztőprogram a HID-eszközökhöz. Megvalósítva a komplex bemeneti eszközök helyes feldolgozása, és biztosítva van az információk átadása a Windows alkalmazásoknak, mint különálló eszközök.
- Az X11 háttérprogramhoz hozzáadva a érintőképernyők támogatása, lehetővé téve a multitouch mód használatát a WM_POINTER* üzenetek (WM_POINTERENTER, WM_POINTERLEAVE stb.) feldolgozása által.
- A user32 könyvtár néhány belső struktúrájának megosztott memóriában való elhelyezése valósult meg, ami javította a teljesítményt és csökkentette a Wine Server terhelését.
- A winex11-hez hozzáadva az XInput2 események ablakokhoz történő eseménykezelésének támogatása.
- Megvalósítva a Dvorak kiosztású billentyűzetek helyes támogatása.
- Kernel (Windows kernel interfészek)
- Hozzáadva a folyamatok jogosultsági szintjének emelésének támogatása (a normál felhasználóként indított folyamatok számára adminisztrátori jogosultságok adhatóak meg). A szerver folyamatok (msi action server) létrehozásakor, valamint az RtlCreateUserProcess() és CreateProcessInternal() funkciókat hívó folyamatok esetében alapértelmezés szerint korlátozott adminisztrátori token használata történik.
- A lemezcímkék információinak megszerzésekor, ha lehetséges, most rendszer szolgáltatásokhoz való DBus elérhetőséget használnak, ahelyett, hogy közvetlenül hozzáférnének az eszközhöz.
- Az egyirányú folyamatok közötti kommunikációs (IPC) Mailslots most közvetlenül a Wine server-ben valósult meg, amely teljes Windows szeminárium támogatottságot tett lehetővé.
- A soros port eseményeinek aszinkron módon történő várakozása valósult meg.
- Teljes támogatás került hozzáadásra az XSTATE processzorbővítményekhez a szálkontextusokban, lehetővé téve az új vektorbővítmények, például az AVX-512 használatát.
- Beépített alkalmazások
- Átírásra került a cmd.exe parancsértelmező által használt bemeneti feldolgozó motor. A cmd.exe támogatást kapott a «||» és «&&» műveletekhez.
- A findstr segédprogramhoz hozzáadva a reguláris kifejezések és a kis- és nagybetűk figyelmen kívül hagyásának támogatása.
- A regsvr32 és rundll32 segédprogramokhoz az ARM64EC modulok regisztrálásának lehetősége került beépítésre.
- Hozzáadva az alábbi segédprogramok: sort a bemeneti adatok rendezéséhez, fc a fájlok összehasonlításához és where a fájlok kereséséhez.
- A wmic alkalmazásban bevezetésre került az interaktív munkamódban való használat.
- Az Explorerhez opcionális támogatás került a kezdőmenü és az eszköztár számára. Biztosított az explorer.exe korlátozott jogosultságokkal történő indítása.
- Fejlesztési eszközök
- A winebuild-hez hozzáadva a «-marm64x» opció, amely ARM64X hibrid könyvtárak generálására szolgál.
- A winegcc-hez hozzáadva a «-marm64x» opció, amely ARM64X számára történő fordítást biztosít.
- Az IDL (Interface Definition Language) használatával generált fájlokban teljes mértékben támogatott elemek kerültek bevezetésre az értelmezési módhoz.
- Az IDL (Interface Definition Language) fordítóhoz hozzáadva a típusok könyvtárainak (TypeLib) generálása a régi formátumban (SLTG).
- A winedump segédprogramhoz hozzáadva a minidump táblák, C++ kivételek és typelib erőforrások dummal történő mentésének támogatása.
- Vegyes
- Javult a Diffie-Hellman kulcscserélő protokoll támogatása. Lehetővé vált a DH paraméterek beállítása és megszerzése. Készítve lettek a nyílt és zárt kulcsok párba állítására szolgáló kezelők.
- Biztosítva lett az OAEP (Optimal Asymmetric Encryption Padding) maradék töltésének használata az RSA algoritmussal.
- A DirectPlay API-ban megvalósult a hálózati ülések támogatása.
- A WoW64 (64-bites Windows-on-Windows) üzemmódban történő aszinkron bemenet/kimenet állapotainak kezelése megoldódott, amely lehetővé teszi a 32-bites Windows alkalmazások futtatását 64-bites Unix rendszerekben.
- Támogatás került hozzáadásra az ODBC-illesztők betöltéséhez olyan adatbázisokhoz, amelyeket Windowsra állítottak össze.
- ARM platformon teljes támogatás került bevezetésre az RPC/COM, C++ RTTI (Futási típusinformáció) és C++ kivételek számára.
- A C runtime ANSI-funkcióiban megvalósult az UTF-8 kódolás támogatása.
- Kibővült az MSHTML motor funkciói. Támogatást nyertek a prototípusok és az objektumkonstruktorok. A JavaScript motorhoz új objektumkötési interfész került bevezetésre az MSHTML számára. Az MSHTML beépített funkciói helyes JavaScript objektumokká alakultak. A JavaScript hulladékgyűjtője javítva lett, mostantól az összes szkripthelyzetet lefedi a szálon. Támogatás került a JavaScript ArrayBuffer és DataView objektumokhoz.
- A Gitlab alapú folyamatos integrációs rendszerbe bekerült a statikus analízis támogatása Clang segítségével és a JUnit tesztjelentések.
- Beépítésre került a Capstone 5.0.3 könyvtár, amely lehetővé teszi a disassembler használatát a WineDb debuggerben.
- Frissítve lettek az alábbi komponensek új verziókra: Vkd3d 1.14, Faudio 24.10, FluidSynth 2.4.0, LDAP 2.5.18, LCMS2 2.16, LibJpeg 9f, LibMPG123 1.32.9, LibPng 1.6.44, LibTiff 4.7.0, LibXml2 2.12.8, LibXslt 1.1.42 és Zlib 1.3.1.
Forrás: opennet.ru
