Na een jaar van ontwikkeling en 26 experimentele versies werd een stabiele release van de open implementatie van de Win32 API gepresenteerd - Wine 9.0, die meer dan 7000 wijzigingen bevatte. De belangrijkste prestaties in de nieuwe versie zijn onder meer de implementatie van de WoW64-architectuur voor het uitvoeren van 32-bits programma's in een 64-bits omgeving, driverintegratie ter ondersteuning van Wayland, ondersteuning voor de ARM64-architectuur, implementatie van de DirectMusic API en ondersteuning voor smartcards.
Er is bevestigd dat 5336 programma's (5266 een jaar geleden, 5156 twee jaar geleden, 5049 drie jaar geleden) correct werken in Wine. WindowsNog eens 4397 programma's (4370 een jaar geleden, 4312 twee jaar geleden, 4227 drie jaar geleden) werken prima met extra instellingen en externe DLL's. 3943 programma's (3888 een jaar geleden, 3813 twee jaar geleden, 3703 drie jaar geleden) hebben kleine problemen die de basisfunctionaliteit van de applicaties niet belemmeren.
Belangrijkste innovaties in Wine 9.0:
- De driver winewayland.drv is toegevoegd, waardoor Wine nu in Wayland-omgevingen gebruikt kan worden zonder XWayland- of X11-componenten. Deze ontwikkeling is gericht op het bieden van een pure Wayland-omgeving met launch-ondersteuning. Windows- Applicaties die geen installatie van X11-gerelateerde pakketten vereisen, wat zorgt voor betere prestaties en responsiviteit in games door onnodige lagen te elimineren. Het gebruik van een pure Wayland-omgeving voor Wine elimineert ook de beveiligingsproblemen die inherent zijn aan X11 (bijvoorbeeld, onbetrouwbare X11-games kunnen andere applicaties bespioneren omdat het X11-protocol toegang geeft tot alle invoergebeurtenissen en toetsaanslagvervanging mogelijk maakt).
De driver is gemarkeerd als experimenteel en in ontwikkeling, maar biedt desondanks al ondersteuning voor veel functies, zoals vensterbeheer, werken met meerdere monitoren, ondersteuning voor het schalen van de uitvoer op schermen met hoge DPI, werken met relatieve coördinaten bij het volgen van muisbewegingen en ondersteuning voor de Vulkan grafische API. Standaard is de driver niet actief. Om deze in te schakelen, moet u "wayland" toevoegen aan de registerparameter "HKCU\Software\Wine\Drivers" en ervoor zorgen dat de DISPLAY-omgevingsvariabele niet is ingesteld: wine reg.exe add HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Alle modules zijn geconverteerd naar de NT-systeemoproepinterface, in plaats van directe oproepen tussen de PE- en Unix-lagen. Dit markeert de voltooiing van vele jaren werk om alle DLL-bibliotheken te converteren voor gebruik van het uitvoerbare bestandsformaat PE (Portable Executable).
- De ontwikkeling van de WoW64-laag (64-bit) werd voortgezet. Windows-Aan-Windows), waarmee je 32-bits kunt uitvoeren. Windows- Toepassingen op 64-bits Unix-systemen. Alle modules die toegang hebben tot Unix-bibliotheken gebruiken WoW64-systeemoproepvertalers (thunks), waardoor 32-bits modules in PE-formaat toegang hebben tot 64-bits Unix-bibliotheken.
De nieuwe WoW64-opstartmodus is verbeterd, waardoor 32-bits code binnen een 64-bits proces kan worden uitgevoerd (in de oude WoW64-modus draaiden 32-bits applicaties in 32-bits Unix-processen). Ondersteuning voor het gebruik van de nieuwe WoW64-modus is toegevoegd aan het platform. macOSOmdat de nieuwe WoW64-modus enkele kleine bugs bevat, zoals een gebrek aan 16-bits ondersteuning en verminderde OpenGL-prestaties door het ontbreken van ondersteuning voor de ARB_buffer_storage-extensie, is deze nog niet standaard ingeschakeld en moet de build worden uitgevoerd met de optie "--enable-archs=i386,x86_64" in het configure-script.
- De mogelijkheid toegevoegd om bestaande uitvoerbare bestanden uit te voeren. Windows Op systemen met de ARM64-architectuur kan Wine nu worden gecompileerd voor de ARM64EC (ARM64 Emulation Compatible) ABI, en kunnen ARM64EC-modules worden geladen. Deze modules worden gebruikt om het overzetten van applicaties die oorspronkelijk voor de x86_64-architectuur zijn geschreven naar ARM64-systemen te vereenvoudigen door de uitvoering van individuele x86_64-codemodules in de ARM64-omgeving mogelijk te maken met behulp van een emulator. Er is ondersteuning toegevoegd voor het ARM64X PE-bestandsformaat, waarmee één uitvoerbaar bestand kan worden geladen in zowel x64/Arm64EC- als ARM64-processen. Er is een interface geïmplementeerd voor het emuleren van 32-bits x86-systemen, maar de emulatorbibliotheek is nog niet opgenomen in de hoofddistributie van Wine (de externe FEX-emulator kan worden gebruikt om x86-code in de ARM64-omgeving uit te voeren).
- Grafisch subsysteem
- Het PostScript-stuurprogramma is opnieuw ontworpen om spoolbestanden in het volgende formaat te ondersteunen: Windowsdie gegevens over printopdrachten opslaan. Directe aanroepen naar het stuurprogramma vanuit de Unix-omgeving zijn uitgesloten.
- Ondersteuning voor de donkere modus is toegevoegd aan WinRT-thema's. Er is een instelling toegevoegd aan WineCfg om een donker interfaceontwerp mogelijk te maken.
- De driver voor de Vulkan grafische API heeft ondersteuning toegevoegd voor de Vulkan 1.3.272-specificatie (8.0 werd ondersteund in Wine 1.3.237).
- De functies van de GdiPlus-bibliotheek zijn geoptimaliseerd, waardoor betere grafische prestaties mogelijk zijn.
- Direct3D
- Het parseren van een multi-threaded commandostroom wordt opgeschort wanneer er geen weergavecommando's worden verwerkt, waardoor het energieverbruik kan worden teruggebracht tot het niveau van single-threaded verwerking bij het uitvoeren van programma's die niet de gehele bandbreedte van de commandostroom in beslag nemen.
- Direct3D 10 bevat ondersteuning voor extra effecten.
- Prestatie-optimalisaties doorgevoerd aan de WineD3D-code en backend met behulp van de Vulkan grafische API.
- De Vulkan API-gebaseerde renderingcode controleert nu welke mogelijkheden het apparaat ondersteunt en vertelt de applicatie welk niveau van Direct3D-functionaliteit beschikbaar is.
- De functies D3DXFillTextureTX en D3DXFillCubeTextureTX zijn geïmplementeerd.
- De klassieke OpenGL ARB-shader-backend heeft ondersteuning toegevoegd voor het definiëren van schaduwen met behulp van de ARB_fragment_program_shadow-extensie.
- D3DXLoadMeshHierarchyFromX en soortgelijke functies hebben ondersteuning toegevoegd voor het laden van gebruikersgegevens met behulp van de ID3DXLoadUserData-interface.
- Geluid en video
- Er is een eerste implementatie van de DirectMusic API voorgesteld. Ondersteuning toegevoegd voor collecties, instrumenten en geluidsvoorbeelden in het SoundFont-formaat. Ondersteuning toegevoegd voor het Doppler-effect. Er zijn tests geïmplementeerd om de correcte implementatie te verifiëren bij het bedienen van de dmime-sequencer en de dmsynth MIDI-synthesizer.
- De FluidSynth-bibliotheek is voor gebruik ingebouwd in de DirectMusic API.
- Ondersteuning geïmplementeerd voor het laden van soundfonts (SoundFont - formaten voor op samples gebaseerde synthese die worden gebruikt om MIDI-bestanden af te spelen) in de DLS1- en DLS2-formaten, evenals in het SF2-formaat dat wordt gebruikt in Linux.
- De mogelijkheid toegevoegd om MIDI-inhoud af te spelen met behulp van de dmsynth-bibliotheek, met behulp van de FluidSynth-softwaresynthesizer en de DirectSound API voor audio-uitvoer.
- Decoder toegevoegd voor video in Indeo IV50-videocodecformaat.
- DirectShow
- De DMO-component (DirectX Media Object) met een WMV-formaatdecoder is geïmplementeerd (Windows (Media Video).
- Een audio-opnamefilter toegevoegd (DirectShow Audio Capture Filter).
- Naast audiostreams ondersteunt de DirectShow MPEG-1 Stream Splitter nu ook video- en servicestreams.
- Er is een filter geïmplementeerd voor het decoderen van video in MPEG‑1-indeling (DirectShow MPEG‑1 Video Decoder).
- Invoerapparaten
- DirectInput ondersteunt actietoewijzing, waarmee u knoppen op een gamecontroller kunt koppelen aan specifieke acties in games.
- Desktop-integratie
- Bindingen zijn geëxporteerd naar de hoofdgebruikersomgeving, waardoor applicaties die onder Wine draaien, kunnen worden aangeroepen als protocolhandlers bij het openen van een URL (bijvoorbeeld door spotify.exe te starten bij het openen van links zoals “spotify:user:spotify:playlist:848218482355482821”).
- Implementeerde de extractie van EDID-gegevens (Extended Display Identification Data) met informatie over de parameters van de aangesloten monitor, zoals de naam en het model van het apparaat.
- Het is mogelijk om een bureaubladvenster dat in volledig schermmodus is geïmplementeerd te sluiten met behulp van de knop "Bureaublad afsluiten" in het menu "Start".
- Internationalisering
- De ondersteuning voor IME's (Input Method Editors) is uitgebreid. Er is gewerkt aan het waarborgen van compatibiliteit met native code. Windows IME-implementaties en verbeterde integratie met Linux IME
- Er is ondersteuning geboden voor aanvullende landinstellingen onderw-ID, blo-BJ, csw-CA, ie-EE, mic-CA. , prg-PL is toegevoegd, skr-PK, tyv-RU, vmw-MZ, xnr-IN en za-CN.
- De interface is vertaald in het Georgisch. Er zijn volledige vertalingen beschikbaar voor 16 talen en gedeeltelijke vertalingen voor 31 talen.
- Unicode-tekentabellen zijn bijgewerkt naar standaardversie 15.1.0. De tijdzonedatabase is bijgewerkt.
- Kernel (kernelinterfaces) Windows)
- Zoals de uitgegeven versie Windows standaard gedefinieerd Windows 10.
- Voor uitvoerbare bestanden in het PE-formaat is ondersteuning voor adresruimte-randomisatie (ASLR) geïmplementeerd, maar de adressen voor het laden van code in het geheugen zijn nog niet volledig willekeurig.
- Er is ondersteuning voor een zwak gefragmenteerde heap (LFH, Low Fragmentation Heap) geïmplementeerd, waardoor de prestaties van geheugentoewijzingsbewerkingen zijn verbeterd.
- Ondersteuning voor geheugenreservering (placeholder) is toegevoegd aan het toewijzingsmechanisme voor virtueel geheugen, waardoor een applicatie een specifiek gebied met virtueel geheugen kan reserveren voor toekomstig gebruik.
- 64-bits laders (loader en preloader) van uitvoerbare bestanden en bibliotheken zijn gecompileerd in het PIE-formaat (Position-Independent Executables) om een deel van de 32-bits adresruimte vrij te maken.
- Correcte stack-afwikkeling is nu beschikbaar voor NT-systeemoproepen en gebruikerscallbacks.
- Netwerkfuncties
- De MSHTML-engine ondersteunt het afvalinzamelingsmechanisme "Cycle Collection".
- MSHTML heeft ondersteuning toegevoegd voor synchrone verwerking van XMLHttpRequest-verzoeken.
- jscript.dll voegt ondersteuning toe voor een WeakMap-object om te werken met een verzameling sleutel/waarde-paren waarin de sleutel een object is waaraan een willekeurige waarde kan zijn gekoppeld. WeakMap.get(), WeakMap.delete(), WeakMap.clear() en WeakMap.has() methoden geïmplementeerd.
- De Gecko-browserengine is bijgewerkt naar versie 2.47.4.
- Ondersteuning voor meldingen over wijzigingen in de status van de netwerkinterface is geïmplementeerd.
- Cryptografie en beveiliging
- Ondersteuning voor smartcards is toegevoegd aan de Winscard.dll-bibliotheek, geïmplementeerd via de PCSClite-systeembibliotheek.
- BCrypt heeft ondersteuning toegevoegd voor het Diffie-Hellman-sleuteluitwisselingsprotocol.
- Het Negotiate-pakket is geïmplementeerd en biedt een laag voor het gebruik van de Security Support Provider Interface (SSPI) om toegang te krijgen tot Security Support Providers (SSP's).
- Geïntegreerde toepassingen
- De Wine Debugger (winedbg) gebruikt de Zydis-bibliotheek om X86-machine-instructies te demonteren.
- De WineCfg-interface is bijgewerkt om oudere versies op 64-bits platforms te ondersteunen. Windows (vóór XP), waarmee je oudere applicaties kunt uitvoeren in de WoW64-modus.
- Alle ingebouwde grafische applicaties geven nu foutinformatie weer in een apart dialoogvenster, in plaats van deze in de console weer te geven.
- Het programma systeminfo geeft informatie weer uit de WMI-database (Windows Managementinstrumentatie).
- Klist-applicatie toegevoegd om Kerberos-tickets weer te geven.
- De taskkill-applicatie implementeert de mogelijkheid om onderliggende processen met kracht te beëindigen.
- Het startprogramma heeft nu een optie "/machine" om de architectuur te selecteren die wordt gebruikt bij het uitvoeren van hybride uitvoerbare bestanden die x86 en ARM ondersteunen.
- De meeste functionaliteit van het takenlijstprogramma is geïmplementeerd.
- Een basisimplementatie van de findstr-applicatie toegevoegd.
- Ontwikkelingshulpmiddelen
- Het WineDump-programma kan de inhoud van registerbestanden weergeven. Windows (REGF-formaat), en het weergeven van gegevens voor alle architecturen (x86/ARM64) die worden ondersteund in hybride PE-bestanden.
- De IDL-compiler ondersteunt nu de kenmerken "composable", "default_overload", "deprecated" en "protected".
- De libwine.so-bibliotheek is verwijderd. Deze was verouderd in Wine 6.0 en wordt niet meer gebruikt in Wine. ELF-programma's die in oudere Wine-versies (5.0 en hoger) met libwine.so zijn gebouwd, moeten opnieuw worden gebouwd om in Wine 9.0 te kunnen worden uitgevoerd.
- Ingebouwde bibliotheken en externe afhankelijkheden
- De bibliotheken FluidSynth 2.3.3, Musl 1.2.3 (alleen wiskundige functies) en Zydis 4.0.0 zijn in het pakket geïntegreerd.
- De volgende componenten zijn bijgewerkt naar nieuwe versies: Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, LibXslt 1.1.38 en Zlib 1.3. De Wine Mono-engine met de .NET-platformimplementatie is bijgewerkt naar versie 8.1.0.
- Het stuurprogramma winewayland.drv gebruikt de Wayland-clientbibliotheek als externe afhankelijkheden, evenals de xkbcommon- en xkbregistry-bibliotheken.
- Om smartcards te ondersteunen, wordt de externe PCSClite-bibliotheek gebruikt (in macOS — PCSC).
- Voor het bouwen van PE-bestanden op niet-i386-platforms is nu een cross-compiler nodig met ondersteuning voor ".seh"-richtlijnen om uitzonderingen af te handelen.
Bron: opennet.ru
