Stabile Version von Wine 7.0

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

Wine hat die volle Funktionsfähigkeit von 5156 (vor einem Jahr 5049) Programmen für Windows bestätigt, weitere 4312 (vor einem Jahr 4227) Programme funktionieren einwandfrei mit zusätzlichen Einstellungen und externen DLLs. 3813 Programme (vor 3703 Jahren) weisen geringfügige Betriebsprobleme auf, die die Nutzung der Hauptfunktionen der Anwendungen nicht beeinträchtigen.

Wichtige Neuerungen in Wine 7.0:

  • Module im PE-Format
    • Fast alle DLLs wurden so konvertiert, dass sie das ausführbare Dateiformat PE (Portable Executable, verwendet unter Windows) anstelle von ELF verwenden. Die Verwendung von PE löst Probleme bei der Unterstützung verschiedener Kopierschutzschemata, die die Identität von Systemmodulen auf der Festplatte und im Speicher überprüfen.
    • Es wurde die Möglichkeit implementiert, PE-Module mit Unix-Bibliotheken über den standardmäßigen NT-Kernel-Systemaufruf zu interagieren, wodurch Sie den Zugriff auf Unix-Code vor Windows-Debuggern verbergen und die Thread-Registrierung überwachen können.
    • Integrierte DLLs werden jetzt nur geladen, wenn eine entsprechende PE-Datei auf der Festplatte vorhanden ist, unabhängig davon, ob es sich um eine echte Bibliothek oder einen Stub handelt. Durch diese Änderung kann die Anwendung immer die korrekte Bindung an PE-Dateien erkennen. Um dieses Verhalten zu deaktivieren, können Sie die Umgebungsvariable WINEBOOTSTRAPMODE verwenden.
  • WoW64
    • Die WoW64-Architektur (64-Bit-Windows-on-Windows) wurde implementiert, sodass Sie 32-Bit-Windows-Anwendungen in 64-Bit-Unix-Prozessen ausführen können. Die Unterstützung wird durch die Verbindung einer Schicht implementiert, die 32-Bit-NT-Systemaufrufe in 64-Bit-Aufrufe an NTDLL übersetzt.
    • WoW64-Layer sind für die meisten Unix-Bibliotheken vorbereitet und ermöglichen 32-Bit-PE-Modulen den Zugriff auf 64-Bit-Unix-Bibliotheken. Sobald alle Module in das PE-Format konvertiert sind, können 32-Bit-Windows-Anwendungen ausgeführt werden, ohne dass 32-Bit-Unix-Bibliotheken installiert werden müssen.
  • Themen
    • Theme-Unterstützung wurde implementiert. Enthalten sind die Designthemen „Light“, „Blue“ und „Classic Blue“, die über den WineCfg-Konfigurator ausgewählt werden können.
    • Es wurde die Möglichkeit hinzugefügt, das Erscheinungsbild aller Schnittstellensteuerelemente über Themen anzupassen. Das Erscheinungsbild von Elementen wird nach dem Ändern des Designthemas automatisch aktualisiert.
    • Allen integrierten Wine-Anwendungen wurde Theme-Unterstützung hinzugefügt. Anwendungen wurden an Bildschirme mit hoher Pixeldichte (High DPI) angepasst.
  • Grafisches Subsystem
    • Es wurde eine neue Win32u-Bibliothek hinzugefügt, die Teile der GDI32- und USER32-Bibliotheken enthält, die sich auf die Grafikverarbeitung und Fensterverwaltung auf Kernelebene beziehen. Zukünftig wird mit der Portierung von Treiberkomponenten wie winex32.drv und winemac.drv auf Win11u begonnen.
    • Der Vulkan-Treiber unterstützt die Vulkan-Grafik-API-Spezifikation 1.2.201.
    • Unterstützung für die Ausgabe schraffierter geometrischer Objekte über die Direct2D-API bereitgestellt, mit der Möglichkeit zu prüfen, ob ein Klick erfolgreich ist (Hit-Test).
    • Die Direct2D-API bietet anfängliche Unterstützung für visuelle Effekte, die über die ID2D1Effect-Schnittstelle angewendet werden.
    • Die Direct2D-API hat Unterstützung für die ID2D1MultiThread-Schnittstelle hinzugefügt, die zum Organisieren des exklusiven Zugriffs auf Ressourcen in Multithread-Anwendungen verwendet wird.
    • Der WindowsCodecs-Bibliothekssatz bietet Unterstützung für die Dekodierung von Bildern im WMP-Format (Windows Media Photo) und die Kodierung von Bildern im DDS-Format (DirectDraw Surface). Wir unterstützen die Kodierung von Bildern im ICNS-Format (für macOS) nicht mehr, das unter Windows nicht unterstützt wird.
  • Direct3D
    • Die neue Rendering-Engine wurde erheblich verbessert und übersetzt Direct3D-Aufrufe in die Vulkan-Grafik-API. In den meisten Situationen wurde der Grad der Unterstützung für Direct3D 10 und 11 in der Vulkan-basierten Engine auf das Niveau der älteren OpenGL-basierten Engine gebracht. Um die Vulkan-Rendering-Engine zu aktivieren, setzen Sie die Direct3D-Registrierungsvariable „renderer“ auf „vulkan“.
    • Viele Funktionen von Direct3D 10 und 11 sind implementiert, darunter verzögerte Kontexte, Zustandsobjekte, die im Gerätekontext arbeiten, dauerhafte Offsets in Puffern, Löschen von Texturansichten außerhalb der Reihenfolge, Kopieren von Daten zwischen Ressourcen in typlosen Formaten (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) usw .
    • Unterstützung für Konfigurationen mit mehreren Monitoren hinzugefügt, sodass Sie einen Monitor auswählen können, um eine Direct3D-Anwendung im Vollbildmodus anzuzeigen.
    • Die DXGI-API bietet eine Bildschirm-Gammakorrektur, die von Direct3D 10- und 11-basierten Anwendungen verwendet werden kann, um die Bildschirmhelligkeit zu ändern. Abruf virtueller Framebuffer-Zähler (SwapChain) aktiviert.
    • Direct3D 12 bietet Unterstützung für Root-Signaturen der Version 1.1.
    • Beim Rendering-Code über die Vulkan-API wurde die Effizienz der Abfrageverarbeitung verbessert, wenn das System die Erweiterung VK_EXT_host_query_reset unterstützt.
    • Es wurde die Möglichkeit hinzugefügt, virtuelle Framebuffer (SwapChain) über GDI auszugeben, wenn OpenGL oder Vulkan nicht zur Anzeige verwendet werden können, beispielsweise bei der Ausgabe in ein Fenster aus verschiedenen Prozessen, beispielsweise in Programmen, die auf dem CEF-Framework (Chromium Embedded Framework) basieren.
    • Bei Verwendung des GLSL-Shader-Backends ist der Modifikator „präzise“ für Shader-Anweisungen gewährleistet.
    • Die DirectDraw-API fügt Unterstützung für 3D-Rendering im Systemspeicher mithilfe von Softwaregeräten wie „RGB“, „MMX“ und „Ramp“ hinzu.
    • AMD Radeon RX 3M-, AMD Radeon RX 5500/6800 XT/6800 XT-, AMD Van Gogh-, Intel UHD Graphics 6900- und NVIDIA GT 630-Karten wurden der Direct1030D-Grafikkartendatenbank hinzugefügt.
    • Der Schlüssel „UseGLSL“ wurde aus der Registrierung HKEY_CURRENT_USER\Software\Wine\Direct3D entfernt. Stattdessen müssen Sie ab Wine 5.0 „shader_backend“ verwenden.
    • Um Direct3D 12 zu unterstützen, benötigen Sie jetzt mindestens Version 3 der vkd1.2d-Bibliothek.
  • D3DX
    • Die D3DX 10-Implementierung hat die Unterstützung für das Visual Effects Framework verbessert und Unterstützung für das Windows Media Photo-Bildformat (JPEG XR) hinzugefügt.
    • In D3DX10 bereitgestellte Texturerstellungsfunktionen hinzugefügt, z. B. D3DX10CreateTextureFromMemory().
    • Die Softwareschnittstellen ID3DX10Sprite und ID3DX10Font wurden teilweise implementiert.
  • Ton und Video
    • GStreamer-Add-ons für DirectShow und das Media Foundation-Framework werden in einem gemeinsamen WineGStreamer-Backend zusammengefasst, was die Entwicklung neuer APIs zur Inhaltsdekodierung vereinfachen soll.
    • Basierend auf dem WineGStreamer-Backend werden Windows Media-Objekte für synchrones und asynchrones Lesen implementiert.
    • Die Implementierung des Media Foundation-Frameworks wurde weiter verfeinert, Unterstützung für die IMFPMediaPlayer-Funktionalität und den Sample-Allocator wurde hinzugefügt und die Unterstützung für EVR- und SAR-Rendering-Puffer wurde verbessert.
    • Die wineqtdecoder-Bibliothek, die einen Decoder für das QuickTime-Format bereitstellt, wurde entfernt (alle Codecs verwenden jetzt GStreamer).
  • Eingabegeräte
    • Der Stack für Eingabegeräte, die das HID-Protokoll (Human Interface Devices) unterstützen, wurde erheblich verbessert und bietet Funktionen wie das Parsen von HID-Deskriptoren, die Verarbeitung von HID-Nachrichten und die Bereitstellung von Mini-HID-Treibern.
    • In den Backends des winebus.sys-Treibers wurde die Übersetzung von Gerätebeschreibungen in HID-Nachrichten verbessert.
    • Ein neues DirectInput-Backend für Joysticks hinzugefügt, die das HID-Protokoll unterstützen. Die Möglichkeit, Feedback-Effekte in Joysticks zu nutzen, wurde implementiert. Verbessertes Joystick-Bedienfeld. Optimierte Interaktion mit XInput-kompatiblen Geräten. In WinMM wurde die Joystick-Unterstützung auf DInput verschoben, anstatt das evdev-Backend unter Linux und IOHID unter macOS IOHID zu verwenden. Der alte Joystick-Treiber winejoystick.drv wurde entfernt.
    • Dem DInput-Modul wurden neue Tests hinzugefügt, die auf der Verwendung virtueller HID-Geräte basieren und kein physisches Gerät erfordern.
  • Texte und Schriftarten
    • Font Set-Objekt zu DirectWrite hinzugefügt.
    • RichEdit implementiert die TextHost-Schnittstelle korrekt.
  • Kernel (Windows-Kernel-Schnittstellen)
    • Beim Ausführen einer nicht identifizierten ausführbaren Datei (z. B. „wine foo.msi“) in Wine wird jetzt start.exe aufgerufen, das mit dem Dateityp verknüpfte Handler aufruft.
    • Unterstützung für die Synchronisierungsmechanismen NtAlertThreadByThreadId und NtWaitForAlertByThreadId hinzugefügt, ähnlich den Futexen unter Linux.
    • Unterstützung für NT-Debugobjekte hinzugefügt, die zum Debuggen von Kernelfunktionen verwendet werden.
    • Unterstützung für dynamische Registrierungsschlüssel zum Speichern von Leistungsdaten hinzugefügt.
  • C-Laufzeit
    • Die C-Laufzeit implementiert einen vollständigen Satz mathematischer Funktionen, die hauptsächlich aus der Musl-Bibliothek übernommen werden.
    • Alle CPU-Plattformen bieten korrekte Unterstützung für Gleitkommafunktionen.
  • Netzwerkfunktionen
    • Verbesserter Kompatibilitätsmodus für Internet Explorer 11 (IE11), der jetzt standardmäßig für die Verarbeitung von HTML-Dokumenten verwendet wird.
    • Die mshtml-Bibliothek implementiert den ES6-JavaScript-Modus (ECMAScript 2015), der Funktionen wie den let-Ausdruck und das Map-Objekt unterstützt.
    • Die Installation von MSI-Paketen mit Ergänzungen zur Gecko-Engine im Wine-Arbeitsverzeichnis erfolgt jetzt bei Bedarf und nicht während eines Wine-Updates.
    • Unterstützung für das DTLS-Protokoll hinzugefügt.
    • Der NSI-Dienst (Network Store Interface) wurde implementiert, der Informationen über Routing und Netzwerkschnittstellen auf dem Computer speichert und an andere Dienste übermittelt.
    • WinSock-API-Handler wie „setsockopt“ und „getsockopt“ wurden in NTDLL und den afd.sys-Treiber verschoben, um der Windows-Architektur zu entsprechen.
    • Wines eigene Netzwerkdatenbankdateien wie /etc/protocols und /etc/networks werden jetzt im Wine-Arbeitsverzeichnis installiert, anstatt auf ähnliche Unix-Datenbanken zuzugreifen.
  • Alternative Plattformen
    • Unterstützung für Apple-Geräte hinzugefügt, die auf M1-ARM-Chips (Apple Silicon) basieren.
    • Die Unterstützung der BCrypt- und Secur32-Funktionen unter macOS erfordert jetzt die Installation der GnuTLS-Bibliothek.
    • Ausführbare 32-Bit-Dateien für ARM-Plattformen werden jetzt im Thumb-2-Modus erstellt, ähnlich wie bei Windows. Zum Laden solcher Dateien wird ein Preloader verwendet.
    • Für 32-Bit-ARM-Plattformen wurde Unterstützung für das Abwickeln von Ausnahmen implementiert.
    • Für FreeBSD wurde die Anzahl der unterstützten Abfragen für Systeminformationen auf niedriger Ebene, wie z. B. Speicherstatus und Akkuladestand, erweitert.
  • Integrierte Anwendungen und Entwicklungstools
    • Das Dienstprogramm reg.exe bietet jetzt Unterstützung für 32- und 64-Bit-Registrierungsansichten. Unterstützung für das Kopieren von Registrierungsschlüsseln hinzugefügt.
    • Das Dienstprogramm WineDump bietet jetzt Unterstützung für das Dumping von Windows-Metadaten und die Anzeige detaillierter Informationen zu CodeView-Einträgen.
    • Der Wine Debugger (winedbg) bietet die Möglichkeit, 32-Bit-Prozesse von einem 64-Bit-Debugger aus zu debuggen.
    • Dem IDL-Compiler (widl) wurde die Möglichkeit hinzugefügt, in PE-Dateien integrierte Bibliotheken zu laden, Unterstützung für WinRT-spezifische Attribute und Konstrukte wurde bereitgestellt und eine plattformspezifische Bibliothekssuche wurde implementiert.
  • Montagesystem
    • In architekturspezifischen Verzeichnissen werden Bibliotheken jetzt mit Namen gespeichert, die die Architektur und den ausführbaren Typ widerspiegeln, z. B. „i386-windows“ für das PE-Format und „x86_64-unix“ für Unix-Bibliotheken, was die Unterstützung verschiedener Architekturen in einem einzigen Wine ermöglicht Installation und Bereitstellung der Cross-Kompilierung von Winelib.
    • Um eine Option in den Headern von PE-Dateien festzulegen, die den Übergang zur Verwendung nativer DLLs steuert, wurde das Flag „--prefer-native option“ zu winebuild hinzugefügt (die DLL_WINE_PREATTACH-Verarbeitung in DllMain wurde gestoppt).
    • Unterstützung für Version 4 des Dwarf-Debug-Datenformats hinzugefügt, das jetzt standardmäßig beim Erstellen von Wine-Bibliotheken verwendet wird.
    • Build-Option „—enable-build-id“ hinzugefügt, um eindeutige Build-IDs in ausführbaren Dateien zu speichern.
    • Unterstützung für die Verwendung des Clang-Compilers im MSVC-Kompatibilitätsmodus hinzugefügt.
  • Verschiedene
    • Die Namen typischer Verzeichnisse in der Benutzer-Shell (Windows-Shell) werden nach dem ab Windows Vista verwendeten Schema vergeben, d. h. Anstelle von „Eigene Dateien“ wird nun ein Verzeichnis „Dokumente“ erstellt und die meisten Daten werden im Verzeichnis „AppData“ gespeichert.
    • Der OpenCL-Bibliotheksschicht wurde Unterstützung für die OpenCL 1.2-Spezifikation hinzugefügt.
    • Der WinSpool-Treiber bietet Unterstützung für verschiedene Seitengrößen beim Drucken.
    • Erste Unterstützung für MSDASQL, den Microsoft OLE DB-Anbieter für ODBC-Treiber, hinzugefügt.
    • Die Wine Mono-Engine mit .NET-Plattformimplementierung wurde auf Version 7.0.0 aktualisiert.
    • Unicode-Daten wurden auf die Unicode 14-Spezifikation aktualisiert.
    • Der Quellbaum umfasst die Bibliotheken Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt und Zlib, die im PE-Format kompiliert sind und keine Version im Unix-Format erfordern. Gleichzeitig können diese Bibliotheken auch aus dem System importiert werden, um externe Assemblys anstelle integrierter PE-Optionen zu verwenden.

Source: opennet.ru

Kommentar hinzufügen