Stabile Version von Wine 5.0

Nach einem Jahr Entwicklung und 28 experimentellen Versionen eingereicht stabile Veröffentlichung der offenen Implementierung der Win32-API - Wine 5.0, das mehr als 7400 Änderungen umfasste. Zu den wichtigsten Errungenschaften der neuen Version gehören die Bereitstellung integrierter Wine-Module im PE-Format, die Unterstützung von Multi-Monitor-Konfigurationen, eine neue Implementierung der XAudio2-Audio-API und die Unterstützung der Vulkan 1.1-Grafik-API.

Im Wein bestätigt von Voller Betrieb von 4869 (vor einem Jahr 4737) Programmen für Windows, weitere 4136 (vor einem Jahr 4045) Programme funktionieren einwandfrei mit zusätzlichen Einstellungen und externen DLLs. 3635 Programme weisen geringfügige Leistungsprobleme auf, die die Verwendung grundlegender Anwendungsfunktionen nicht beeinträchtigen.

Taste Innovationen Wein 5.0:

  • Module im PE-Format
    • Mit dem MinGW-Compiler sind die meisten Wine-Module jetzt im ausführbaren Dateiformat PE (Portable Executable, verwendet unter Windows) anstelle von ELF erstellt. 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;
    • Ausführbare PE-Dateien werden jetzt in das Verzeichnis ~/.wine ($WINEPREFIX) kopiert, anstatt Dummy-DLL-Dateien zu verwenden, wodurch die Dinge echten Windows-Installationen ähnlicher werden, allerdings auf Kosten des zusätzlichen Speicherplatzverbrauchs;
    • In das PE-Format konvertierte Module können Standard verwenden wer C-Funktionen und Konstanten mit Unicode (z. B. L"abc");
    • Die Wine C-Laufzeitumgebung hat Unterstützung für die Verknüpfung mit in MinGW erstellten Binärdateien hinzugefügt, die beim Erstellen von DLLs standardmäßig anstelle der MinGW-Laufzeitumgebung verwendet wird.
  • Grafisches Subsystem
    • Unterstützung für die Arbeit mit mehreren Monitoren und Grafikadaptern hinzugefügt, einschließlich der Möglichkeit, Einstellungen dynamisch zu ändern;
    • Der Treiber für die Vulkan-Grafik-API wurde aktualisiert, um der Vulkan-Spezifikation 1.1.126 zu entsprechen.
    • Die WindowsCodecs-Bibliothek bietet die Möglichkeit, zusätzliche Rasterformate zu konvertieren, einschließlich Formaten mit einer indizierten Palette;
  • Direct3D
    • Beim Ausführen von Direct3D-Anwendungen im Vollbildmodus ist der Aufruf des Bildschirmschoners blockiert;
    • DXGI (DirectX Graphics Infrastructure) hat Unterstützung hinzugefügt, um eine Anwendung zu informieren, wenn ihr Fenster minimiert wird, was es der Anwendung ermöglicht, die Leistung ressourcenintensiver Vorgänge zu reduzieren, wenn das Fenster minimiert wird;
    • Für Anwendungen, die DXGI verwenden, ist es jetzt möglich, mit der Kombination Alt+Enter zwischen Vollbild- und Fenstermodus zu wechseln;
    • Die Funktionen der Direct3D 12-Implementierung wurden erweitert, beispielsweise gibt es jetzt Unterstützung für das Umschalten zwischen Vollbild- und Fenstermodus, das Ändern von Bildschirmmodi, die Skalierung der Ausgabe und die Verwaltung des Rendering-Puffer-Ersetzungsintervalls (Swap-Intervall);
    • Verbesserte Handhabung verschiedener Grenzsituationen, wie z. B. die Verwendung von Eingabewerten außerhalb des Bereichs für Transparenz- und Tiefentests, das Rendern mit reflektierten Texturen und Puffern sowie die Verwendung falscher DirectDraw-Objekte Scherer, Erstellen von Direct3-Geräten für falsche Fenster, Verwenden sichtbarer Bereiche, deren minimale Parameterwerte dem Maximum entsprechen usw.
    • Direct3D 8 und 9 bieten eine genauere Verfolgung.schmutzig» Bereiche mit geladenen Texturen;
    • Die Größe des erforderlichen Adressraums beim Laden von 3D-Texturen, die mit der S3TC-Methode komprimiert wurden, wurde reduziert (anstatt sie vollständig zu laden, werden Texturen in Blöcken geladen).
    • Schnittstelle implementiert ID3D11Multithread zum Schutz kritischer Abschnitte in Multithread-Anwendungen;
    • Für ältere DirectDraw-Anwendungen wurden verschiedene Verbesserungen und Korrekturen im Zusammenhang mit Beleuchtungsberechnungen vorgenommen;
    • Zusätzliche Aufrufe implementiert, um Informationen über Shader in der API zu erhalten ShaderReflection;
    • wined3d unterstützt jetzt Blitter CPU-basiert zur Verarbeitung komprimierter Ressourcen;
    • Die Datenbank der in Direct3D erkannten Grafikkarten wurde erweitert;
    • Neue Registrierungsschlüssel HKEY_CURRENT_USER\Software\Wine\Direct3D hinzugefügt: „shader_backend“ (Backend für die Arbeit mit Shadern: „glsl“ für GLSL, „arb“ für ARB-Vertex/Fragment und „none“, um die Shader-Unterstützung zu deaktivieren), „strict_shader_math“ ( 0x1 – aktivieren, 0x0 – Direct3D-Shader-Konvertierung deaktivieren). Der Schlüssel „UseGLSL“ ist veraltet (sollte „shader_backend“ verwenden);
  • D3DX
    • Unterstützung für den 3D-Texturkomprimierungsmechanismus S3TC (S3 Texture Compression) wurde implementiert;
    • Korrekte Implementierungen von Operationen wie Texturfüllung und nicht kartierbare Oberflächen hinzugefügt;
    • Am Erstellungsframework wurden verschiedene Verbesserungen und Korrekturen vorgenommen visuelle Effekte;
  • Kernel (Windows-Kernel-Schnittstellen)
    • Die meisten in Kernel32 verwendeten Funktionen wurden verschoben
      KernelBase, nach Änderungen in der Windows-Architektur;

    • Möglichkeit, 32- und 64-Bit-DLLs in den zum Laden verwendeten Verzeichnissen zu mischen. Stellt sicher, dass Bibliotheken, die nicht mit der aktuellen Bittiefe übereinstimmen, ignoriert werden (32/64), falls es weiter entlang des Pfades möglich ist, eine Bibliothek zu finden, die für die aktuelle Bittiefe geeignet ist;
    • Für Gerätetreiber wurde die Emulation von Kernelobjekten verbessert;
    • Implementierte Synchronisationsobjekte, die auf Kernel-Ebene arbeiten, wie z. B. Spin-Locks, schnelle Mutexe und an eine Ressource angehängte Variablen;
    • Stellt sicher, dass Anwendungen korrekt über den Batteriestatus informiert werden;
  • Benutzeroberfläche und Desktop-Integration
    • Minimierte Fenster werden jetzt mit einer Titelleiste anstelle eines Symbols im Windows 3.1-Stil angezeigt.
    • Neue Schaltflächenstile hinzugefügt SplitButton (Schaltfläche mit einer Dropdown-Liste von Aktionen) und Befehlslinks (Links in Dialogfeldern, die zum Übergang zur nächsten Stufe verwendet werden);
    • Für die Ordner „Downloads“ und „Templates“ wurden symbolische Links erstellt, die auf die entsprechenden Verzeichnisse auf Unix-Systemen verweisen;
  • Eingabegeräte
    • Beim Start werden die notwendigen Plug & Play-Gerätetreiber installiert und geladen;
    • Verbesserte Unterstützung für Gamecontroller, einschließlich Mini-Joystick (Hutschalter), Lenkrad, Gas- und Bremspedale.
    • Die Unterstützung für die alte Linux-Joystick-API, die in Linux-Kerneln vor Version 2.2 verwendet wurde, wurde eingestellt;
  • .NET
    • Die Mono-Engine wurde auf Version 4.9.4 aktualisiert und enthält nun Teile des Windows Presentation Foundation (WPF)-Frameworks;
    • Es wurde die Möglichkeit hinzugefügt, Add-ons mit Mono und Gecko in einem gemeinsamen Verzeichnis zu installieren und Dateien in der /usr/share/wine-Hierarchie zu platzieren, anstatt sie in neue Präfixe zu kopieren;
  • Netzwerkfunktionen
    • Die Wine Gecko-Browser-Engine, die in der MSHTML-Bibliothek verwendet wird, wurde auf Version 2.47.1 aktualisiert. Unterstützung für neue HTML-APIs wurde implementiert;
    • MSHTML unterstützt jetzt SVG-Elemente;
    • Viele neue VBScript-Funktionen hinzugefügt (z. B. Fehler- und Ausnahmehandler, Stunden-, Tages-, Monats-, String-, LBound-, RegExp.Replace-, РScriptTypeInfo_*- und ScriptTypeComp_Bind*-Funktionen usw.);
    • Bereitstellung der Erhaltung des Codestatus in VBScript und JScript (Skriptpersistenz);
    • Eine erste Implementierung des HTTP-Dienstes (WinHTTP) und der zugehörigen API (HTTPAPI) für Client- und Serveranwendungen hinzugefügt, die Anfragen über das HTTP-Protokoll senden und empfangen;
    • Die Möglichkeit implementiert, HTTP-Proxy-Einstellungen über DHCP zu erhalten;
    • Unterstützung für die Umleitung von Authentifizierungsanfragen über den Microsoft Passport-Dienst hinzugefügt;
  • Kryptographie
    • Unterstützung für kryptografische Schlüssel mit elliptischen Kurven (ECC) bei Verwendung von GnuTLS implementiert;
    • Möglichkeit hinzugefügt, Schlüssel und Zertifikate aus Dateien im PFX-Format zu importieren;
    • Unterstützung für das Schlüsselgenerierungsschema basierend auf dem PBKDF2-Passwort hinzugefügt;
  • Texte und Schriftarten
    • Die DirectWrite-API-Implementierung hat Unterstützung für OpenType-Funktionen im Zusammenhang mit hinzugefügt Glyphenpositionierung, die standardmäßig für den lateinischen Stil aktiviert sind, einschließlich Kerning;
    • Verbesserte Sicherheit bei der Verarbeitung von Schriftartdaten durch Überprüfung der Korrektheit verschiedener Datentabellen vor deren Verwendung;
    • DirectWrite-Schnittstellen wurden an das neueste SDK angepasst;
  • Ton und Video
    • Es wurde eine neue Implementierung der Sound-API vorgeschlagen XAudio2, gebaut auf der Grundlage des Projekts FAudio. Durch die Verwendung von FAudio in Wine können Sie eine höhere Klangqualität in Spielen erzielen und Funktionen wie Lautstärkemischung und erweiterte Soundeffekte nutzen;
    • Der Implementierung des Media Foundation-Frameworks wurde eine große Anzahl neuer Aufrufe hinzugefügt, darunter Unterstützung für integrierte und benutzerdefinierte asynchrone Warteschlangen, Source Reader API, Media Session usw.
    • Der Videoaufnahmefilter wurde auf die Verwendung der v4l2-API anstelle der v4l1-API umgestellt, wodurch die Palette der unterstützten Kameras erweitert wurde;
    • Die eingebauten AVI-, MPEG-I- und WAVE-Decoder wurden entfernt, stattdessen kommen nun die System-GStreamer oder QuickTime zum Einsatz;
    • Eine Teilmenge der VMR7-Konfigurations-APIs hinzugefügt;
    • Unterstützung für die Anpassung der Lautstärke einzelner Kanäle an Soundtreiber hinzugefügt;
  • Internationalisierung
    • Unicode-Tabellen auf Version 12.1.0 aktualisiert;
    • Unterstützung für Unicode-Normalisierung implementiert;
    • Automatische Installation der geografischen Region (HKEY_CURRENT_USER\Control Panel\International\Geo) basierend auf dem aktuellen Gebietsschema bereitgestellt;
  • RPC/COM
    • Unterstützung für komplexe Strukturen und Arrays zu Typelib hinzugefügt;
    • Erstimplementierung der Windows-Skript-Laufzeitbibliothek hinzugefügt;
    • Erstimplementierung der ADO-Bibliothek (Microsoft ActiveX Data Objects) hinzugefügt;
  • Installateure
    • Unterstützung für die Bereitstellung von Patches (Patchdateien) wurde für das MSI-Installationsprogramm implementiert;
    • Das Dienstprogramm WUSA (Windows Update Standalone Installer) bietet jetzt die Möglichkeit, Updates im .MSU-Format zu installieren.
  • ARM-Plattform
    • Für die ARM64-Architektur wurde ntdll Unterstützung für die Stapelabwicklung hinzugefügt. Unterstützung für die Verbindung externer Libunwind-Bibliotheken hinzugefügt;
    • Für die ARM64-Architektur wurde die Unterstützung nahtloser Proxys für Objektschnittstellen implementiert;
  • Entwicklungstools / Winelib
    • Möglichkeit hinzugefügt, den Debugger von Visual Studio zum Remote-Debuggen von in Wine ausgeführten Anwendungen zu verwenden;
    • Die DBGENG-Bibliothek (Debug Engine) wurde teilweise implementiert;
    • Für Windows kompilierte Binärdateien sind nicht mehr von libwine abhängig, sodass sie ohne zusätzliche Abhängigkeiten unter Windows ausgeführt werden können.
    • Option „--sysroot“ zum Ressourcen-Compiler und IDL-Compiler hinzugefügt, um den Pfad für Header-Dateien zu bestimmen;
    • Die Optionen „—target“ und „—wine-objdir“ wurden zu winegcc hinzugefügt
      „—winebuild“ und „-fuse-ld“, die das Einrichten der Umgebung für die Kreuzkompilierung vereinfachen;

  • Eingebettete Anwendungen
    • Implementierung eines CHCP-Dienstprogramms zur Konfiguration der Konsolenkodierung;
    • Das MSIDB-Dienstprogramm zum Bearbeiten von Datenbanken im MSI-Format wurde implementiert;
  • Leistungsoptimierung
    • Verschiedene Timing-Funktionen wurden migriert, um leistungsstarke System-Timer-Funktionen zu verwenden, wodurch der Overhead in der Renderschleife vieler Spiele reduziert wird.
    • Möglichkeit zur Verwendung von Ext4 im FS hinzugefügt Regime Arbeiten ohne Berücksichtigung der Groß- und Kleinschreibung;
    • Die Leistung bei der Verarbeitung einer großen Anzahl von Elementen in Listenanzeigedialogen im LBS_NODATA-Modus wurde optimiert;
    • Eine schnellere Implementierung von SRW-Sperren (Slim Reader/Writer) für Linux hinzugefügt, übersetzt in Futex;
  • Externe Abhängigkeiten
    • Um Module im PE-Format zusammenzustellen, wird der Cross-Compiler MinGW-w64 verwendet;
    • Für die Implementierung von XAudio2 ist die FAudio-Bibliothek erforderlich.
    • Um Dateiänderungen auf BSD-Systemen zu verfolgen
      die Inotify-Bibliothek wird verwendet;

    • Um Ausnahmen auf der ARM64-Plattform zu behandeln, ist die Unwind-Bibliothek erforderlich;
    • Anstelle von Video4Linux1 wird nun die Video4Linux2-Bibliothek benötigt.

Source: opennet.ru

Kommentar hinzufügen