Nach einem Jahr Entwicklung und 28 experimentellen Versionen ist die stabile Version der offenen Implementierung der Win32 API - , die über 7400 Änderungen umfasst. Zu den wichtigsten Errungenschaften der neuen Version zählen die Bereitstellung integrierter Wine-Module im PE-Format, Unterstützung von Mehrschirmkonfigurationen, die neue Implementierung der Sound-API XAudio2 und die Unterstützung der Grafik-API Vulkan 1.1.
In Wine vollständige Funktionalität von 4869 (vor einem Jahr 4737) Windows-Anwendungen bestätigt, wobei weitere 4136 (vor einem Jahr 4045) Anwendungen hervorragend mit zusätzlichen Anpassungen und externen DLLs funktionieren. Bei 3635 Programmen treten kleinere Probleme auf, die die Verwendung der Hauptfunktionen der Anwendungen nicht beeinträchtigen.
Hauptmerkmale Wine 5.0:
- Module im PE-Format
- Mit dem MinGW-Compiler werden die meisten Wine-Module jetzt im Format der ausführbaren PE-Dateien (Portable Executable, verwendet in Windows) anstelle von ELF erstellt. Die Verwendung von PE löst Probleme mit der Unterstützung verschiedener Kopierschutzschemata, die die Identität von Systemmodulen auf der Festplatte und im Speicher überprüfen;
- PE-executable Dateien werden jetzt im Verzeichnis ~/.wine ($WINEPREFIX) abgelegt, anstatt Platzhalter-DLLs zu verwenden, was die Struktur realistischer erscheinen lässt als eine tatsächliche Windows-Installation, jedoch auf Kosten zusätzlichen Speicherplatzes;
- Module, die ins PE-Format umgewandelt wurden, können die standardmäßigen C-Funktionen und Unicode-Konstanten (zum Beispiel L"abc") verwenden;
- Im Wine C-Laufzeitumgebung wurde die Unterstützung für die Verknüpfung mit Binärdateien hinzugefügt, die in MinGW erstellt wurden, was bei der DLL-Erstellung standardmäßig anstelle der MinGW-Laufzeit verwendet wird;
- Grafik-Subsystem
- Unterstützung für mehrere Monitore und Grafikadapter wurde hinzugefügt, einschließlich der Möglichkeit, Einstellungen dynamisch zu ändern;
- Der Treiber für die Grafik-API Vulkan wurde aktualisiert, um der Spezifikation Vulkan 1.1.126 zu entsprechen;
- In der Bibliothek WindowsCodecs wurde die Möglichkeit implementiert, zusätzliche Rasterformatumwandlungen durchzuführen, einschließlich Formate mit indizierter Palette;
- Direct3D
- Bei der Ausführung von Vollbildanwendungen mit Direct3D wird der Bildschirmschoner deaktiviert;
- Im DXGI (DirectX Graphics Infrastructure) wurde eine Unterstützung hinzugefügt, die das Programm über die Minimierung seines Fensters informiert, was es dem Programm ermöglicht, ressourcenintensive Operationen während der Fensterverkleinerung zu reduzieren;
- Für Anwendungen, die DXGI verwenden, wurde die Möglichkeit implementiert, zwischen Vollbild- und Fensterbetrieb mit der Kombination Alt+Enter zu wechseln;
- Die Implementierung von Direct3D 12 wurde erweitert, zum Beispiel wurde die Unterstützung für den Wechsel zwischen Vollbild- und Fensterbetrieb, die Änderung der Bildschirmmodi, die Ausgabe mit Skalierung und die Steuerung des Swap-Intervalls hinzugefügt;
- Die Verarbeitung verschiedener Grenzfälle wurde verbessert, wie zum Beispiel die Verwendung von Werten, die außerhalb der zulässigen Bereiche für Transparenz- und Tiefentests liegen, das Rendering mit reflektierenden Texturen und Buffern sowie die Verwendung fehlerhafter DirectDraw-Objekte. , die Erstellung von Direct3D-Geräten für fehlerhafte Fenster, die Verwendung sichtbarer Bereiche, deren Mindestwerte gleich den Höchstwerten sind, usw.
- In Direct3D 8 und 9 wird eine genauere Verfolgung der "" Bereiche von geladenen Texturen gewährleistet;
- Die erforderliche Adressraumgröße beim Laden von 3D-Texturen, die mit der Methode S3TC komprimiert sind (statt sie vollständig zu laden, werden die Texturen stückweise geladen), wurde verringert.
- Das Interface wurde implementiert, um kritische Abschnitte in mehrkernfähigen Anwendungen zu schützen;
- Für ältere DirectDraw-Anwendungen wurden verschiedene Verbesserungen und Fehlerkorrekturen im Zusammenhang mit der Lichtberechnung vorgenommen;
- Zusätzliche Aufrufe zum Abrufen von Informationen über Shader im API ;
- wurden implementiert; Die Datenbank der in Direct3D erkannten Grafikkarten wurde erweitert;
- Neue Registrierungsschlüssel HKEY_CURRENT_USER\Software\Wine\Direct3D wurden hinzugefügt: "shader_backend" (Backend für die Arbeit mit Shadern: "glsl" für GLSL, "arb" für ARB Vertex/Fragment und "none" zur Deaktivierung der Shaderunterstützung), "strict_shader_math" (0x1 — aktivieren, 0x0 — deaktivieren der Transformationen der Direct3D-Shader). Der Schlüssel "UseGLSL" wurde als veraltet erklärt (verwendet stattdessen "shader_backend");
- Die Unterstützung für den Mechanismus zur Kompression von 3D-Texturen S3TC (S3 Texture Compression) wurde implementiert;
- D3DX
- Es wurden korrekte Implementierungen von Vorgängen wie der Texturfüllung und nicht abbildbaren Oberflächen hinzugefügt;
- Es wurden verschiedene Verbesserungen und Fehlerkorrekturen im Framework zur Erstellung
- visueller Effekte ;
- Kern (Windows Kernel-Schnittstellen)
- KernelBase verschoben, um den Änderungen in der Windows-Architektur Rechnung zu tragen;
KernelBase verschoben, um den Änderungen in der Windows-Architektur zu folgen; - Die Möglichkeit, 32- und 64-Bit-DLLs in Verzeichnissen, die zum Laden verwendet werden, zu mischen. Bibliotheken, die nicht der aktuellen Bit-Tiefe (32/64) entsprechen, werden ignoriert, falls später im Pfad eine passende Bibliothek für die aktuelle Bit-Tiefe gefunden werden kann.
- Für Gerätetreiber wurde die Emulation von Kernelobjekten verbessert.
- Kernel-niveau Synchronisationsobjekte wie Spinlocks, schnelle Mutex und ressourcengebundene Variablen sind jetzt implementiert.
- Die korrekte Benachrichtigung von Anwendungen über den Batteriestatus wird sichergestellt.
- KernelBase verschoben, um den Änderungen in der Windows-Architektur Rechnung zu tragen;
- Benutzeroberfläche und Integration mit dem Desktop
- Minimierte Fenster werden jetzt mit einer Titelleiste anstelle eines Symbols im Stil von Windows 3.1 angezeigt.
- Neue Schaltflächenstile hinzugefügt (Schaltfläche mit Dropdown-Aktionsliste) und (Links in Dialogfenstern, die verwendet werden, um zur nächsten Phase zu wechseln).
- Für die Ordner 'Downloads' und 'Templates' wurden symbolische Links erstellt, die auf die entsprechenden Verzeichnisse in Unix-Systemen verweisen.
- Eingabegeräte
- Beim Start werden die notwendigen Plug & Play-Gerätetreiber installiert und geladen.
- Die Unterstützung für Spielcontroller wurde verbessert, einschließlich mini-Joypad (Hat-Schalter), Lenkrad und Gaspedal sowie Bremsen.
- Die Unterstützung des alten Linux-API für die Interaktion mit Joysticks, die in Linux-Kernen vor Version 2.2 verwendet wurde, wurde eingestellt.
- .NET
- Die Mono-Engine wurde auf die Version 4.9.4 aktualisiert und beinhaltet jetzt Teile des Windows Presentation Foundation (WPF)-Frameworks.
- Die Möglichkeit, Erweiterungen mit Mono und Gecko in ein gemeinsames Verzeichnis zu installieren, bei dem sich die Dateien in der Hierarchie /usr/share/wine befinden, anstatt sie in neue Präfixe zu kopieren, wurde hinzugefügt.
- Netzwerkfähigkeiten
- Die Browser-Engine Wine Gecko, die in der MSHTML-Bibliothek verwendet wird, wurde auf Version 2.47.1 aktualisiert. Neue HTML-API werden unterstützt.
- In MSHTML wurde die Unterstützung für SVG-Elemente implementiert.
- Viele neue VBScript-Funktionen wurden hinzugefügt (z. B. Fehler- und Ausnahmbehandler, Funktionen Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* und ScriptTypeComp_Bind* usw.).
- Die Speicherung des Skriptzustands in VBScript und JScript (Script-Persistenz) wurde sichergestellt.
- Eine erste Implementierung des HTTP-Dienstes (WinHTTP) und der zugehörigen API (HTTPAPI) für Client- und Serveranwendungen, die Anfragen über das HTTP-Protokoll senden und empfangen, wurde hinzugefügt.
- Die Möglichkeit, HTTP-Proxy-Einstellungen über DHCP zu erhalten, wurde implementiert.
- Unterstützung für die Weiterleitung von Authentifizierungsanfragen über den Microsoft Passport-Dienst hinzugefügt;
- Kryptographie
- Die Unterstützung für kryptografische Schlüssel auf Basis elliptischer Kurven (ECC) bei der Verwendung von GnuTLS wurde implementiert;
- Die Möglichkeit zum Import von Schlüsseln und Zertifikaten aus Dateien im PFX-Format wurde hinzugefügt;
- Die Unterstützung für ein passwortbasiertes Schlüsselgenerierungsschema PBKDF2 wurde hinzugefügt;
- Text und Schriftarten
- In der Implementierung der DirectWrite-API wurde die Unterstützung für OpenType-Funktionen hinzugefügt, die sich auf die standardmäßig für die Schriftart Latin aktiviert sind, einschließlich Kerning;
- Die Sicherheit der Verarbeitung von Schriftartdaten wurde durch die Überprüfung der Korrektheit verschiedener Datentabellen vor deren Verwendung erhöht;
- Die DirectWrite-Schnittstellen wurden an das aktuelle SDK angepasst;
- Ton und Video
- Eine neue Implementierung der Audio-API , die auf dem Projekt basiert . Die Verwendung von FAudio in Wine ermöglicht eine höhere Audioqualität in Spielen und aktiviert Funktionen wie Lautstärke-Mischung und erweiterte Audioeffekte;
- Eine große Anzahl neuer Aufrufe wurde in die Implementierung des Media Foundation-Frameworks eingefügt, einschließlich der Unterstützung von integrierten und benutzerdefinierten asynchronen Warteschlangen, Source Reader API, Media Session usw.
- Der Videoaufnahmefilter wurde auf die Verwendung der API v4l2 anstelle der API v4l1 umgestellt, was den unterstützten Kamera-Bereich erweitert hat;
- Eingebaute Decoder für AVI, MPEG-I und WAVE wurden entfernt, stattdessen werden nun die systemeigenen GStreamer oder QuickTime verwendet;
- Ein Teilmenge von Konfigurations-APIs VMR7 wurde hinzugefügt;
- In den Audiotreibern wurde die Unterstützung für die Anpassung der Lautstärke einzelner Kanäle hinzugefügt;
- Internationalisierung
- Die Unicode-Tabellen wurden auf Version 12.1.0 aktualisiert;
- Die Unterstützung für die Normalisierung von Unicode wurde implementiert;
- Die automatische Festlegung der geografischen Region (HKEY_CURRENT_USER\Control Panel\International\Geo) basierend auf der aktuellen Lokalisierung wurde sichergestellt;
- RPC/COM
- Die Typbibliothek hat die Unterstützung für komplexe Strukturen und Arrays erhalten;
- Eine erste Implementierung der Runtime-Bibliothek Windows Script wurde hinzugefügt;
- Eine erste Implementierung der ADO-Bibliothek (Microsoft ActiveX Data Objects) wurde hinzugefügt;
- Installer
- Für den MSI-Installer wurde die Unterstützung für die Bereitstellung von Patches (Patch Files) implementiert;
- Im WUSA-Tool (Windows Update Standalone Installer) wurde die Möglichkeit zur Installation von Updates im .MSU-Format hinzugefügt;
- Die ARM-Plattform
- Für die ARM64-Architektur wurde in ntdll die Unterstützung für das Stack-Unwinding hinzugefügt. Unterstützung für die externe Bibliothek libunwind wurde implementiert;
- Für die Architektur ARM64 wurde die Unterstützung für stubless proxies für Objektinterfaces implementiert;
- Entwicklungstools / Winelib
- Die Möglichkeit zur Verwendung des Debuggers aus Visual Studio für das Remote-Debugging von Anwendungen, die in Wine ausgeführt werden, wurde hinzugefügt;
- Die Bibliothek DBGENG (Debug Engine) wurde teilweise implementiert;
- Die für Windows erstellten Executables sind nicht mehr von libwine abhängig, was es ermöglicht, sie unter Windows ohne zusätzliche Abhängigkeiten auszuführen;
- Im Resource Compiler und IDL Compiler wurde die Option ‘—sysroot’ zum Festlegen des Pfades für die Header-Dateien hinzugefügt;
- Im winegcc wurden die Optionen ‘—target’, ‘—wine-objdir’,
‘—winebuild’ und ‘-fuse-ld’ hinzugefügt, die die Einrichtung der Umgebung für das Cross-Compiling erleichtern;
- Eingebettete Anwendungen
- Das Tool CHCP zur Anpassung der Konsolecodierung wurde implementiert;
- Das Tool MSIDB zur Manipulation von Datenbanken im MSI-Format wurde implementiert;
- Leistungsoptimierung
- Verschiedene Funktionen zur Zeitbearbeitung wurden auf die Verwendung von leistungsstarken systemeigenen Timer-Funktionen umgestellt, was die Overheadkosten in der Render-Schleife vieler Spiele senkte;
- Die Möglichkeit zur Verwendung im FS Ext4 wurde hinzugefügt Betrieb ohne Berücksichtigung der Groß- und Kleinschreibung;
- Die Verarbeitung großer Mengen von Elementen in Dialogen zur Listenausgabe, die im LBS_NODATA-Modus arbeiten, wurde optimiert;
- Eine schnellere Implementierung von SRW-Locks (Slim Reader/Writer) für Linux wurde hinzugefügt, umgestellt auf Futex;
- Externe Abhängigkeiten
- Für den Aufbau von Modulen im PE-Format wurde der Cross-Compiler MinGW-w64 verwendet;
- Die Implementierung von XAudio2 erfordert die Bibliothek FAudio;
- Um Änderungen an Dateien in BSD-Systemen zu verfolgen,
wurde die Bibliothek Inotify verwendet; - Zur Behandlung von Ausnahmen auf der ARM64-Plattform ist die Bibliothek Unwind erforderlich;
- Statt Video4Linux1 wird jetzt die Bibliothek Video4Linux2 benötigt.
Quelle: opennet.ru
