Stabile Veröffentlichung von Wine 7.0

Nach einem Jahr der Entwicklung und 30 experimentellen Versionen wurde die stabile Version der Open-Source-Implementierung der Win32 API veröffentlicht – Wine 7.0. Sie umfasst mehr als 9100 Änderungen. Zu den wichtigsten Neuerungen dieser Version gehören die Umstellung der meisten Wine-Module auf das PE-Format, die Unterstützung von Designs, die Erweiterung des Stacks für Joysticks und HID-Eingabegeräte sowie die Implementierung der WoW64-Architektur zur Ausführung von 32-Bit-Anwendungen in einer 64-Bit-Umgebung.

In Wine sind nun 5156 Windows-Anwendungen vollständig funktionsfähig (vor einem Jahr waren es 5049). Weitere 4312 Anwendungen (vor einem Jahr 4227) funktionieren gut mit zusätzlichen Anpassungen und externen DLLs. Bei 3813 Anwendungen (vor einem Jahr 3703) gibt es kleinere Probleme, die jedoch die Nutzung der Hauptfunktionen nicht beeinträchtigen.

Wichtige Neuerungen in Wine 7.0:

  • Module im PE-Format
    • Fast alle DLL-Bibliotheken wurden auf das PE-Format (Portable Executable, verwendet in Windows) umgestellt, anstelle von ELF. Die Verwendung von PE löst Probleme mit der Unterstützung verschiedener Kopierschutzschemata, die eine Überprüfung der Identität von Systemmodulen auf der Festplatte und im Speicher durchführen.
    • Die Interaktion von PE-Modulen mit Unix-Bibliotheken über den standardmäßigen Systemaufruf des NT-Kernels wurde ermöglicht. Dadurch wird der Zugriff auf Unix-Code vor den Windows-Debuggern verborgen und die Registrierung der Threads kann überwacht werden.
    • Integrierte DLLs werden jetzt nur geladen, wenn die entsprechende Datei im PE-Format auf der Festplatte vorhanden ist, unabhängig davon, ob es sich um eine echte Bibliothek oder ein Stub handelt. Diese Änderung sorgt dafür, dass die Anwendung immer die 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 durch die Anbindung einer Schicht, die 32-Bit NT-Systemaufrufe in 64-Bit Aufrufe 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.
  • Design-Themen
    • Die Unterstützung von Design-Themen wurde implementiert. Enthalten sind die Themen "Light", "Blue" und "Classic Blue", die über den WineCfg-Konfigurator ausgewählt werden können.
    • Es wurde die Möglichkeit hinzugefügt, das Aussehen aller Steuerelemente der Benutzeroberfläche über Design-Themen anzupassen. Das Erscheinungsbild der Elemente wird nach dem Wechsel des Designs automatisch aktualisiert.
    • In alle integrierten Anwendungen von Wine wurde die Unterstützung von Design-Themen eingeführt. Die Anwendungen wurden an Displays mit hoher Pixeldichte (High DPI) angepasst.
  • Grafiksubsystem
    • Eine neue Win32u-Bibliothek wurde hinzugefügt, in die Teile der Bibliotheken GDI32 und USER32, die mit Grafikverarbeitung und Fensterverwaltung auf Kernel-Ebene befasst sind, ausgelagert wurden. In Zukunft wird mit der Übertragung von Komponenten von Treibern wie winex11.drv und winemac.drv auf Win32u begonnen.
    • Der Vulkan-Treiber unterstützt die Spezifikation der Grafik-API Vulkan 1.2.201.
    • Unterstützung für die Ausgabe von gestrichelten geometrischen Objekten über die API Direct2D, mit der Möglichkeit zur Überprüfung der Kollision (Hit-Test), wurde bereitgestellt.
    • Die API Direct2D implementiert erste Unterstützung für visuelle Effekte, die über die Schnittstelle ID2D1Effect angewendet werden.
    • In der API Direct2D wurde die Unterstützung der Schnittstelle ID2D1MultiThread hinzugefügt, die für den exklusiven Zugriff auf Ressourcen in Multi-Thread-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) implementiert. 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
    • Die neue Rendering-Engine, die Aufrufe von Direct3D in die Grafik-API Vulkan übersetzt, wurde erheblich verbessert. In den meisten Fällen wurde die Unterstützung von Direct3D 10 und 11 in der Vulkan-basierten Engine auf das Niveau der alten OpenGL-basierten Engine angehoben. Um die Rendering-Engine über Vulkan zu aktivieren, sollte der Registrierungswert 'renderer' in Direct3D auf 'vulkan' gesetzt werden.
    • Viele Funktionen von Direct3D 10 und 11 wurden implementiert, einschließlich verzögerter Kontexte (Deferred Contexts), die im Kontext von Gerätezustandsobjekten arbeiten, konstanten Verschiebungen in Puffer, dem Löschen ungeordneter Texturansichten, dem Kopieren von Daten zwischen Ressourcen in typelosen Formaten (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS) usw.
    • Die Unterstützung von Konfigurationen mit mehreren Monitoren wurde hinzugefügt, sodass ein Monitor für die Darstellung von Direct3D-Anwendungen im Vollbildmodus ausgewählt werden kann.
    • Die API DXGI bietet die Möglichkeit zur Gamma-Korrektur des Bildschirms, die von Anwendungen auf Basis von Direct3D 10 und 11 zur Anpassung der Bildschirmhelligkeit verwendet werden kann. Es wurde sichergestellt, dass Zähler für virtuelle Framebuffer (SwapChain) extrahiert werden können.
    • Direct3D 12 hat die Unterstützung für Root-Signaturen der Version 1.1 hinzugefügt.
    • Die Effizienz der Verarbeitung von Anfragen wurde im Vulkan-API-Code erhöht, wenn eine Unterstützung für die Erweiterung VK_EXT_host_query_reset im System vorhanden ist.
    • Die Möglichkeit, virtuelle Framebuffer (SwapChain) über GDI auszugeben, wurde hinzugefügt, wenn OpenGL oder Vulkan nicht für die Anzeige verwendet werden können, z. B. bei der Ausgabe in ein Fenster aus verschiedenen Prozessen, wie zum Beispiel in Anwendungen, die auf dem CEF (Chromium Embedded Framework) basieren.
    • Bei der Verwendung des GLSL-Backends für Shader-Instruktionen wurde der Modifikator „precise“ implementiert.
    • Die DirectDraw-API unterstützt jetzt 3D-Rendering im Systemspeicher unter Verwendung von Software-Geräten wie „RGB“, „MMX“ und „Ramp“.
    • Die Direct3D-Grafikkarten-Datenbank wurde um die AMD Radeon RX 5500M, AMD Radeon RX 6800/6800 XT/6900 XT, AMD Van Gogh, Intel UHD Graphics 630 und NVIDIA GT 1030 erweitert.
    • Der Schlüssel „UseGLSL“ wurde aus der Registry HKEY_CURRENT_USER\Software\Wine\Direct3D entfernt; stattdessen sollte ab Wine 5.0 „shader_backend“ verwendet werden.
    • Für die Unterstützung von Direct3D 12 ist jetzt mindestens die Version 1.2 der vkd3d-Bibliothek erforderlich.
  • D3DX
    • In der Implementierung von D3DX 10 wurde die Unterstützung für das Framework visuelle Effekte verbessert und das Bildformat Windows Media Photo (JPEG XR) hinzugefügt.
    • D3DX10 stellt Funktionen zur Verfügung, um Texturen zu erstellen, darunter D3DX10CreateTextureFromMemory().
    • Teilweise wurden die Programmierschnittstellen ID3DX10Sprite und ID3DX10Font implementiert.
  • Ton und Video
    • Die GStreamer-Plugins für DirectShow und das Media Foundation-Framework wurden in ein gemeinsames WineGStreamer-Backend integriert, was die Entwicklung neuer API für die Dekodierung von Inhalten vereinfachen sollte.
    • Auf Basis des WineGStreamer-Backends wurden Windows Media-Objekte für synchrones und asynchrones Lesen implementiert.
    • Die Weiterentwicklung des Media Foundation-Frameworks wurde fortgesetzt, Unterstützung für die Funktionalität von IMFPMediaPlayer, einen Sample Allocator, hinzugefügt, und die Unterstützung für EVR sowie SAR-Puffer wurde verbessert.
    • Die Bibliothek wineqtdecoder, die einen Decoder für das QuickTime-Format bereitstellt, wurde entfernt. Für alle Codecs wird nun GStreamer verwendet.
  • Eingabegeräte
    • Der Stack für Eingabegeräte, die das HID-Protokoll (Human Interface Devices) unterstützen, wurde erheblich verbessert. Funktionen wie das Parsen von HID-Deklarationen, die Verarbeitung von HID-Nachrichten und die Bereitstellung von Mini-Treibern für HID wurden implementiert.
    • In den Backends des Treibers winebus.sys wurde die Übersetzung von Geräbeschreibungen in HID-Nachrichten verbessert.
    • Ein neuer DirectInput-Backend für Joysticks, die das HID-Protokoll unterstützen, wurde hinzugefügt. Die Möglichkeit zur Nutzung von Feedback-Effekten in den Joysticks wurde implementiert. Verwaltungspanel 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 alten Backends evdev in Linux und IOHID in macOS. Der alte Joystick-Treiber winejoystick.drv wurde entfernt.
    • Im DInput-Modul wurden neue Tests hinzugefügt, die auf der Verwendung virtueller HID-Geräte basieren und kein physisches Gerät erfordern.
  • Text und Schriftarten
    • In DirectWrite wurde ein Font Set-Objekt hinzugefügt.
    • Im RichEdit wurde die TextHost-Schnittstelle korrekt implementiert.
  • Kernel (Kernel-Schnittstellen von Windows)
    • Beim Starten einer unbekannten ausführbaren Datei in Wine (zum Beispiel ‚wine foo.msi‘) wird jetzt start.exe aufgerufen, das die handler aufruft, die mit dem Dateityp verbunden sind.
    • Unterstützung für die Synchronisationsmechanismen NtAlertThreadByThreadId und NtWaitForAlertByThreadId wurde hinzugefügt, die den Futexes in Linux ähnlich sind.
    • Unterstützung für NT-Debugging-Objekte wurde hinzugefügt, die zur Debugging von Kernel-Funktionen verwendet werden.
    • Unterstützung für dynamische Registrierungs-Schlüssel zur Speicherung von Leistungsdaten wurde hinzugefügt.
  • C Runtime
    • Im C-Runtime wurde ein vollständiger Satz mathematischer Funktionen implementiert, der hauptsächlich aus der Musl-Bibliothek übernommen wurde.
    • Für alle CPU-Plattformen wird eine korrekte Unterstützung von Funktionen für Gleitkomma-Berechnungen gewährleistet.
  • Netzwerkfunktionen
    • Der Kompatibilitätsmodus mit Internet Explorer 11 (IE11) wurde verbessert, der nun standardmäßig für die Verarbeitung von HTML-Dokumenten verwendet wird.
    • In der mshtml-Bibliothek wurde der JavaScript-Modus ES6 (ECMAScript 2015) implementiert, der Funktionen wie die let-Anweisung und das Map-Objekt unterstützt.
    • Die Installation von Wine MSI-Paketen mit Ergänzungen für die Gecko-Engine in das Arbeitsverzeichnis erfolgt jetzt bei Bedarf und nicht während des Wine-Updates.
    • Die Unterstützung für das DTLS-Protokoll wurde hinzugefügt.
    • Der NSI-Dienst (Network Store Interface) wurde implementiert, der Informationen über die Routing- und Netzwerkinterfaces des Computers speichert und an andere Dienste überträgt.
    • Die WinSock-API-Handler wie setsockopt und getsockopt wurden in die NTDLL-Bibliothek und den Treiber afd.sys verschoben, um der Architektur von Windows zu entsprechen.
    • Jetzt werden im Arbeitsverzeichnis von Wine eigene Dateien mit Netzwerkinformationen, wie /etc/protocols und /etc/networks, installiert, anstatt auf entsprechende Unix-Datenbanken zuzugreifen.
  • Alternativen Plattformen
    • Die Unterstützung für Apple-Hardware auf Basis von ARM-M1-Chips (Apple Silicon) wurde hinzugefügt.
    • Für die Unterstützung der Funktionen BCrypt und Secur32 auf der macOS-Plattform ist nun die Installation der GnuTLS-Bibliothek erforderlich.
    • 32-Bit-Executable-Dateien für ARM-Plattformen werden jetzt im Thumb-2-Modus kompiliert, ähnlich wie unter Windows. Ein Preloader wird zum Laden solcher Dateien verwendet.
    • Für 32-Bit ARM-Plattformen wurde die Unterstützung für das Unwinding von Ausnahmen implementiert.
    • Für FreeBSD wurde die Anzahl der unterstützten Anfragen nach Low-Level-Systeminformationen erweitert, wie z. B. Speicherstatus und Akkuladestand.
  • Integrierte Anwendungen und Entwicklungstools
    • Das Tool reg.exe unterstützt jetzt 32- und 64-Bit-Darstellungen der Registrierung. Es wurde die Unterstützung für das Kopieren von Registrierungsschlüsseln hinzugefügt.
    • Im Tool WineDump wurde die Unterstützung für die Ausgabe von Windows-Metadump und die Anzeige detaillierter Informationen zu CodeView-Einträgen hinzugefügt.
    • Im Wine Debugger (winedbg) wurde die Möglichkeit zur Debugging von 32-Bit-Prozessen aus einem 64-Bit-Debugger implementiert.
    • Im IDL-Compiler (widl) wurde die Möglichkeit zur Einbindung von in PE-Dateien integrierten Bibliotheken hinzugefügt. Des Weiteren wurde die Unterstützung für WinRT-spezifische Attribute und Konstrukte implementiert, sowie das Auffinden von Bibliotheken plattformabhängig realisiert.
  • Build-System
    • In architekturspezifischen Verzeichnissen werden Bibliotheken nun unter Namen gespeichert, die die Architektur und den Typ der ausführbaren Dateien widerspiegeln, wie ‚i386-windows‘ für das PE-Format und ‚x86_64-unix‘ für Unix-Bibliotheken. Dies ermöglicht die Unterstützung verschiedener Architekturen in einer einzigen Wine-Installation und gewährleistet die Cross-Kompilierung von Winelib.
    • Um in PE-Dateihauptdateien die Option festzulegen, die den Übergang zur Verwendung nativer DLL-Bibliotheken steuert, wurde in winebuild das Flag ‚—prefer-native option‘ hinzugefügt (die Verarbeitung von DLL_WINE_PREATTACH in DllMain wurde eingestellt).
    • Die Unterstützung für die 4. Version des Dwarf-Debug-Datenformats wurde hinzugefügt, das nun standardmäßig beim Bauen von Wine-Bibliotheken verwendet wird.
    • Eine Build-Option ‚—enable-build-id‘ wurde hinzugefügt, um in ausführbaren Dateien eindeutige Build-IDs zu speichern.
    • Die Unterstützung für die Verwendung des Clang-Compilers im MSVC-Kompatibilitätsmodus wurde hinzugefügt.
  • Verschiedenes
    • Die Benennung typischer Verzeichnisse in der Windows-Shell wurde auf das Schema umgestellt, das ab Windows Vista angewendet wird, d.h. anstelle von ‚My Documents‘ wird jetzt das Verzeichnis ‚Documents‘ erstellt, während die meisten Daten im Verzeichnis ‚AppData‘ gespeichert werden.
    • In der OpenCL-Bibliothek wurde die Unterstützung für die Spezifikation OpenCL 1.2 hinzugefügt.
    • Im WinSpool-Treiber wurde die Unterstützung für verschiedene Seitenformatvarianten beim Drucken hinzugefügt.
    • Erste Unterstützung für MSDASQL, den Microsoft OLE DB-Anbieter für ODBC-Treiber, wurde hinzugefügt.
    • Die Wine Mono-Engine mit der Implementierung der .NET-Plattform wurde auf Version 7.0.0 aktualisiert.
    • Die Unicode-Daten wurden auf die Spezifikation Unicode 14 aktualisiert.
    • In das Quelltextverzeichnis wurden die Bibliotheken Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt und Zlib integriert, die im PE-Format kompiliert werden und keine Unix-Format-Varianten benötigen. Diese Bibliotheken können auch aus dem System importiert werden, um externe Builds anstelle der integrierten PE-Varianten zu verwenden.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster