Na een jaar ontwikkeling en 29 experimentele versies is de stabiele versie van de open implementatie van de Win32 API gepresenteerd - Wine 10.0, dat meer dan 6000 wijzigingen bevat. Belangrijke prestaties in de nieuwe versie zijn de volledige ondersteuning van de ARM64EC-architectuur, schaling op schermen met een hoge pixeldichtheid, standaard ingeschakelde Wayland-driver, implementatie van panelen voor scherm- en joystickconfiguratie, een alternatieve multimedia-backend op basis van FFmpeg, een Bluetooth-driver, ondersteuning voor Vulkan 1.4 en de mogelijkheid om videomoduswisselingen te emuleren.
In Wine is de volledige werking van 5372 Windows-programma's bevestigd (een jaar geleden 5336, twee jaar geleden 5266, drie jaar geleden 5156), nog eens 4435 programma's (een jaar geleden 4397, twee jaar geleden 4370, drie jaar geleden 4312) werken prima met extra instellingen en externe DLL's. Bij 4020 programma's (een jaar geleden 3943, twee jaar geleden 3888, drie jaar geleden 3813) zijn er kleine problemen geconstateerd die het gebruik van de belangrijkste functies van de applicaties niet belemmeren.
Belangrijkste vernieuwingen in Wine 10.0:
- ARM64
- De ondersteuning voor de ARM64EC-architectuur (ARM64 Emulation Compatible) is volledig geïmplementeerd, waarbij de ondersteuningslevel in Wine nu op gelijke hoogte is met de ARM64-architectuur. De ARM64EC-architectuur is ontwikkeld om het porteren van applicaties, oorspronkelijk geschreven voor x86_64-systemen, naar ARM64-systemen te vergemakkelijken en maakt het mogelijk om afzonderlijke modules met x86_64-code uit te voeren in een ARM64-omgeving met behulp van een emulator.
- Volledige ondersteuning voor het ARM64X PE-bestandsformaat is gerealiseerd, waarmee code voor zowel ARM64EC als ARM64 in één uitvoerbaar bestand kan worden gecombineerd. Voor het bouwen van Wine in het ARM64X-formaat moet LLVM vanuit Git worden geïnstalleerd (de benodigde functionaliteit komt in de LLVM 20-release) en bij het uitvoeren van het 'configure'-script moet de optie '--enable-archs=arm64ec,aarch64' worden opgegeven.
- Een interface voor de emulatie van 64-bits x86-systemen is geïmplementeerd. Bij het gebruik van ARM64EC draait Wine zelf zoals het is, en de emulatie wordt alleen toegepast op x86-64 code van applicaties. De bibliotheek met de emulator is nog niet opgenomen in de hoofdversie van Wine, maar voor het uitvoeren van x86-64 code in een ARM64-omgeving kan een externe emulator FEX worden gebruikt, die is opgebouwd met ondersteuning voor ARM64EC.
- Voor de ondersteuning van ARM64 is het nodig om in het systeem pagina's van 4KB geheugen te hebben, zoals vereist door de Windows ABI (uitvoeren in omgevingen met Linux-kernels die pagina's van 16K of 64K gebruiken wordt voorlopig niet ondersteund).
- Grafisch subsysteem
- Er is nauwkeuriger schaling gerealiseerd op schermen met hoge pixeldichtheid (High-DPI). Ondersteuning voor de DPI Awareness-modus is toegevoegd om de weergave van applicaties op hoge DPI-schermen te organiseren, afhankelijk van of de applicatie zich aanpast aan de veranderende DPI of niet (applicaties die geen rekening houden met DPI worden automatisch geschaald). Er zijn opties toegevoegd om de ondersteuning voor High-DPI te overschrijven op basis van individuele applicaties of Wine-prefixty.
- De driver voor de grafische API Vulkan heeft ondersteuning voor de Vulkan-specificatie 1.4 toegevoegd (in Wine 9.0 werd Vulkan 1.3.272 ondersteund). Ondersteuning voor Vulkan-extensies voor video-encoding en -decoding is toegevoegd.
- Bij gebruik van de X11-backend is de mogelijkheid gerealiseerd om child windows van Vulkan te tekenen voor applicaties die dergelijke vensters gebruiken voor de weergave van 3D-inhoud (eerder was deze mogelijkheid alleen beschikbaar voor OpenGL).
- In de GdiPlus-bibliotheek is ondersteuning toegevoegd voor het mechanisme van lettertypebinding (‘Font Linking’), dat het mogelijk maakt om meerdere lettertypen te gebruiken bij het weergeven van tekst, als de afzonderlijke lettertypen niet alle in de tekst voorkomende symbolen dekken.
- Wayland
- In de standaardconfiguratie is de driver winewayland.drv geactiveerd, die het mogelijk maakt om Wine te gebruiken in omgevingen op basis van het Wayland-protocol zonder het gebruik van XWayland en X11-componenten. Wine start applicaties standaard rechtstreeks op Wayland alleen als XWayland niet beschikbaar is; in dat geval blijft de start met gebruik van XWayland prioriteit hebben. Om Wayland geforceerd in te schakelen kan de omgevingsvariabele DISPLAY worden gebruikt, of een sleutel aan het register worden toegevoegd door een bestand file.reg te maken: Windows Register Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] "Graphics"="wayland" en dit toe te passen met het commando: $ WINEPREFIX=\/pad\/naar\/prefix wine regedit \/pad\/naar\/file.reg
- In de driver winewayland.drv is ondersteuning voor OpenGL en pixelbuffers (pBuffer) toegevoegd.
- Problemen met het positioneren van pop-upvensters in omgevingen op basis van Wayland zijn opgelost.
- Bij gebruik van Wayland is ondersteuning voor automatische herhaling van toetsinvoer bij het vasthouden van toetsen gerealiseerd.
- Integratie met desktop
- Een experimenteel mechanisme voor emulatie van 'modesetting' is toegevoegd, waarmee de weergave van videomodi kan worden nagebootst zonder feitelijke wijzigingen aan de scherminstellingen. De zichtbaarheid van de wijziging in schermresolutie zonder te schakelen tussen videomodi wordt bereikt door middel van het uitbreiden en schalen van vensters.
- Een nieuwe applet voor het bureaubladconfiguratiescherm (desk.cpl) is toegevoegd met een interface voor het beheren van scherminstellingen (bijvoorbeeld, het is mogelijk om de virtuele resolutie van het bureaublad te wijzigen of de geëmuleerde schermparameters in te stellen).
- De mogelijkheid is toegevoegd om de scherminstellingen terug te zetten naar de standaardwaarden in het geval het niet mogelijk is om de toestand te herstellen na een ongeplande afbraak van het proces.
- Ondersteuning voor het uitschakelen van pictogrammen in het systeemvak is toegevoegd (in 'HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' moet 'NoTrayItemsDisplay=1' worden opgegeven).
- Ondersteuning voor het uitschakelen van shell-launchers in de bureaubladmodus is toegevoegd (in 'HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer' moet 'NoDesktop=1' worden opgegeven).
- Direct3D
- Voor rendering met OpenGL is nu ondersteuning voor GLSL 1.20 vereist, evenals de extensies EXT_framebuffer_object en ARB_texture_non_power_of_two. Ondersteuning voor de oudere ARB-shader backend en de instelling OffscreenRenderingMode is beëindigd.
- Voor Direct3D 9 en eerdere versies is een grafische pijplijn voor vaste functies toegevoegd (in oude Direct3D versies waren alleen vooraf gedefinieerde grafische operaties beschikbaar die niet konden worden gewijzigd), geïmplementeerd met behulp van de HLSL-shader taal en die het mogelijk maakt om vaste functies na te bootsen bij rendering via de Vulkan of OpenGL API.
- Bij rendering met Vulkan worden Vulkan-extensies voor dynamische wijziging van de status van de grafische pijplijn gebruikt, wat helpt om haperingen in games te verminderen.
- Een alternatieve backend glsl-vkd3d voor GLSL-shaders is toegevoegd, die vkd3d-shader gebruikt.
- Initiële ondersteuning voor het compileren van Direct3D-effecten is beschikbaar gesteld, met behulp van vkd3d-shader.
- In de D3DX9-bibliotheek is de mogelijkheid toegevoegd om MIP-texturen (MipMap) te genereren bij het laden van volumetexturen. Ondersteuning voor kleurweergaveformaten van 64bpp RGBA en 48bpp RGB in PNG-afbeeldingen is toegevoegd, evenals ondersteuning voor de formaten X8L8V8U8, A2W10V10U10, A8P8, V16U16 en Q16W16V16U16.
- Geluid en video
- Als alternatief voor de GStreamer-gebaseerde backend is er een nieuwe multimedia backend ontwikkeld die is gebaseerd op FFmpeg en geschikt is voor het ondersteunen van het Media Foundation-framework. Om de alternatieve backend in het register "HKCU\Software\Wine\MediaFoundation" in te schakelen, moet "DisableGstByteStreamHandler=1" worden opgegeven.
- De implementatie van de Media Foundation API is verbeterd, waardoor deze nu beter samenwerkt met toepassingen die afhankelijk zijn van demultiplexing- en decoderingcomponenten.
- De DirectMusic API heeft ondersteuning gekregen voor het laden van MIDI-bestanden.
- Invoerapparaten
- Een eerste versie van de Bluetooth-stuurprogramma is toegevoegd.
- Applet Joystick Control Panel (joy.cpl) toegevoegd met instellingen voor de joystick.
- Verbeteringen zijn doorgevoerd met betrekking tot pointer controllers (touchpads, muizen) die het HID (Human Interface Device)-protocol gebruiken. De mouhid.sys-stuurprogramma is toegevoegd voor HID-apparaten. De parsing van samengestelde invoerapparaten is correct geïmplementeerd en informatie hierover wordt aan Windows-applicaties doorgegeven als afzonderlijke apparaten.
- Voor de X11-backend is ondersteuning voor touchscreens toegevoegd en is het mogelijk gemaakt om de multitouch-modus te gebruiken via de verwerking van WM_POINTER*-berichten (WM_POINTERENTER, WM_POINTERLEAVE, enz.).
- Bepaalde interne structuren van de user32-bibliotheek zijn in gedeeld geheugen geplaatst, wat de prestaties heeft verbeterd en de belasting van de Wine Server heeft verlaagd.
- Ondersteuning voor de verwerking van XInput2-evenementen is toegevoegd in winex11, gekoppeld aan afzonderlijke vensters.
- Er is correcte ondersteuning gerealiseerd voor toetsenborden met de Dvorak-indeling.
- Kern (Windows kerninterfaces)
- Ondersteuning voor het verhogen van procesprivileges is toegevoegd (een proces dat oorspronkelijk als normale gebruiker is gestart, kan beheerdersrechten krijgen). Bij het creëren van serverprocessen (msi action server), evenals processen die de functies RtlCreateUserProcess() en CreateProcessInternal() aanroepen, wordt standaard een beperkt beheerders-token gebruikt.
- Bij het ophalen van schijflabels wordt waar mogelijk gebruik gemaakt van systeemdiensten via DBus, in plaats van een directe toegang tot het apparaat te proberen.
- Een eenrichtingsmechanisme voor interprocesscommunicatie (IPC) Mailslots is nu rechtstreeks in de Wine-server geïmplementeerd, wat volledige ondersteuning voor de Windows-semantiek heeft mogelijk gemaakt.
- Er is support gerealiseerd voor het wachten op seriële poortevenementen in asynchrone modus.
- Volledige ondersteuning voor CPU-extensies XSTATE in threadcontexten toegevoegd, wat het mogelijk maakte om nieuwe vector-extensies zoals AVX-512 te gebruiken.
- Ingebouwde toepassingen
- De invoerverwerkingsmotor die in de opdrachtregelinterpreter cmd.exe wordt gebruikt, is herschreven. Ondersteuning voor de bewerkingen "||" en "&&" is toegevoegd aan cmd.exe.
- Ondersteuning voor reguliere expressies en case-insensitive zoeken is toegevoegd aan de tool findstr.
- De utilities regsvr32 en rundll32 hebben de mogelijkheid gekregen om ARM64EC-modules te registreren.
- Nieuwe utilities toegevoegd: sort voor het sorteren van invoergegevens, fc voor het vergelijken van bestanden en where voor het zoeken naar bestanden.
- In de wmic-applicatie is een interactieve modus geïmplementeerd.
- In de Verkenner is optionele ondersteuning voor het startmenu en de werkbalk toegevoegd. De mogelijkheid om explorer.exe met beperkte rechten uit te voeren is gerealiseerd.
- Ontwikkelingstools
- In winebuild is de optie "-marm64x" toegevoegd voor het genereren van hybride ARM64X-bibliotheken.
- In winegcc is de optie "-marm64x" toegevoegd voor het bouwen voor ARM64X.
- In de bestanden die zijn gegenereerd met behulp van de Interface Definition Language (IDL) zijn componenten opgenomen die volledig de ondersteuning voor interpretatiemodus bieden.
- In de compiler van de Interface Definition Language (IDL) is ondersteuning voor het genereren van typebibliotheken (TypeLib) in het oude formaat (SLTG) toegevoegd.
- In de winedump-tool is ondersteuning voor het opslaan van minidump-tabelafvoeren, C++-exclusie-informatie en typelib-hulpmiddelen toegevoegd.
- Diversen
- De ondersteuning voor het Diffie-Hellman key exchange protocol (DH) is verbeterd. Mogelijkheid voor configuratie en het verkrijgen van DH-parameters is toegevoegd. Handlers zijn geïmplementeerd voor het creëren van paren van publieke en private sleutels.
- Gebruik van OAEP (Optimal Asymmetric Encryption Padding) samen met het RSA-algoritme is gegarandeerd.
- In de DirectPlay API is ondersteuning voor netwerksessies geïmplementeerd.
- De verwerking van asynchrone invoer/uitvoerstatussen in de WoW64 (64-bit Windows-on-Windows) modus is gestroomlijnd, wat het mogelijk maakt om 32-bit Windows-toepassingen in 64-bit Unix-systemen uit te voeren.
- Ondersteuning voor het laden van ODBC-stuurprogramma's voor databasebeheersystemen die voor Windows zijn gecompileerd, is toegevoegd.
- Voor het ARM-platform is volledige ondersteuning voor RPC/COM, C++ RTTI (Run-Time Type Information) en C++-uitzonderingen geïmplementeerd.
- In de C-runtime is ondersteuning voor UTF-8-codering geïmplementeerd in ANSI-functies.
- De mogelijkheden van de MSHTML-engine zijn uitgebreid. Ondersteuning voor prototypes en objectconstructors is toegevoegd. Een nieuwe interface voor het koppelen van objecten is toegevoegd aan de JavaScript-engine voor MSHTML. Ingebouwde MSHTML-functies zijn omgevormd tot correcte JavaScript-objecten. De garbage collector voor JavaScript is verbeterd en dekt nu alle uitvoeringscontexten van het script in de thread. Ondersteuning voor JavaScript-objecten ArrayBuffer en DataView is toegevoegd.
- In het continue integratiesysteem op basis van Gitlab is ondersteuning voor statische analyse met behulp van Clang en JUnit-testverslaggeving toegevoegd.
- De ingebouwde bibliotheek Capstone 5.0.3 is toegevoegd, waarmee disassemblage in de debugger WineDb mogelijk is gemaakt.
- De componenten zijn bijgewerkt naar nieuwe versies: 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 en Zlib 1.3.1.
Bron: opennet.ru
