Am 21. Januar 2020 fand die offizielle Veröffentlichung der stabilen Version statt — eines freien Werkzeugs zum Ausführen nativer Windows-Programme in einer UNIX-Umgebung. Dies ist eine alternative, freie Implementierung der Windows-API. Das rekursive Akronym WINE steht für "Wine Is Not an Emulator".
Hinter dieser Version steht etwa ein Jahr Entwicklung und mehr als 7400 einzelne Änderungen. Der leitende Entwickler Alexandre Julliard hebt vier hervor:
- Unterstützung von Modulen im PE-Format. Dies löst Probleme mit verschiedenen Kopierschutzmechanismen, die eine Überprüfung der Systemmodule auf der Festplatte und im Speicher durchführen.
- Unterstützung mehrerer Monitore und mehrerer GPUs, einschließlich dynamischer Einstellungsmöglichkeiten.
- Reimplementation von XAudio2 basierend auf dem FAudio-Projekt, einer offenen Implementierung der DirectX-Audiobibliotheken. Der Umstieg auf FAudio ermöglicht eine höhere Audioqualität in Spielen, die Nutzung von Lautstärkeregelung, erweiterten Audioeffekten usw.
- Unterstützung von Vulkan 1.1.
Mehr Informationen zu den wichtigsten Neuerungen.
PE-Module
Mit einem vorhandenen MinGW-Compiler werden die meisten Wine-Module nun im Format ausführbarer PE-Dateien (Portable Executable, Binärformat für Windows) anstelle von ELF kompiliert.
PE-Ausführungsdateien werden jetzt in das Verzeichnis ~/\.wine kopiert, anstatt gefälschte DLL-Dateien zu verwenden, was die Anwendungen ähnlicher zu echten Windows-Installationen macht.
Derzeit sind noch nicht alle Module im PE-Format konvertiert. Die Arbeit geht weiter.
Grafik-Subsystem
Wie bereits erwähnt, wurde die Unterstützung für mehrere Monitore und Grafikkarten hinzugefügt.
Der Vulkan-Treiber wurde auf die Spezifikationen Vulkan 1.1.126 aktualisiert.
Darüber hinaus unterstützt die Bibliothek WindowsCodecs jetzt zusätzliche Rasterformate, einschließlich Formate mit indizierten Paletten.
Direct3D
Vollbildanwendungen von Direct3D blockieren jetzt den Aufruf des Bildschirmschoners.
Für DXGI-Anwendungen wurde die Möglichkeit implementiert, zwischen Vollbild- und Fenstermodus mit der Standardkombination Alt+Enter zu wechseln.
Die Möglichkeiten von Direct3D 12 wurden erweitert: Unterstützung für den Wechsel zwischen Vollbild- und Fenstermodus, Änderung der Bildschirmmodi, skalierte Darstellungen und Austauschintervalle für die Bildpuffer (swap interval). All diese Funktionen wurden bereits in früheren Versionen der Direct3D-API implementiert.
Die Projektteilnehmer haben intensiv gearbeitet und buchstäblich Hunderte von Bugs behoben, sodass die Verarbeitung von Wine in verschiedenen Grenzsituation verbessert wurde. Dazu gehören das Sampling von 2D-Ressourcen in 3D-Samplern und umgekehrt, die Verwendung von Werten außerhalb der zulässigen Bereiche für Tests der Transparenz und Tiefe, das Rendering mit reflektierten Texturen und Buffern, die Verwendung von inkorrekten Clippern (DirectDraw-Objekt) und vieles mehr.
Der erforderliche Adressraum beim Laden von 3D-Texturen, die mit der S3TC-Methode komprimiert wurden, wurde verringert (statt vollständiger Ladevorgänge werden die Texturen stückweise geladen).
Für ältere DirectDraw-Anwendungen wurden verschiedene Verbesserungen und Bugfixes in Bezug auf die Lichtberechnung vorgenommen.
Die Datenbank der in Direct3D erkannten Grafikkarten wurde erweitert.
Netzwerk und Kryptografie
Die Gecko-Engine wurde auf Version 2.47.1 aktualisiert, um moderne Tools zu unterstützen. Eine Reihe neuer HTML-APIs wurde implementiert.
In MSHTML wurde die Unterstützung von SVG-Elementen implementiert.
Viele neue Funktionen für VBScript wurden hinzugefügt (z. B. Fehler- und Ausnahmebehandler).
Es wurde die Möglichkeit implementiert, HTTP-Proxy-Einstellungen über DHCP zu erhalten.
In der Kryptografie wurde die Unterstützung für elliptische Kurven (ECC) über GnuTLS eingeführt, die Möglichkeit hinzugefügt, Schlüssel und Zertifikate aus PFX-Dateien zu importieren, und die Unterstützung für das passwortbasierte Schlüsselerzeugungsverfahren PBKDF2 hinzugefügt.
Adobe Photoshop CS6 unter Wine
Weitere bedeutende Neuerungen
- Unterstützung für NT-Kernel-Sperren.
- Dank des Ablaufs des Patents für die DXTn- und S3-Texturkompression wird es möglich, sie in die Standardimplementierung aufzunehmen.
- Unterstützung für die Installation von Plug-and-Play-Treibern.
- Verschiedene Verbesserungen in DirectWrite.
- Verbesserte Unterstützung für die Windows Media Foundation API.
- Bessere Synchronisation von Primitiven dank der Implementierung auf Futexen.
- Gemeinsame Nutzung von Wine-Mono zur Einsparung von Speicherplatz anstelle der Open-Source-Implementierung von .NET für jeden.
~/\.wine. - Unterstützung für Unicode 12.0 und 12.1.
- Implementierung eines anfänglichen HTTP-Dienstes (HTTP.sys) als Ersatz für die Winsock-API und IIS, was die Leistung über der des Windows Sockets API erhöht hat.
- Bessere Kompatibilität mit Windows-Debuggern.
- Bessere Unterstützung für LLVM MinGW und Verbesserungen beim Cross-Compilation von WineGCC.
Man kann auch die Verbesserungen der Benutzeroberfläche erwähnen. Zum Beispiel werden minimierte Fenster jetzt mit einer Titelleiste dargestellt, anstatt mit Symbolen im Windows 3.1-Stil. Die Unterstützung von Gamecontrollern, einschließlich Joystick, Lenkrad und Pedalen, wurde verbessert.
Die integrierten Decoder für AVI, MPEG-I und WAVE wurden aus Wine entfernt, stattdessen werden jetzt die systemeigenen GStreamer oder QuickTime verwendet.
Es wurde die Möglichkeit hinzugefügt, den Debugger aus Visual Studio für das Remote-Debugging von Anwendungen, die in Wine ausgeführt werden, zu verwenden. Die DBGENG (Debug Engine)-Bibliothek wurde teilweise implementiert, und die Abhängigkeit von libwine wurde aus den für Windows kompilierten Dateien entfernt.
Um die Leistung zu optimieren, wurden verschiedene zeitbasierte Funktionen auf die Verwendung von hochleistungsfähigen systemeigenen Timer-Funktionen umgestellt, was die Overhead-Kosten im Rendering-Zyklus vieler Spiele verringert hat. Es wurden weitere Leistungsoptimierungen vorgenommen.
Die vollständige Liste der Änderungen siehe. .
,
Auf der Website Es wird eine Datenbank von Windows-Anwendungen geführt, die mit Wine kompatibel sind. Hier sind die führenden Anwendungen nach :
- Final Fantasy XI
- Adobe Photoshop CS6 (13.0)
- World of Warcraft 8.3.0
- EVE Online Aktuelle
- Magic: The Gathering Online 4.x
Man kann annehmen, dass diese Anwendungen in Wine am häufigsten gestartet werden.
Hinweis: Die Veröffentlichung von Wine 5.0 ist dem Andenken an Józef Kucia gewidmet, der tragisch im August 2019 im Alter von 30 Jahren beim Erkunden einer Höhle im Süden Polens verstorben ist. Józef war ein wichtiger Mitwirkender bei der Entwicklung von Direct3D für Wine und ein führender Autor des Projekts. Während seiner Arbeit an Wine hat er mehr als 2500 Patches beigetragen.

Quelle: habr.com
