Nach einem Jahr Entwicklung und 28 experimentellen Versionen wurde die stabile Version der offenen Win32 API-Implementierung — Wine 8.0 — vorgestellt, die mehr als 8600 Änderungen umfasst. Ein Schlüsselmerkmal der neuen Version ist der Abschluss der Arbeit an der Konvertierung der Wine-Module ins Format.
Wine unterstützt nun vollständig 5266 (vor einem Jahr 5156, vor zwei Jahren 5049) Programme für Windows, während weitere 4370 (vor einem Jahr 4312, vor zwei Jahren 4227) Programme hervorragend mit zusätzlichen Einstellungen und externen DLLs funktionieren. Bei 3888 Programmen (vor einem Jahr 3813, vor zwei Jahren 3703) treten geringe Probleme auf, die die Nutzung der Hauptfunktionen der Anwendungen jedoch nicht beeinträchtigen.
Die wichtigsten Neuerungen in Wine 8.0:
- Module im PE-Format
- Nach vier Jahren Arbeit ist die vollständige Übertragung aller DLL-Bibliotheken auf das Format von ausführbaren Dateien PE (Portable Executable, das in Windows verwendet wird) abgeschlossen. Die Verwendung von PE ermöglicht die Nutzung von Debuggern, die für Windows verfügbar sind, und löst Probleme mit der Unterstützung verschiedener Kopierschutzmechanismen, die die Identität systemeigener Module auf der Festplatte und im Speicher überprüfen. Zudem wurden Probleme mit der Ausführung von 32-Bit-Anwendungen auf 64-Bit-Hosts und x86-Anwendungen auf ARM-Systemen behoben. Zu den verbleibenden Aufgaben, die in zukünftigen experimentellen Versionen von Wine 8.x angegangen werden sollen, gehört die Umstellung der Module auf die Schnittstelle für NT-Systemaufrufe anstelle direkter Aufrufe zwischen den Ebenen PE und Unix.
- Ein spezieller Systemaufruf-Dispatcher wurde implementiert, um Aufrufe von PE in Unix-Bibliotheken zu übersetzen, mit dem Ziel, die Overheadkosten bei der Ausführung vollständiger NT-Systemaufrufe zu reduzieren. Beispielsweise ermöglichte die durchgeführte Optimierung eine Verringerung des Leistungsabfalls bei der Verwendung von OpenGL- und Vulkan-Bibliotheken.
- In Winelib-Anwendungen bleibt die Möglichkeit bestehen, gemischte Windows/Unix-Bibliotheken im ELF-Format (.dll.so) zu verwenden, jedoch werden solche Anwendungen ohne 32-Bit-Bibliotheken keine Funktionalität unterstützen, die über die Schnittstelle der NT-Systemaufrufe verfügbar ist, wie z. B. WoW64.
- WoW64
- Für alle Unix-Bibliotheken sind WoW64-Schichten (64-Bit Windows-on-Windows) bereitgestellt, die es 32-Bit-Modulen im PE-Format ermöglichen, auf 64-Bit Unix-Bibliotheken zuzugreifen, was nach der Beseitigung direkter Aufrufe zwischen PE und Unix die Ausführung 32-Bit Windows-Anwendungen ohne Installation 32-Bit Unix-Bibliotheken ermöglicht.
- Wenn kein 32-Bit Wine-Loader verfügbar ist, wird die Ausführung 32-Bit-Anwendungen im neuen experimentellen Windows-ähnlichen WoW64-Modus sichergestellt, in dem 32-Bit-Code innerhalb eines 64-Bit-Prozesses ausgeführt wird. Dieser Modus wird aktiviert, wenn Wine mit der Option ‚—enable-archs‘ kompiliert wird.
- Grafik-Subsystem
- In der Standardkonfiguration wird ein helles Design verwendet („Light“). Die Themen können über das Tool WineCfg gewechselt werden.

- Grafiktreiber (winex11.drv, winemac.drv, wineandroid.drv) wurden umgebaut, um auf Unix-Ebene Systemaufrufe auszuführen und über die Win32u-Bibliothek auf Treiber zuzugreifen.

