Nach einem Jahr Entwicklungszeit und 26 experimentellen Versionen wurde eine stabile Version der offenen Implementierung der Win32-API vorgestellt – Wine 9.0, die mehr als 7000 Änderungen beinhaltete. Zu den wichtigsten Errungenschaften der neuen Version gehören die Implementierung der WoW64-Architektur zum Ausführen von 32-Bit-Programmen in einer 64-Bit-Umgebung, die Treiberintegration zur Unterstützung von Wayland, die Unterstützung der ARM64-Architektur, die Implementierung der DirectMusic-API und die Unterstützung von Smartcards.
5336 Programme (5266 vor einem Jahr, 5156 vor zwei Jahren, 5049 vor drei Jahren) funktionieren nachweislich einwandfrei in Wine. WindowsWeitere 4397 Programme (4370 vor einem Jahr, 4312 vor zwei Jahren, 4227 vor drei Jahren) funktionieren mit zusätzlichen Einstellungen und externen DLLs einwandfrei. 3943 Programme (3888 vor einem Jahr, 3813 vor zwei Jahren, 3703 vor drei Jahren) weisen kleinere Probleme auf, die die grundlegende Funktionalität der Anwendungen jedoch nicht beeinträchtigen.
Wichtige Neuerungen in Wine 9.0:
- Der Treiber winewayland.drv wurde hinzugefügt, wodurch Wine in Wayland-basierten Umgebungen ohne die Verwendung von XWayland- oder X11-Komponenten genutzt werden kann. Ziel dieser Entwicklung ist die Bereitstellung einer reinen Wayland-Umgebung mit Startunterstützung. WindowsAnwendungen, die keine Installation von X11-bezogenen Paketen benötigen, ermöglichen eine höhere Leistung und Reaktionsfähigkeit in Spielen, da unnötige Schichten entfallen. Die Verwendung einer reinen Wayland-Umgebung für Wine beseitigt zudem die mit X11 verbundenen Sicherheitsprobleme (beispielsweise können nicht vertrauenswürdige X11-Spiele andere Anwendungen ausspionieren, da das X11-Protokoll Zugriff auf alle Eingabeereignisse und die Ersetzung von Tastatureingaben erlaubt).
Der Treiber ist als experimentell gekennzeichnet und befindet sich in der Entwicklung, unterstützt jedoch bereits viele Funktionen, z. B. Fensterverwaltung, Arbeiten mit mehreren Monitoren, Unterstützung für die Skalierung der Ausgabe auf Bildschirmen mit hoher Pixeldichte (High-DPI), Arbeiten mit relative Koordinaten beim Verfolgen von Mausbewegungen und Unterstützung für die Vulkan-Grafik-API. Standardmäßig ist der Treiber nicht aktiv und um ihn zu aktivieren, sollten Sie „wayland“ zum Registrierungsparameter „HKCU\Software\Wine\Drivers“ hinzufügen und sicherstellen, dass die Umgebungsvariable DISPLAY nicht gesetzt ist: wine reg.exe add HKCU\ \Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Alle Module wurden auf die NT-Systemaufrufschnittstelle konvertiert, anstatt direkte Aufrufe zwischen der PE- und der Unix-Schicht durchzuführen. Dies markiert den Abschluss jahrelanger Arbeit zur Konvertierung aller DLLs für die Verwendung des ausführbaren Dateiformats PE (Portable Executable).
- Die Entwicklung der WoW64-Schicht (64-Bit) wurde fortgesetzt Windows-auf-Windows), wodurch Sie 32-Bit-Systeme ausführen können Windows- Anwendungen auf 64-Bit-Unix-Systemen. Alle Module, die auf Unix-Bibliotheken zugreifen, verwenden WoW64-Systemaufrufübersetzer (Thunks), wodurch 32-Bit-Module im PE-Format auf 64-Bit-Unix-Bibliotheken zugreifen können.
Der neue WoW64-Startmodus wurde verbessert und ermöglicht nun die Ausführung von 32-Bit-Code innerhalb eines 64-Bit-Prozesses (im alten WoW64-Modus liefen 32-Bit-Anwendungen in 32-Bit-Unix-Prozessen). Die Unterstützung für den neuen WoW64-Modus auf der Plattform wurde hinzugefügt. macOSDa der neue WoW64-Modus einige kleinere Fehler aufweist, wie z. B. fehlende 16-Bit-Unterstützung und reduzierte OpenGL-Leistung aufgrund fehlender Unterstützung für die ARB_buffer_storage-Erweiterung, ist er noch nicht standardmäßig aktiviert und erfordert die Kompilierung mit der Option "--enable-archs=i386,x86_64" im Konfigurationsskript.
- Die Möglichkeit, bestehende ausführbare Dateien auszuführen, wurde hinzugefügt. Windows Auf Systemen mit ARM64-Architektur kann Wine nun für die ARM64EC-ABI (ARM64 Emulation Compatible) kompiliert und ARM64EC-Module geladen werden. Diese Module vereinfachen die Portierung von Anwendungen, die ursprünglich für die x86_64-Architektur entwickelt wurden, auf ARM64-Systeme, indem sie die Ausführung einzelner x86_64-Code-Module in der ARM64-Umgebung mithilfe eines Emulators ermöglichen. Die Unterstützung für das ARM64X-PE-Dateiformat wurde hinzugefügt, wodurch eine einzelne ausführbare Datei sowohl in x64/Arm64EC- als auch in ARM64-Prozessen geladen werden kann. Eine Schnittstelle zur Emulation von 32-Bit-x86-Systemen wurde implementiert, die Emulatorbibliothek ist jedoch noch nicht in der Hauptdistribution von Wine enthalten (der externe FEX-Emulator kann verwendet werden, um x86-Code in der ARM64-Umgebung auszuführen).
- Grafisches Subsystem
- Der PostScript-Treiber wurde überarbeitet, um Spool-Dateien im folgenden Format zu unterstützen: Windows, die Daten über Druckaufträge speichern. Direkte Aufrufe des Treibers aus der Unix-Umgebung sind ausgeschlossen.
- Den WinRT-Designs wurde Unterstützung für den Dunkelmodus hinzugefügt. WineCfg wurde eine Einstellung hinzugefügt, um ein dunkles Interface-Design zu ermöglichen.
- Der Treiber für die Vulkan-Grafik-API hat Unterstützung für die Vulkan-Spezifikation 1.3.272 hinzugefügt (8.0 wurde in Wine 1.3.237 unterstützt).
- Die Funktionen der GdiPlus-Bibliothek wurden optimiert und ermöglichen eine erhöhte Grafikleistung.
- Direct3D
- Das Parsen eines Multithread-Befehlsstroms wird ausgesetzt, wenn keine Rendering-Befehle verarbeitet werden. Dadurch kann der Energieverbrauch auf das Niveau der Single-Threaded-Verarbeitung reduziert werden, wenn Programme ausgeführt werden, die nicht die gesamte Befehlsstrombandbreite belegen.
- Direct3D 10 bietet Unterstützung für zusätzliche Effekte.
- Leistungsoptimierungen am WineD3D-Code und Backend mithilfe der Vulkan-Grafik-API vorgenommen.
- Der auf der Vulkan-API basierende Rendering-Code prüft nun, welche Funktionen das Gerät unterstützt und teilt der Anwendung mit, welche Stufe der Direct3D-Funktionalität verfügbar ist.
- Die Funktionen D3DXFillTextureTX und D3DXFillCubeTextureTX wurden implementiert.
- Das klassische OpenGL ARB-Shader-Backend bietet Unterstützung für die Definition von Schatten mithilfe der Erweiterung ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX und ähnliche Funktionen haben Unterstützung für das Laden von Benutzerdaten mithilfe der ID3DXLoadUserData-Schnittstelle hinzugefügt.
- Ton und Video
- Eine erste Implementierung der DirectMusic-API wurde vorgeschlagen. Unterstützung für Sammlungen, Instrumente und Klangbeispiele im SoundFont-Format hinzugefügt. Unterstützung für den Doppler-Effekt hinzugefügt. Es wurden Tests durchgeführt, um die korrekte Implementierung beim Betrieb des dmime-Sequenzers und des dmsynth-MIDI-Synthesizers zu überprüfen.
- Die FluidSynth-Bibliothek ist zur Verwendung in die DirectMusic-API integriert.
- Die Unterstützung für das Laden von Soundfonts (SoundFont – Formate für samplebasierte Synthese zur Wiedergabe von MIDI-Dateien) in den Formaten DLS1 und DLS2 sowie im verwendeten SF2-Format wurde implementiert. Linux.
- Es wurde die Möglichkeit hinzugefügt, MIDI-Inhalte mithilfe der dmsynth-Bibliothek abzuspielen und dabei den Software-Synthesizer FluidSynth und die DirectSound-API für die Audioausgabe zu verwenden.
- Ein Decoder für Videos im Video-Codec-Format Indeo IV50 wurde hinzugefügt.
- Directshow
- Die DMO-Komponente (DirectX Media Object) mit einem WMV-Formatdecoder wurde implementiert (Windows Medienvideo).
- Ein Audioaufnahmefilter hinzugefügt (DirectShow Audio Capture Filter).
- Zusätzlich zu Audiostreams unterstützt der MPEG-1 Stream Splitter (DirectShow MPEG-1 Stream Splitter) jetzt Videostreams und Service-Streams.
- Ein Filter zum Dekodieren von Videos im MPEG-1-Format (DirectShow MPEG-1 Video Decoder) wurde implementiert.
- Eingabegeräte
- DirectInput unterstützt die Aktionszuordnung, mit der Sie Tasten auf einem Gamecontroller an bestimmte Aktionen in Spielen binden können.
- Desktop-Integration
- Bindungen wurden in die Hauptbenutzerumgebung exportiert, sodass unter Wine ausgeführte Anwendungen beim Öffnen einer URL als Protokollhandler aufgerufen werden können (z. B. Starten von spotify.exe beim Öffnen von Links wie „spotify:user:spotify:playlist:848218482355482821“).
- Die Extraktion von EDID-Daten (Extended Display Identification Data) mit Informationen zu den Parametern des angeschlossenen Monitors, wie z. B. Name und Modell des Geräts, wurde implementiert.
- Es ist möglich, ein im Vollbildmodus bereitgestelltes Desktop-Fenster über die Schaltfläche „Desktop beenden“ im „Start“-Menü zu schließen.
- Internationalisierung
- Die Unterstützung für IMEs (Eingabemethoden-Editoren) wurde erweitert. Es wurden Arbeiten durchgeführt, um die Kompatibilität mit nativen Eingabemethoden sicherzustellen. Windows IME-Implementierungen und verbesserte Integration mit Linux IME
- Die Generierung von Gebietsschema-Datenbanken im Format „locale.nls“ aus der Unicode CLDR-Datenbank (Unicode Common Locale Data Repository) Version 44 wurde bereitgestellt. Unterstützung für zusätzliche Gebietsschemas bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA , prg-PL wurde hinzugefügt, skr-PK, tyv-RU, vmw-MZ, xnr-IN und za-CN.
- Die Benutzeroberfläche wurde ins Georgische übersetzt. Vollständige Übersetzungen werden für 16 Sprachen und Teilübersetzungen für 31 Sprachen bereitgestellt.
- Unicode-Zeichentabellen wurden auf die Standardversion 15.1.0 aktualisiert. Die Zeitzonendatenbank wurde aktualisiert.
- Kernel (Kernel-Schnittstellen) Windows)
- Wie die herausgegebene Version Windows Standardmäßig definiert Windows 10.
- Für ausführbare Dateien im PE-Format ist die Unterstützung für Address Space Randomization (ASLR) implementiert, die Adressen zum Laden von Code in den Speicher sind jedoch noch nicht vollständig randomisiert.
- Unterstützung für einen schwach fragmentierten Heap (LFH, Low Fragmentation Heap) wurde implementiert, was die Leistung von Speicherzuweisungsvorgängen erhöht hat.
- Dem Mechanismus zur Zuweisung des virtuellen Speichers wurde Unterstützung für die Speicherreservierung (Platzhalter) hinzugefügt, sodass eine Anwendung einen bestimmten Bereich des virtuellen Speichers für die zukünftige Verwendung reservieren kann.
- 64-Bit-Loader (Loader und Preloader) ausführbarer Dateien und Bibliotheken werden im PIE-Format (Position-Independent Executables) kompiliert, um einen Teil des 32-Bit-Adressraums freizugeben.
- Für NT-Systemaufrufe und Benutzer-Callback-Aufrufe wird eine korrekte Stapelabwicklung bereitgestellt.
- Netzwerkfunktionen
- Die MSHTML-Engine unterstützt den Garbage-Collection-Mechanismus „Cycle Collection“.
- MSHTML hat Unterstützung für die synchrone Verarbeitung von XMLHttpRequest-Anfragen hinzugefügt.
- jscript.dll fügt Unterstützung für ein WeakMap-Objekt hinzu, um mit einer Sammlung von Schlüssel/Wert-Paaren zu arbeiten, in denen der Schlüssel ein Objekt ist, an das ein beliebiger Wert angehängt werden kann. Implementierung der Methoden WeakMap.get(), WeakMap.delete(), WeakMap.clear() und WeakMap.has().
- Die Gecko-Browser-Engine wurde auf Version 2.47.4 aktualisiert.
- Unterstützung für Benachrichtigungen über Änderungen im Zustand der Netzwerkschnittstelle wurde implementiert.
- Kryptographie und Sicherheit
- Der Winscard.dll-Bibliothek wurde Unterstützung für Smartcards hinzugefügt, die über die PCSClite-Systembibliothek implementiert wird.
- BCrypt hat Unterstützung für das Diffie-Hellman-Schlüsselaustauschprotokoll hinzugefügt.
- Das Negotiate-Paket wurde implementiert und bietet eine Ebene für die Verwendung der SSPI-Schnittstelle (Security Support Provider Interface) für den Zugriff auf SSP-Anbieter (Security Support Provider).
- Eingebettete Anwendungen
- Der Wine Debugger (winedbg) nutzt die Zydis-Bibliothek, um X86-Maschinenanweisungen zu disassemblieren.
- Die WineCfg-Oberfläche wurde aktualisiert, um auch ältere Versionen auf 64-Bit-Plattformen zu unterstützen. Windows (vor XP), wodurch ältere Anwendungen im WoW64-Modus ausgeführt werden können.
- Alle integrierten grafischen Anwendungen zeigen Fehlerinformationen jetzt in einem separaten Dialogfeld an, anstatt sie in der Konsole anzuzeigen.
- Das Programm systeminfo zeigt Informationen aus der WMI-Datenbank an (Windows Managementinstrumente).
- Klist-Anwendung zur Anzeige von Kerberos-Tickets hinzugefügt.
- Die Taskkill-Anwendung implementiert die Möglichkeit, untergeordnete Prozesse zwangsweise zu beenden.
- Option „/machine“ zum Startdienstprogramm hinzugefügt, um die Architektur auszuwählen, die beim Ausführen hybrider ausführbarer Dateien verwendet wird, die x86 und ARM unterstützen.
- Die meisten Funktionen des Tasklist-Programms wurden implementiert.
- Eine grundlegende Implementierung der Findstr-Anwendung hinzugefügt.
- Entwicklungswerkzeuge
- Das Dienstprogramm WineDump kann den Inhalt von Registrierungsdateien anzeigen. Windows (REGF-Format) sowie die Anzeige von Daten für alle Architekturen (x86/ARM64), die in hybriden PE-Dateien unterstützt werden.
- Der IDL-Compiler hat Unterstützung für die Attribute „composable“, „default_overload“, „deprecated“ und „protected“ hinzugefügt.
- libwine.so wurde entfernt, das in Wine 6.0 veraltet war und seit langem nicht mehr in Wine verwendet wird. Programme im ELF-Format, die in älteren Versionen von Wine (5.0 und älter) mit libwine.so erstellt wurden, müssen neu erstellt werden, um in Wine 9.0 ausgeführt zu werden.
- Integrierte Bibliotheken und externe Abhängigkeiten
- Im Paket sind die Bibliotheken FluidSynth 2.3.3, Musl 1.2.3 (nur mathematische Funktionen) und Zydis 4.0.0 integriert.
- Die Komponenten 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 und Zlib 1.3 wurden auf neue Versionen aktualisiert. Die Wine Mono-Engine mit der Implementierung der .NET-Plattform wurde auf Version 8.1.0 aktualisiert.
- Der Treiber winewayland.drv nutzt die Wayland-Client-Bibliothek als externe Abhängigkeiten sowie die Bibliotheken xkbcommon und xkbregistry.
- Zur Unterstützung von Smartcards wird die externe PCSClite-Bibliothek verwendet (in macOS — PCSC).
- Das Erstellen von PE-Dateien auf Nicht-i386-Plattformen erfordert jetzt einen Cross-Compiler mit Unterstützung für „.seh“-Anweisungen zur Behandlung von Ausnahmen.
Source: opennet.ru
