Stabiele release van Wine 7.0

Na een jaar van ontwikkeling en 30 experimentele versies werd een stabiele release van de open implementatie van de Win32 API gepresenteerd - Wine 7.0, die meer dan 9100 wijzigingen bevatte. De belangrijkste prestaties van de nieuwe versie zijn onder meer de vertaling van de meeste Wine-modules naar PE-formaat, ondersteuning voor thema's, uitbreiding van de stapel voor joysticks en invoerapparaten met een HID-interface, en implementatie van de WoW64-architectuur voor het uitvoeren van 32-bits programma's in een 64-bits omgeving.

Wine heeft de volledige werking van 5156 (een jaar geleden 5049) programma's voor Windows bevestigd, nog eens 4312 (een jaar geleden 4227) programma's werken perfect met aanvullende instellingen en externe DLL's. 3813 programma's (3703 jaar geleden) hebben kleine operationele problemen die het gebruik van de hoofdfuncties van de applicaties niet belemmeren.

Belangrijkste innovaties in Wine 7.0:

  • Modules in PE-formaat
    • Bijna alle DLL's zijn geconverteerd om het uitvoerbare bestandsformaat PE (Portable Executable, gebruikt in Windows) te gebruiken in plaats van ELF. Het gebruik van PE lost problemen op bij het ondersteunen van verschillende kopieerbeveiligingsschema's die de identiteit van systeemmodules op schijf en in het geheugen verifiëren.
    • De mogelijkheid om PE-modules te communiceren met Unix-bibliotheken met behulp van de standaard NT-kernelsysteemaanroep is geïmplementeerd, waardoor u de toegang tot Unix-code kunt verbergen voor Windows-foutopsporingsprogramma's en threadregistratie kunt controleren.
    • Ingebouwde DLL's worden nu alleen geladen als er een corresponderend PE-bestand op schijf staat, ongeacht of het een echte bibliotheek of een stub is. Door deze wijziging kan de toepassing altijd de juiste binding aan PE-bestanden zien. Om dit gedrag uit te schakelen, kunt u de omgevingsvariabele WINEBOOTSTRAPMODE gebruiken.
  • WoW64
    • De WoW64-architectuur (64-bit Windows-op-Windows) is geïmplementeerd, waardoor u 32-bit Windows-applicaties kunt uitvoeren in 64-bit Unix-processen. Ondersteuning wordt geïmplementeerd via de verbinding van een laag die 32-bits NT-systeemaanroepen vertaalt naar 64-bits aanroepen naar NTDLL.
    • WoW64-lagen zijn voorbereid voor de meeste Unix-bibliotheken en bieden 32-bits PE-modules toegang tot 64-bits Unix-bibliotheken. Zodra alle modules naar PE-formaat zijn geconverteerd, is het mogelijk om 32-bits Windows-applicaties uit te voeren zonder 32-bits Unix-bibliotheken te installeren.
  • Thema's
    • Themaondersteuning is geïmplementeerd. De designthema's "Light", "Blue" en "Classic Blue" zijn inbegrepen, die kunnen worden geselecteerd via de WineCfg-configurator.
    • De mogelijkheid toegevoegd om het uiterlijk van alle interfacebedieningen aan te passen via thema's. Het uiterlijk van elementen wordt automatisch bijgewerkt nadat het ontwerpthema is gewijzigd.
    • Thema-ondersteuning is toegevoegd aan alle ingebouwde Wine-applicaties. Toepassingen zijn aangepast aan schermen met een hoge pixeldichtheid (High DPI).
  • Grafisch subsysteem
    • Er is een nieuwe Win32u-bibliotheek toegevoegd, die delen van de GDI32- en USER32-bibliotheken bevat die verband houden met grafische verwerking en vensterbeheer op kernelniveau. In de toekomst zal worden begonnen met het porten van stuurprogrammacomponenten zoals winex32.drv en winemac.drv naar Win11u.
    • Het Vulkan-stuurprogramma ondersteunt de Vulkan grafische API-specificatie 1.2.201.
    • Ondersteuning geboden voor het uitvoeren van gearceerde geometrische objecten via de Direct2D API, met de mogelijkheid om te controleren of een klik toeslaat (hit-test).
    • De Direct2D API biedt initiële ondersteuning voor visuele effecten die worden toegepast met behulp van de ID2D1Effect-interface.
    • De Direct2D API heeft ondersteuning toegevoegd voor de ID2D1MultiThread-interface, die wordt gebruikt om exclusieve toegang tot bronnen in multi-threaded applicaties te organiseren.
    • De WindowsCodecs-set met bibliotheken biedt ondersteuning voor het decoderen van afbeeldingen in het WMP-formaat (Windows Media Photo) en het coderen van afbeeldingen in het DDS-formaat (DirectDraw Surface). We ondersteunen niet langer het coderen van afbeeldingen in het ICNS-formaat (voor macOS), dat niet wordt ondersteund op Windows.
  • Direct3D
    • De nieuwe rendering-engine is aanzienlijk verbeterd en vertaalt Direct3D-aanroepen naar de Vulkan grafische API. In de meeste situaties is het ondersteuningsniveau voor Direct3D 10 en 11 in de Vulkan-gebaseerde engine op gelijke hoogte gebracht met de oudere OpenGL-gebaseerde engine. Om de Vulkan-rendering-engine in te schakelen, stelt u de Direct3D-registervariabele "renderer" in op "vulkan".
    • Veel functies van Direct3D 10 en 11 zijn geïmplementeerd, waaronder uitgestelde contexten, statusobjecten die in de apparaatcontext werken, aanhoudende offsets in buffers, het wissen van structuurweergaven in de verkeerde volgorde, het kopiëren van gegevens tussen bronnen in typeloze formaten (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS), enz. .
    • Ondersteuning toegevoegd voor configuraties met meerdere monitoren, zodat u een monitor kunt selecteren om een ​​Direct3D-toepassing op volledig scherm weer te geven.
    • De DXGI API biedt schermgammacorrectie, die kan worden gebruikt door op Direct3D 10 en 11 gebaseerde applicaties om de schermhelderheid te wijzigen. Ophalen van virtuele framebuffertellers ingeschakeld (SwapChain).
    • Direct3D 12 voegt ondersteuning toe voor versie 1.1 root-handtekeningen.
    • In de weergavecode via de Vulkan API is de efficiëntie van de queryverwerking verbeterd wanneer het systeem de VK_EXT_host_query_reset-extensie ondersteunt.
    • De mogelijkheid toegevoegd om virtuele framebuffers (SwapChain) uit te voeren via GDI als OpenGL of Vulkan niet kunnen worden gebruikt voor weergave, bijvoorbeeld bij uitvoer naar een venster vanuit verschillende processen, bijvoorbeeld in programma's die zijn gebaseerd op het CEF-framework (Chromium Embedded Framework).
    • Bij gebruik van de GLSL shader backend is de "precieze" modifier verzekerd voor shader-instructies.
    • De DirectDraw API voegt ondersteuning toe voor 3D-weergave in het systeemgeheugen met behulp van softwareapparaten zoals "RGB", "MMX" en "Ramp".
    • AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 en NVIDIA GT 630-kaarten zijn toegevoegd aan de Direct1030D grafische kaartdatabase.
    • De sleutel “UseGLSL” is verwijderd uit het register HKEY_CURRENT_USER\Software\Wine\Direct3D, in plaats daarvan moet u, beginnend met Wine 5.0, “shader_backend” gebruiken.
    • Om Direct3D 12 te ondersteunen, heb je nu minimaal versie 3 van de vkd1.2d-bibliotheek nodig.
  • D3DX
    • De D3DX 10-implementatie heeft de ondersteuning voor het raamwerk voor visuele effecten verbeterd en ondersteuning toegevoegd voor het Windows Media Photo-beeldformaat (JPEG XR)
    • Functies voor het maken van texturen toegevoegd uit D3DX10, zoals D3DX10CreateTextureFromMemory().
    • De software-interfaces ID3DX10Sprite en ID3DX10Font zijn gedeeltelijk geïmplementeerd.
  • Geluid en video
    • GStreamer-add-ons voor DirectShow en het Media Foundation-framework worden gecombineerd in één gemeenschappelijke WineGStreamer-backend, wat de ontwikkeling van nieuwe API's voor het decoderen van inhoud zou moeten vereenvoudigen.
    • Op basis van de WineGStreamer-backend zijn Windows Media-objecten geïmplementeerd voor synchroon en asynchroon lezen.
    • De implementatie van het Media Foundation-framework is verder verfijnd, ondersteuning voor de IMFPMediaPlayer-functionaliteit en sample-allocator is toegevoegd en ondersteuning voor EVR- en SAR-renderingbuffers is verbeterd.
    • De wineqtdecoder-bibliotheek, die een decoder voor het QuickTime-formaat biedt, is verwijderd (alle codecs gebruiken nu GStreamer).
  • Invoerapparaten
    • De stapel voor invoerapparaten die het HID-protocol (Human Interface Devices) ondersteunen, is aanzienlijk verbeterd en biedt mogelijkheden zoals het parseren van HID-descriptors, het verwerken van HID-berichten en het leveren van mini-HID-stuurprogramma's.
    • In de backends van het winebus.sys-stuurprogramma is de vertaling van apparaatbeschrijvingen naar HID-berichten verbeterd.
    • Een nieuwe DirectInput-backend toegevoegd voor joysticks die het HID-protocol ondersteunen. De mogelijkheid om feedbackeffecten in joysticks te gebruiken is geïmplementeerd. Verbeterd joystickbedieningspaneel. Geoptimaliseerde interactie met XInput-compatibele apparaten. In WinMM is joystickondersteuning verplaatst naar DInput, in plaats van de evdev-backend op Linux en IOHID op macOS IOHID te gebruiken. De oude joystickdriver winejoystick.drv is verwijderd.
    • Er zijn nieuwe tests toegevoegd aan de DInput-module, gebaseerd op het gebruik van virtuele HID-apparaten en waarvoor geen fysiek apparaat nodig is.
  • Tekst en lettertypen
    • Font Set-object toegevoegd aan DirectWrite.
    • RichEdit implementeert de TextHost-interface correct.
  • Kernel (Windows-kernelinterfaces)
    • Bij het uitvoeren van een niet-geïdentificeerd uitvoerbaar bestand (zoals 'wine foo.msi') in Wine, wordt nu start.exe aangeroepen, die handlers aanroept die aan het bestandstype zijn gekoppeld.
    • Ondersteuning toegevoegd voor synchronisatiemechanismen NtAlertThreadByThreadId en NtWaitForAlertByThreadId, vergelijkbaar met futexen in Linux.
    • Ondersteuning toegevoegd voor NT-debug-objecten die worden gebruikt om kernelfuncties te debuggen.
    • Ondersteuning toegevoegd voor dynamische registersleutels om prestatiegegevens op te slaan.
  • C-looptijd
    • De C-runtime implementeert een volledige set wiskundige functies, die voornamelijk worden overgenomen uit de Musl-bibliotheek.
    • Alle CPU-platforms bieden correcte ondersteuning voor drijvende-kommafuncties.
  • Netwerkfuncties
    • Verbeterde compatibiliteitsmodus voor Internet Explorer 11 (IE11), die nu standaard wordt gebruikt voor het verwerken van HTML-documenten.
    • De mshtml-bibliotheek implementeert de ES6 JavaScript-modus (ECMAScript 2015), die ondersteuning biedt voor functies zoals de let-expressie en het Map-object.
    • Installatie van MSI-pakketten met toevoegingen aan de Gecko-engine in de Wine-werkmap wordt nu gedaan wanneer dat nodig is, en niet tijdens een Wine-update.
    • Ondersteuning toegevoegd voor het DTLS-protocol.
    • De NSI-service (Network Store Interface) is geïmplementeerd, waarbij informatie over routering en netwerkinterfaces op de computer wordt opgeslagen en verzonden naar andere services.
    • WinSock API-handlers zoals setsockopt en getockopt zijn verplaatst naar NTDLL en het stuurprogramma afd.sys om te voldoen aan de Windows-architectuur.
    • Wine's eigen netwerkdatabasebestanden, zoals /etc/protocols en /etc/networks, worden nu geïnstalleerd in de Wine-werkmap, in plaats van toegang te krijgen tot vergelijkbare Unix-databases.
  • Alternatieve platforms
    • Ondersteuning toegevoegd voor Apple-apparatuur op basis van M1 ARM-chips (Apple Silicon).
    • Ondersteuning voor BCrypt- en Secur32-functies op macOS vereist nu installatie van de GnuTLS-bibliotheek.
    • 32-bits uitvoerbare bestanden voor ARM-platforms zijn nu gebouwd in Thumb-2-modus, vergelijkbaar met Windows. Om dergelijke bestanden te laden, wordt een preloader gebruikt.
    • Voor 32-bits ARM-platforms is ondersteuning voor het afwikkelen van uitzonderingen geïmplementeerd.
    • Voor FreeBSD is het aantal ondersteunde queries voor systeeminformatie op laag niveau, zoals geheugenstatus en batterijniveau, uitgebreid.
  • Ingebouwde applicaties en ontwikkeltools
    • Het hulpprogramma reg.exe heeft ondersteuning toegevoegd voor 32- en 64-bits registerweergaven. Ondersteuning toegevoegd voor het kopiëren van registersleutels.
    • Het WineDump-hulpprogramma heeft ondersteuning toegevoegd voor het dumpen van Windows-metagegevens en het weergeven van gedetailleerde informatie over CodeView-items.
    • De Wine Debugger (winedbg) biedt de mogelijkheid om 32-bits processen te debuggen vanuit een 64-bits debugger.
    • De mogelijkheid om in PE-bestanden ingebouwde bibliotheken te laden is toegevoegd aan de IDL-compiler (widl), er is ondersteuning geboden voor WinRT-specifieke attributen en constructies en er is een platformspecifieke bibliotheekzoekopdracht geïmplementeerd.
  • Montagesysteem
    • In architectuurspecifieke mappen worden bibliotheken nu opgeslagen met namen die de architectuur en het uitvoerbare type weerspiegelen, zoals 'i386-windows' voor het PE-formaat en 'x86_64-unix' voor unix-bibliotheken, waardoor ondersteuning voor verschillende architecturen in één enkele Wine mogelijk wordt. installatie en zorg voor kruiscompilatie van Winelib.
    • Om een ​​optie in de headers van PE-bestanden in te stellen die de overgang naar het gebruik van native DLL's regelt, is de vlag '--prefer-native option' toegevoegd aan winebuild (DLL_WINE_PREAATTACH-verwerking in DllMain is gestopt).
    • Ondersteuning toegevoegd voor versie 4 van het Dwarf-foutopsporingsgegevensformaat, dat nu standaard wordt gebruikt bij het bouwen van Wine-bibliotheken.
    • Bouwoptie '—enable-build-id' toegevoegd om unieke build-ID's in uitvoerbare bestanden op te slaan.
    • Ondersteuning toegevoegd voor het gebruik van de Clang-compiler in MSVC-compatibiliteitsmodus.
  • Diversen
    • De namen van typische mappen in de gebruikersshell (Windows Shell) worden gegeven aan het schema dat wordt gebruikt vanaf Windows Vista, d.w.z. In plaats van 'Mijn documenten' wordt nu een map 'Documenten' aangemaakt en worden de meeste gegevens opgeslagen in de map 'AppData'.
    • Ondersteuning voor de OpenCL 1.2-specificatie is toegevoegd aan de OpenCL-bibliotheeklaag.
    • Het WinSpool-stuurprogramma heeft ondersteuning toegevoegd voor verschillende paginaformaten tijdens het afdrukken.
    • Initiële ondersteuning toegevoegd voor MSDASQL, de Microsoft OLE DB-provider voor ODBC-stuurprogramma's.
    • De Wine Mono-engine met de implementatie van het .NET-platform is bijgewerkt naar release 7.0.0.
    • Unicode-gegevens zijn bijgewerkt naar de Unicode 14-specificatie.
    • De bronboom omvat de bibliotheken Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt en Zlib, die zijn gecompileerd in PE-formaat en geen versie in Unix-formaat vereisen. Tegelijkertijd kunnen deze bibliotheken ook uit het systeem worden geïmporteerd om externe samenstellingen te gebruiken in plaats van ingebouwde PE-opties.

Bron: opennet.ru

Voeg een reactie