Stabile Veröffentlichung von Wine 7.0

Nach einem Jahr Entwicklung und 30 experimentellen Versionen wurde die stabile Version der offenen Implementierung der Win32 API — Wine 7.0 - vorgestellt, die mehr als 9100 Änderungen umfasst. Zu den wichtigsten Errungenschaften der neuen Version zählt die Übersetzung der meisten Wine-Module in das PE-Format, die Unterstützung von Designs, die Erweiterung des Stacks für Joysticks und Eingabegeräte mit HID-Schnittstelle sowie die Implementierung der WoW64-Architektur zur Ausführung von 32-Bit-Anwendungen in einer 64-Bit-Umgebung.

In Wine ist die vollständige Funktionsfähigkeit von 5156 (vor einem Jahr 5049) Windows-Anwendungen bestätigt, weitere 4312 (vor einem Jahr 4227) Anwendungen funktionieren hervorragend mit zusätzlichen Einstellungen und externen DLLs. Bei 3813 Anwendungen (vor einem Jahr 3703) gibt es kleinere Probleme, die die Nutzung der Hauptfunktionen der Anwendungen jedoch nicht beeinträchtigen.

Wichtige Neuerungen in Wine 7.0:

  • Module im PE-Format
    • Fast alle DLL-Bibliotheken wurden auf die Verwendung des PE-Formats (Portable Executable, in Windows verwendet) anstelle von ELF umgestellt. Der Einsatz von PE löst Probleme mit der Unterstützung verschiedener Kopierschutzsysteme, die die Identität von Systemmodulen auf der Festplatte und im Speicher überprüfen.
    • Die Möglichkeit zur Interaktion von PE-Modulen mit Unix-Bibliotheken unter Verwendung des regulären Systemaufrufs des NT-Kerns wurde implementiert, was es ermöglicht, den Zugriff auf Unix-Code von Windows-Debuggern zu verbergen und die Registrierung von Threads zu verfolgen.
    • Integrierte DLLs werden jetzt nur geladen, wenn auf der Festplatte die entsprechende Datei im PE-Format vorhanden ist, unabhängig davon, ob es sich um eine echte Bibliothek oder einen Platzhalter handelt. Diese Änderung stellt sicher, dass die Anwendung immer eine korrekte Bindung an PE-Dateien sieht. Um dieses Verhalten zu deaktivieren, kann die Umgebungsvariable WINEBOOTSTRAPMODE verwendet werden.
  • WoW64
    • Die WoW64-Architektur (64-Bit Windows-on-Windows) wurde implementiert, die es ermöglicht, 32-Bit-Windows-Anwendungen in 64-Bit-Unix-Prozessen auszuführen. Die Unterstützung erfolgt über die Einbindung einer Schicht, die 32-Bit-Systemaufrufe von NT in 64-Bit-Anfragen an NTDLL übersetzt.
    • Die WoW64-Schichten sind für die meisten Unix-Bibliotheken vorbereitet und ermöglichen es 32-Bit-Modulen im PE-Format, auf 64-Bit-Unix-Bibliotheken zuzugreifen. Nach der Umstellung aller Module auf das PE-Format wird es möglich sein, 32-Bit-Windows-Anwendungen ohne Installation von 32-Bit-Unix-Bibliotheken auszuführen.
  • Designs
    • Die Unterstützung für Designs wurde realisiert. Im Paket sind die Designs „Light“, „Blue“ und „Classic Blue“ enthalten, die über den Konfigurator WineCfg ausgewählt werden können.
    • Die Möglichkeit zur Anpassung des Erscheinungsbildes aller Steuerelemente der Benutzeroberfläche über Designs wurde hinzugefügt. Die automatische Aktualisierung der Darstellung der Elemente nach einem Wechsel des Designs wurde sichergestellt.
    • In alle integrierten Anwendungen von Wine wurde die Unterstützung für Designs hinzugefügt. Die Anwendungen wurden an Bildschirme mit hoher Pixeldichte (High DPI) angepasst.
  • Grafik-Subsystem
    • Eine neue Bibliothek Win32u wurde hinzugefügt, die Teile der Bibliotheken GDI32 und USER32, die mit der Grafikverarbeitung und dem Fenster-Management auf Kernel-Ebene zu tun haben, enthält. In Zukunft wird die Arbeit an der Migration von Treiberkomponenten, wie winex11.drv und winemac.drv, zu Win32u beginnen.
    • Im Vulkan-Treiber wurde die Unterstützung der Spezifikation des Grafik-APIs Vulkan 1.2.201 implementiert.
    • Die Unterstützung für die Ausgabe von schraffierten geometrischen Objekten über die API Direct2D wurde bereitgestellt, mit der Möglichkeit zur Überprüfung von Klicks (Hit-Test).
    • Im API Direct2D wurde erste Unterstützung für visuelle Effekte implementiert, die unter Verwendung des Interfaces ID2D1Effect angewendet werden.
    • Im API Direct2D wurde die Unterstützung für das Interface ID2D1MultiThread hinzugefügt, das für die Organisation des exklusiven Zugriffs auf Ressourcen in Multithread-Anwendungen verwendet wird.
    • Im WindowsCodecs-Bibliothekssatz wurde die Unterstützung für das Dekodieren von Bildern im WMP-Format (Windows Media Photo) und das Kodieren von Bildern im DDS-Format (DirectDraw Surface) realisiert. Die Unterstützung für das Kodieren von Bildern im ICNS-Format (für macOS), das in Windows nicht unterstützt wird, wurde eingestellt.
  • Direct3D
    • Der neue Renderer wurde erheblich verbessert, wobei die Aufrufe von Direct3D in das Grafik-API Vulkan übersetzt werden. In den meisten Situationen wurde der Unterstützungsgrad für Direct3D 10 und 11 im auf Vulkan basierenden Renderer auf das Niveau des alten Renderers auf Basis von OpenGL angehoben. Um den Renderer über Vulkan zu aktivieren, sollte die Registry-Variable Direct3D „renderer“ auf „vulkan“ gesetzt werden.
    • Viele Funktionen von Direct3D 10 und 11 wurden realisiert, einschließlich verzögerter Kontexte (Deferred Contexts), objektive Zustandsverwaltung im Kontext von Geräten, fester Offsets in Puffer, die Bereinigung ungeordneter Texturdarstellungen, das Kopieren von Daten zwischen Ressourcen in typelosen Formaten (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) usw.
    • Unterstützung für Multi-Monitor-Konfigurationen hinzugefügt, die es ermöglicht, einen Monitor für die Anzeige einer Direct3D-Anwendung im Vollbildmodus auszuwählen.
    • Im DXGI-API wurde die Möglichkeit der Gamma-Korrektur des Bildschirms implementiert, die von Anwendungen basierend auf Direct3D 10 und 11 zur Änderung der Bildschirmhelligkeit genutzt werden kann. Es wird die Abfrage von Zählern für virtuelle Framebuffer (SwapChain) unterstützt.
    • In Direct3D 12 wurde die Unterstützung für Root-Signaturen der Version 1.1 hinzugefügt.
    • Im Rendering-Code über die Vulkan-API wurde die Effizienz der Anfrageverarbeitung bei vorhandener Unterstützung des VK_EXT_host_query_reset-Erweiterung in der Systemumgebung verbessert.
    • Die Möglichkeit, virtuelle Framebuffer (SwapChain) über GDI auszugeben, wurde hinzugefügt, wenn OpenGL oder Vulkan für die Anzeige nicht verwendet werden können, beispielsweise bei der Ausgabe in ein Fenster aus verschiedenen Prozessen, wie in Anwendungen, die auf dem CEF-Framework (Chromium Embedded Framework) basieren.
    • Bei der Verwendung des Backends für GLSL-Shader wurde die Anwendung des Modifikators "precise" für Shader-Anweisungen sichergestellt.
    • Im DirectDraw-API wurde die Unterstützung für 3D-Rendering im Systemspeicher hinzugefügt, wobei Software-Geräte wie "RGB", "MMX" und "Ramp" verwendet werden.
    • In die Direct3D-Grafikkartendatenbank wurden die Karten AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 und NVIDIA GT 1030 hinzugefügt.
    • Der Schlüssel "UseGLSL" wurde aus dem HKEY_CURRENT_USER\Software\Wine\Direct3D-Registry entfernt, stattdessen sollte ab Wine 5.0 "shader_backend" verwendet werden.
    • Für die Unterstützung von Direct3D 12 ist nun die Bibliothek vkd3d in mindestens der Version 1.2 erforderlich.
  • D3DX
    • Die Implementierung von D3DX 10 verbessert die Unterstützung des Visual Effects Frameworks und fügt die Unterstützung für das Bildformat Windows Media Photo (JPEG XR) hinzu.
    • Funktionen zur Erstellung von Texturen, die in D3DX10 bereitgestellt werden, wie D3DX10CreateTextureFromMemory(), wurden hinzugefügt.
    • Teilweise wurden die Programmierschnittstellen ID3DX10Sprite und ID3DX10Font implementiert.
  • Ton und Video
    • Die GStreamer-Erweiterungen für DirectShow und das Media Foundation-Framework wurden in einer gemeinsamen Backend-Lösung, WineGStreamer, zusammengeführt, was die Entwicklung neuer Decoding-APIs vereinfachen sollte.
    • Basierend auf dem WineGStreamer-Backend wurden Windows Media-Objekte für die synchrone und asynchrone Lesung implementiert.
    • Die Implementierung des Media Foundation-Frameworks wurde weiterentwickelt, die Unterstützung der Funktionalität von IMFPMediaPlayer, dem Sample Allocator, wurde hinzugefügt, und die Unterstützung von EVR und Rendering-Buffern SAR verbessert.
    • Die Bibliothek wineqtdecoder, die einen Decoder für das QuickTime-Format bereitstellt, wurde entfernt (für alle Codecs wird jetzt GStreamer verwendet).
  • Eingabegeräte
    • Der Stack für Eingabegeräte, die das HID-Protokoll (Human Interface Devices) unterstützen, wurde erheblich verbessert, einschließlich Funktionen wie das Parsen von HID-Deskriptoren, die Verarbeitung von HID-Nachrichten und die Bereitstellung von Mini-Treibern für HID.
    • Im Backend des Treibers winebus.sys wurde die Übersetzung von Geräbeschreibungen in HID-Nachrichten verbessert.
    • Ein neues DirectInput-Backend für Joysticks, die das HID-Protokoll unterstützen, wurde hinzugefügt. Es wurde die Möglichkeit implementiert, Rückkopplungseffekte in Joysticks zu nutzen. Verbesserungen wurden Steuerungspanel an Joysticks vorgenommen. Die Interaktion mit Geräten, die mit XInput kompatibel sind, wurde optimiert. In WinMM wurde die Unterstützung für Joysticks auf DInput umgestellt, anstelle des Einsatzes des evdev-Backends in Linux und IOHID in macOS. Der alte Joystick-Treiber winejoystick.drv wurde entfernt.
    • In das DInput-Modul wurden neue Tests aufgenommen, die auf der Verwendung virtueller HID-Geräte basieren und kein physisches Gerät erfordern.
  • Text und Schriftarten
    • Ein Font Set-Objekt wurde zu DirectWrite hinzugefügt.
    • In RichEdit wurde die TextHost-Schnittstelle korrekt implementiert.
  • Kern (Windows Kernel-Schnittstellen)
    • Beim Starten einer nicht erkannten ausführbaren Datei in Wine (z. B. 'wine foo.msi') wird jetzt start.exe aufgerufen, das die mit dem Dateityp verbundenen Handler aufruft.
    • Die Unterstützung für die Synchronisationsmechanismen NtAlertThreadByThreadId und NtWaitForAlertByThreadId, die den Futexen in Linux ähnlich sind, wurde hinzugefügt.
    • Die Unterstützung für NT-Debugging-Objekte, die zum Debuggen von Kernel-Funktionen verwendet werden, wurde hinzugefügt.
    • Die Unterstützung für dynamische Registrierungsschlüssel zur Speicherung von Leistungsdaten wurde hinzugefügt.
  • C Runtime
    • In der C-Laufzeit wurde ein vollständiger Satz mathematischer Funktionen implementiert, der hauptsächlich aus der Musl-Bibliothek übertragen wurde.
    • Auf allen CPU-Plattformen wird eine korrekte Unterstützung für Funktionen zur Durchführung von Berechnungen mit Fließkommazahlen gewährleistet.
  • Netzwerkfähigkeiten
    • Der Kompatibilitätsmodus mit Internet Explorer 11 (IE11) wurde verbessert und wird jetzt standardmäßig zur Verarbeitung von HTML-Dokumenten verwendet.
    • In der Bibliothek mshtml wurde der JavaScript-Modus ES6 (ECMAScript 2015) implementiert, der die Unterstützung solcher Funktionen wie let-Ausdrücke und das Map-Objekt bietet.
    • Die Installation von Wine MSI-Paketen mit Ergänzungen zum Gecko-Engine erfolgt jetzt bei Bedarf im Arbeitsverzeichnis und nicht während des Wine-Updates.
    • Die Unterstützung des DTLS-Protokolls wurde hinzugefügt.
    • Ein NSI-Dienst (Network Store Interface) wurde implementiert, der Informationen über Routing und Netzwerkinterfaces auf dem Computer speichert und an andere Dienste weitergibt.
    • API-Handler von WinSock, wie setsockopt und getsockopt, wurden in die NTDLL-Bibliothek und den Treiber afd.sys verschoben, um der Architektur von Windows zu entsprechen.
    • Im Arbeitsverzeichnis von Wine werden nun eigene Dateien mit Netzwerkdatenbanken, wie /etc/protocols und /etc/networks, anstelle von Verweisen auf entsprechende Unix-Datenbanken gespeichert.
  • Alternative Plattformen
    • Unterstützung für Apple-Hardware auf Basis von ARM-Chips M1 (Apple Silicon) wurde hinzugefügt.
    • Für die Unterstützung von Funktionen von BCrypt und Secur32 auf der Plattform macOS ist nun die Installation der GnuTLS-Bibliothek erforderlich.
    • 32-Bit-Ausführungsdateien für ARM-Plattformen werden nun im Thumb-2-Modus erstellt, ähnlich wie unter Windows. Zum Laden solcher Dateien wird ein Preloader verwendet.
    • Für 32-Bit-Plattformen ARM wurde die Unterstützung für das Unwinding von Ausnahmen implementiert.
    • Für FreeBSD wurde die Anzahl der unterstützten Anfragen nach niedrigstufigen Systeminformationen erweitert, z.B. Informationen über den Speicherzustand und den Ladestand des Akkus.
  • Integrierte Anwendungen und Entwicklungstools
    • Der Dienst reg.exe unterstützt nun sowohl 32- als auch 64-Bit-Darstellungen des Registers. Es wurde Unterstützung für das Kopieren von Registrierschlüsseln hinzugefügt.
    • Das Werkzeug WineDump unterstützt nun die Ausgabe von Windows-Metadumpen und die Anzeige detaillierter Informationen zu CodeView-Einträgen.
    • Im Wine Debugger (winedbg) wurde die Möglichkeit implementiert, 32-Bit-Prozesse aus einem 64-Bit-Debugger zu debuggen.
    • Im IDL-Compiler (widl) wurde die Möglichkeit hinzugefügt, in PE-Dateien integrierte Bibliotheken zu laden, spezifische WinRT-Attribute und -Konstrukte zu unterstützen sowie die Suche nach plattformgebundenen Bibliotheken zu ermöglichen.
  • Build-System
    • In den für Hardwarearchitekturen spezifischen Verzeichnissen werden Bibliotheken nun unter Namen gespeichert, die die Architektur und den Typ der ausführbaren Dateien spiegeln, wie beispielsweise 'i386-windows' für das PE-Format und 'x86_64-unix' für Unix-Bibliotheken, was die Unterstützung verschiedener Architekturen in einer Installation von Wine und die Cross-Kompilierung von Winelib ermöglicht.
    • Für die Installation von Optionen in den Kopfzeilen von PE-Dateien, die den Übergang zur Verwendung von nativen DLL-Bibliotheken steuern, wurde im winebuild das Flag '—prefer-native option' hinzugefügt (die Verarbeitung von DLL_WINE_PREATTACH in DllMain wurde eingestellt).
    • Unterstützung für die Version 4 des Dwarf-Datenformats wurde hinzugefügt, das nun standardmäßig beim Erstellen von Wine-Bibliotheken verwendet wird.
    • Die optionale Build-Id ‘—enable-build-id’ wurde hinzugefügt, um in ausführbaren Dateien einzigartige Build-Identifikatoren zu speichern.
    • Unterstützung für die Verwendung des Compilers Clang im MSVC-Kompatibilitätsmodus wurde hinzugefügt.
  • Verschiedenes
    • Die Bezeichnungen der typischen Verzeichnisse in der Benutzeroberfläche (Windows Shell) entsprechen nun dem Schema, das ab Windows Vista verwendet wird; das heißt, anstelle von ‘Meine Dokumente’ wird jetzt das Verzeichnis ‘Dokumente’ erstellt, während die meisten Daten im Verzeichnis ‘AppData’ gespeichert werden.
    • Die OpenCL-Bibliotheksschicht hat die Unterstützung für die OpenCL-Spezifikation 1.2 hinzugefügt.
    • Der WinSpool-Treiber hat die Unterstützung für verschiedene Seitengrößen beim Drucken hinzugefügt.
    • Die erste Unterstützung für MSDASQL, den Microsoft OLE DB-Anbieter für ODBC-Treiber, wurde hinzugefügt.
    • Die Wine Mono Engine mit der .NET-Plattform wurde auf Version 7.0.0 aktualisiert.
    • Die Unicode-Daten wurden auf die Unicode 14-Spezifikation aktualisiert.
    • Die Quelltextbibliotheken Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt und Zlib wurden integriert, die im PE-Format erstellt werden und keine Unix-Variante erfordern. Diese Bibliotheken können auch aus dem System importiert werden, um externe Builds anstelle von integrierten PE-Versionen zu verwenden.

Quelle: opennet.ru

60GB SSD 8Gb DDR4