- Eine Druckausgabe-Architektur (Print Processor) wurde implementiert, die verwendet wird, um direkte Aufrufe zwischen den PE- und Unix-Ebenen im Druckertreiber auszuschließen.
- Im Direct2D-API wurde die Unterstützung von Effekten implementiert.
- Im Direct2D-API wurde die Möglichkeit zur Aufnahme und Wiedergabe von Befehlslisten hinzugefügt.
- Im Treiber für die Grafik-API Vulkan wurde die Unterstützung der Spezifikation Vulkan 1.3.237 hinzugefügt (in Wine 7 wurde Vulkan 1.2 unterstützt).
- In der Standardkonfiguration wird ein helles Design verwendet („Light“). Die Themen können über das Tool WineCfg gewechselt werden.
- Direct3D
- Ein neuer HLSL (High-Level Shader Language) Shader-Compiler wurde implementiert, der auf der vkd3d-shader-Bibliothek basiert. Außerdem wurden ein HLSL-Dekompiler und ein HLSL-Präprozessor auf Basis von vkd3d-shader vorbereitet.
- Schnittstelle Thread Pump, die in D3DX 10 eingeführt wurde, wurde implementiert.
- In den Effekten von Direct3D 10 wurde die Unterstützung für viele neue Ausdrücke hinzugefügt.
- In der Hilfsbibliothek für D3DX 9 wurde die Unterstützung für die Projektion von Cubemap-Texturen implementiert.
- Ton und Video
- Auf Basis des GStreamer-Frameworks wurde die Unterstützung für Filter zur Decodierung von Audio im MPEG-1-Format implementiert.
- Ein Filter zum Lesen von Audio- und Video-Streaming im ASF-Format (Advanced Systems Format) wurde hinzugefügt.
- Die Zwischenbibliothek OpenAL32.dll wurde entfernt, stattdessen wird jetzt die native Windows-Bibliothek OpenAL32.dll verwendet, die mit den Anwendungen geliefert wird.
- Im Media Foundation Player wurde die Erkennung des Inhaltstyps verbessert.
- Die Möglichkeit zur Kontrolle der Datenübertragungsrate (Rate control) wurde implementiert.
- Die Unterstützung von Mischern und Renderer (Presenter), die standardmäßig im Enhanced Video Renderer (EVR) angeboten werden, wurde verbessert.
- Eine erste Implementierung der API Writer Encoding wurde hinzugefügt.
- Die Unterstützung für den Topologie-Loader wurde verbessert.
- Eingabegeräte
- Die Unterstützung für das Hot-Plugging von Controllern wurde erheblich verbessert.
- Eine verbesserte Implementierung des Codes zur Erkennung von Spielsteuerungen wurde auf Basis der SDL-Bibliothek vorgeschlagen.
- Die Unterstützung für die Force-Feedback-Funktion bei der Verwendung von Spielsteuerungen wurde verbessert.
- Die Möglichkeit zur Steuerung der linken und rechten Vibrationsmotoren, die die HID Haptic-Spezifikation nutzen, wurde implementiert.
- Das Design wurde geändert. dem Verwaltungs-Panel mit dem Joystick.
- Durch die Verwendung des hidraw-Backends wird die Unterstützung für Sony DualShock- und DualSense-Controller gewährleistet.
- Ein WinRT-Modul Windows.Gaming.Input mit einer Implementierung einer Programmierschnittstelle zum Zugriff auf Gamepads, Joysticks und Spielsteuerungen wurde vorgeschlagen. Für die neue API wurde unter anderem die Unterstützung für das Benachrichtigen über das Hot-Plugging von Geräten sowie für haptische und Vibrations-Effekte implementiert.
- Internationalisierung
- Die korrekte Generierung einer Datenbank von Lokalisierungen im Format locale.nls aus dem Unicode CLDR (Unicode Common Locale Data Repository) wurde gewährleistet.
- Die Unicode-Zeichenvergleichsfunktionen wurden auf die Verwendung der Windows Sortkey-Datenbank und -Algorithmen umgestellt, anstelle des Unicode Collation-Algorithmus, was das Verhalten an Windows näher brachte.
- In den meisten Funktionen wurde die Unterstützung für obere Codebereiche (Module) von Unicode hinzugefügt.
- Die Möglichkeit zur Verwendung von UTF-8 als ANSI-Codierung wurde bereitgestellt.
- Die Zeichentabellen wurden auf die Unicode-Spezifikation 15.0.0 aktualisiert.
- Text und Schriftarten
- Für die meisten Systemschriftarten wurde das Schriftartenbinden aktiviert, was das Problem mit fehlenden Glyphen auf Systemen mit chinesischen, koreanischen und japanischen Lokalisierungen gelöst hat.
- Die Rückkehr zu einer Ersatzschriftart in DirectWrite wurde überarbeitet.
- Kern (Windows Kernel-Schnittstellen)
- Eine ApiSetSchema-Datenbank wurde implementiert, die die api-ms-* Module ersetzt hat und den Speicherplatzbedarf und den Adressraum reduziert hat.
- Es wurde sichergestellt, dass Dateiattribute von DOS im Samba-kompatiblen Format auf der Festplatte gespeichert werden, wobei erweiterte Dateiattribute verwendet werden.
- Netzwerkfähigkeiten
- Die Unterstützung für das OCSP-Protokoll (Online Certificate Status Protocol), das zur Überprüfung von widerrufenen Zertifikaten verwendet wird, wurde hinzugefügt.
- Der Umfang der in Übereinstimmung mit den JavaScript-Standards verfügbaren EcmaScript-Funktionen wurde erweitert.
- Ein Garbage Collector für JavaScript wurde implementiert.
- Im Paket mit der Gecko-Engine wurden Hilfsmittel für Menschen mit Behinderungen eingeführt.
- In MSHTML wurde die Unterstützung für die Web Storage-API, das Performance-Objekt und zusätzliche Objekte zur Event-Verarbeitung hinzugefügt.
- Eingebettete Anwendungen
- Alle eingebetteten Anwendungen wurden auf die Verwendung der Bibliothek Common Controls 6 umgestellt, unterstützt durch Designs und Rendering unter Berücksichtigung von hochauflösenden Bildschirmen.
- Die Debugging-Funktionen für Threads im Wine Debugger (winedbg) wurden erweitert.
- In den Registry-Utilities (REGEDIT und REG) wurde die Unterstützung des Typs QWORD hinzugefügt.
- In Notepad wurde eine Statuszeile mit Informationen zur Cursorposition und eine Goto Line-Funktion zum Sprung zu einer bestimmten Zeilennummer hinzugefügt.
- In der eingebetteten Konsole wird die Ausgabe in der OEM-Zeichencodierung bereitgestellt.
- Dem Dienststeuerungsprogramm sc.exe wurde der Befehl 'query' hinzugefügt.
- Build-System
- Es wurde die Möglichkeit geschaffen, ausführbare Dateien im PE-Format für mehrere Architekturen zu erstellen (z. B. '--enable-archs=i386,x86_64').
- Auf allen Plattformen mit 32-Bit-Langtyp wurden die in Windows als long definierten Datentypen in Wine jetzt als 'long' anstelle von 'int' umdefiniert. In Winelib kann dieses Verhalten über die Definition WINE_NO_LONG_TYPES abgeschaltet werden.
- Die Möglichkeit zur Generierung von Bibliotheken ohne die Verwendung von dlltool wurde hinzugefügt (aktiviert durch die Option '--without-dlltool' in winebuild).
- Um die Effizienz des Ladens und die Größe von Bibliotheken, die keinen Code enthalten und nur Ressourcen beinhalten, zu verbessern, wurde in winegcc die Option '--data-only' realisiert.
- Verschiedenes
- Die Versionen der eingebetteten Bibliotheken Faudio 22.11, LCMS2 2.14, LibJPEG 9e, LibMPG123 1.31.1, LibPng 1.6.39, LibTiff 4.4.0, LibXml2 2.10.3, LibXslt 1.1.37 und Zlib 1.2.13 wurden aktualisiert.
- Die Wine Mono-Engine mit der Implementierung der .NET-Plattform wurde auf Version 7.4 aktualisiert.
- Es wurde Unterstützung für die Verschlüsselung basierend auf dem RSA-Algorithmus und digitale Signaturen RSA-PSS implementiert.
- Die erste Version der API UI Automation wurde hinzugefügt.
- Die LDAP- und vkd3d-Bibliotheken, die im PE-Format compiliert werden, wurden in den Quelltextbaum aufgenommen, sodass die Bereitstellung von Unix-Bauversionen dieser Bibliotheken nicht mehr erforderlich ist.
- Die Verwendung der OpenAL-Bibliothek wurde eingestellt.
Quelle: opennet.ru


