Windows-API-Nachbau: Wine 8.0 schließt Migration ins PE-Format ab

Die neue Vollversion von Wine ebnet mit dem Portable-Executable-Format (PE) Windows-Anwendungen den Weg auf andere Betriebssystemplattformen.

In Pocket speichern vorlesen Druckansicht 26 Kommentare lesen
Wine 8.0

(Bild: Nok Lek / Shutterstock.com)

Lesezeit: 4 Min.
Von
  • Matthias Parbel
Inhaltsverzeichnis

Mit der Veröffentlichung von Wine 8.0 erklärt das Entwicklerteam hinter dem Windows-Kompatibilitäts-Layer für Linux, macOS und Android die vierjährige Arbeit an der Migration auf das Portable-Executable-Format (PE) für abgeschlossen. Sämtliche Module lassen sich nun im PE-Format bauen. Damit eröffnet sich Entwicklerinnen und Entwicklern der Weg, Windows-Applikationen auch mit erweitertem Funktionsumfang auf anderen Betriebssystemplattformen ausführbar zu machen. Korrespondierende Anpassungen der Windows-on-Windows-Architektur in 64 Bit (WoW64) ermöglichen es beispielsweise, dass 32-bit PE-Module auch 64-bit Unix-Libraries aufrufen können.

Vor rund einem Jahr bei der Freigabe von Version 7.0 hatte das Wine-Team bereits verkündet, dass bis auf wenige Ausnahmen alle Module in das Windows-Binärformat überführt seien – in Wine 8.0 sei der Migrationsprozess auf das PE-Format nun vollständig abgeschlossen. Damit sei die notwendige Basis geschaffen, um auch komplexere Anforderungen beim Ausführen von Windows-Anwendungen auf anderen Betriebssystemen zu erfüllen, etwa Kopierschutz und Windows Debugger betreffend. Entwicklerinnen und Entwickler sollen künftig auch 32-bit-Applikationen auf 64-bit-Hosts oder auch x86-Anwendungen auf ARM-Systemen ausführen können.

Speziell für den Übergang auf ein Unix-System hat das Wine-Team einen neuen syscall-Dispatcher entwickelt, mit dem sich "aufwändigere" NT-System-Calls vermeiden lassen sollen. Auf diese Weise soll potenziellen Performanceengpässe insbesondere im Hinblick auf die OpenGL- und Vulkan-Libraries vorgebeugt werden. Dank der WoW64-Anpassungen können 32-bit PE-Module nun auch 64-bit Unix-Libraries aufrufen, 32-bit-Windows-Applikationen lassen sich allerdings noch nicht vollständig ohne 32-bit Unix-Libraries ausführen.

Fehlt der 32-bit-Wine-Loader können 32-bit-Anwendungen aber in einem noch experimentellen WoW64-Modus starten, der Windows ähnelt ("Windows-like") und bei dem der 32-bit-Code in einem 64-bit-Host-Prozess läuft. Dieser Modus lässt sich mit der Build-Option --enable-archs aktivieren. Das Wine-Team hat den Modus allerdings noch nicht zur allgemeinen Verwendung freigegeben.

Im Zuge der PE-Migration musste das Wine-Team den Mechanismus für das Ausführen statischer C++-Constructors in Winelib-ELF-Applikationen (Executable and Linkable Format) überarbeiten. Davon betroffene ältere Module müssen nun mit Wine 8.0 neu gebaut werden, da sie ansonsten im neuen Release keine statischen Constructors mehr ausführen.

Unter den weiteren Neuerungen im Release sind Verbesserungen für Direct3D erwähnenswert. So hat das Wine-Team einige Optimierungen rund um die Streaming-Map-Beschleunigung implementiert, die je nach Applikation zu "erheblich" höherer Performance beitragen sollen. Individuelle Direct3D-Einstellungen, die bisher im Registry-Schlüssel HKEY_CURRENT_USER\Software\Wine\Direct3D vorgenommen wurden, lassen sich jetzt über die Umgebungsvariable WINE_D3D_CONFIG setzen. Die Werte können entweder als Komma- oder Semikolon-separierte Listen oder auch als Schlüssel-Werte-Paare angegeben werden.

Eine vollständige Liste aller Änderungen in Wine 8.0 findet sich im Changelog auf der Projektseite. Der Sourcecode steht bereits zum Download bereit, ebenso die Binary Packages für verschiedene Distributionen.

Wer sich für das Spielen unter Linux interessiert, sollte auch einen Blick auf das neue Release von DXVK 2.1 werfen. Die auf Wine zugeschnittene Programmbibliothek übersetzt Direct3D der Versionen 9, 10 und 11 für Vulkan, um 3D-Anwendungen unter Linux ausführen zu können. Das Update führt erstmals Support für HDR 10 ein, der sich beispielsweise über die Umgebungsvariable DXVK_HDR=1 setzen lässt. Da sich HDR bisher allerdings in den meisten Linux-Desktop-Umgebungen noch nicht nativ nutzen lässt, bedarf es einer Gamescope-Sitzung mit aktivierter HDR-Option, die wiederum den AMDGPU-Treiber sowie ergänzende Kernel-Patches voraussetzt. Nähere Details dazu finden sich in den Release Notes zu DXVK 2.1 auf GitHub.

(map)