Wine, die Windows-Kompatibilitätsschicht, erreicht Version 5.0 auf Android

Wine ist eine Windows-Kompatibilitätsschicht, die es Benutzern ermöglicht, Windows-Apps auf anderen Betriebssystemen auszuführen. Wine für Android hat jetzt Version 5.0 erreicht – probieren Sie es aus!

Das Android-App-Ökosystem hat sich im Laufe der Jahre, in denen Android existiert, stetig weiterentwickelt, angetrieben durch die stetige Akzeptanz mobiler Geräte als primäre Computerinteraktion für die meisten Menschen. Viele Benutzer haben sich zu einem ausschließlich mobilen Lebensstil hingezogen, und das liegt daran, dass es den Apps und dem App-Ökosystem auf Mobilgeräten gelungen ist, ihre besonderen Bedürfnisse zu erfüllen. Aber was würden Sie tun, wenn Sie jemals eine Desktop-Anwendung benötigen, ohne Zugriff auf einen Desktop zu haben? Hier kommt Wine ins Spiel, eine Windows-Kompatibilitätsschicht, die es Benutzern ermöglicht, vollständige Windows-Anwendungen auf verschiedenen Betriebssystemen auszuführen. Wine für Android hat Jetzt ist v5.0 erreichtund fasst die Entwicklungsbemühungen des Teams eines Jahres zusammen.

Wine ist eine kostenlose und quelloffene Kompatibilitätsschicht für Windows, deren Ziel es ist, die Ausführung von Computerprogrammen, die für Windows entwickelt wurden, auf anderen Betriebssystemen zu ermöglichen. Wine für Android bringt Wine auf Android, offensichtlich. Wine ist kein Emulator (was eigentlich ein rekursives Backronym für den Namen ist), daher kann es nur ausgeführt werden architekturspezifische Versionen von Apps – die ARM-Version von Wine für Android führt nur ARM-Anwendungen aus, und nicht x86.

Zu den Highlights der stabilen Version von Wine 5.0 zählen die Multi-Monitor-Unterstützung und die Unterstützung von Vulkan 1.1. Das vollständige Änderungsprotokoll für das Update lautet wie folgt:

Wine 5.0 Änderungsprotokoll:

  • PE-Module:
    • Die meisten Module werden im PE-Format (Portable Executable, das Windows-Binärformat) anstelle von ELF erstellt, wenn der MinGW-Compiler verfügbar ist. Dies hilft verschiedenen Kopierschutzsystemen, die überprüfen, ob die Inhalte der Systemmodule auf der Festplatte und im Speicher identisch sind.
    • Die tatsächlichen PE-Binärdateien werden anstelle der gefälschten DLL-Dateien in das Wine-Präfix kopiert. Dadurch sieht das Präfix eher wie eine echte Windows-Installation aus, kostet aber etwas zusätzlichen Speicherplatz.
    • Module, die in PE konvertiert wurden, können standardmäßige Wide-Char-C-Funktionen sowie Wide-Char-Zeichenkonstanten wie L"abc" verwenden. Dadurch wird der Code leichter lesbar.
    • Noch sind nicht alle Module auf PE umgestellt; Dies ist ein fortlaufender Prozess, der während der Wine 5.x-Entwicklungsreihe fortgesetzt wird.
    • Die Wine C-Laufzeit wurde aktualisiert, um die Verknüpfung mit MinGW-kompilierten Binärdateien zu unterstützen. Es wird beim Erstellen von DLLs standardmäßig anstelle der MinGW-Laufzeitumgebung verwendet.
  • Grafik:
    • Mehrere Anzeigeadapter und Monitore werden ordnungsgemäß unterstützt, einschließlich dynamischer Konfigurationsänderungen.
    • Der Vulkan-Treiber unterstützt bis zur Version 1.1.126 der Vulkan-Spezifikation.
    • Die WindowsCodecs-Bibliothek ist in der Lage, weitere Bitmap-Formate zu konvertieren, einschließlich palettenindizierter Formate.
  • Direct3D:
    • Vollbild-Direct3D-Anwendungen verhindern den Bildschirmschoner.
    • DXGI-Swapchain-Präsentationen informieren die Anwendung, wenn das entsprechende Fenster minimiert wird. Dadurch können Anwendungen in der Regel die CPU-Auslastung reduzieren und gleichzeitig minimieren. In manchen Fällen ist dies auch erforderlich, damit das Anwendungsfenster wieder wiederhergestellt werden kann.
    • Für DXGI-Anwendungen ist das Umschalten zwischen Vollbild- und Fenstermodus mithilfe der Standardkombination Alt+Enter implementiert.
    • Die folgenden Funktionen sind für Direct3D 12-Anwendungen implementiert:
      • Wechsel zwischen Vollbild und Fenster.
      • Anzeigemodi ändern.
      • Skalierte Geschenke.
      • Intervalle tauschen. Diese Funktionen wurden zuvor bereits für frühere Versionen der Direct3D-API implementiert.
    • Die Handhabung verschiedener Randfälle wurde verbessert. Unter anderen:
      • Referenzwerte außerhalb des zulässigen Bereichs für die Alpha- und Schablonentests.
      • Bemusterung von 2D-Ressourcen mit 3D-Samplern und umgekehrt.
      • Zeichnen mit zugeordneten Texturen und Puffern.
      • Verwendung ungültiger DirectDraw-Clipper-Objekte.
      • Erstellen von Direct3D-Geräten unter ungültigem Windows, z. B. dem Desktop-Fenster.
      • Ansichtsfenster mit einem minimalen Z, das größer oder gleich dem maximalen Z ist.
      • Ressourcen, die gleichzeitig über Shader-Ressourcenansichten und Renderziel- oder Tiefenschablonenansichten gebunden sind.
      • Blits zwischen Formaten mit und ohne Alpha-Komponenten. Da gut funktionierende Anwendungen nicht auf diese Randfälle angewiesen sind, wirken sie sich normalerweise nur auf jeweils eine oder zwei Anwendungen aus. Dennoch gibt es davon eine ganze Menge.
    • Unreine Texturbereiche werden bei Direct3D 8- und 9-Textur-Uploads genauer verfolgt.
    • Das Hochladen von S3TC-komprimierten 3D-Texturen erfordert weniger Adressraum. Da 3D-Texturen potenziell groß sein können und die Erschöpfung des Adressraums bei 32-Bit-Anwendungen ein Problem darstellt, werden S3TC-komprimierte 3D-Texturen pro Segment und nicht in einem einzigen Upload hochgeladen.
    • Die ID3D11Multithread-Schnittstelle ist implementiert.
    • Es wurden verschiedene Korrekturen und Verbesserungen bei der Beleuchtungsberechnung für ältere DirectDraw-Anwendungen vorgenommen.
    • Es ist eine begrenzte Unterstützung für Blits über Swapchains hinweg implementiert.
    • Weitere Shader-Reflektions-APIs sind implementiert.
    • Der wined3d CPU-Blitter kann komprimierte Quellressourcen verarbeiten. Die Unterstützung für komprimierte Zielressourcen wurde bereits in einer früheren Version implementiert.
    • Die Direct3D-Grafikkartendatenbank erkennt weitere Grafikkarten.
    • Neue Registrierungsschlüssel HKEY_CURRENT_USER\Software\Wine\Direct3D:
      • „shader_backend“ (REG_SZ) Das zu verwendende Shader-Backend. Mögliche Werte sind „glsl“ (Standard) für GLSL, „arb“ für ARB-Vertex-/Fragmentprogramme und „none“, um die Shader-Unterstützung zu deaktivieren.
      • „strict_shader_math“ (REG_DWORD) Aktivieren (0x1) oder Deaktivieren (0x0, Standard) einer strengeren Übersetzung von Direct3D-Shadern, möglicherweise mit Leistungseinbußen. Dies macht derzeit nur mit dem standardmäßigen GLSL-Shader-Backend in Kombination mit den proprietären NVIDIA-Treibern einen Unterschied.
    • Veralteter Registrierungsschlüssel HKEY_CURRENT_USER\Software\Wine\Direct3D:
      • „UseGLSL“ wurde durch die Einstellung „shader_backend“ oben ersetzt.
  • D3DX:
    • Unterstützung für die Komprimierung von Texturen mithilfe der S3TC-Komprimierung ist implementiert.
    • Diverse Operationen, wie z.B. Texturfüllungen auf nicht kartierbaren Oberflächen werden korrekter implementiert. Bisher beruhte ihre Implementierung darauf, dass die zugrunde liegende Direct3D-Implementierung keine Zuordnungseinschränkungen durchsetzte.
    • Am Effekt-Framework wurden verschiedene Verbesserungen und Korrekturen vorgenommen.
  • Kernel:
    • Die meisten Funktionen, die früher in Kernel32 enthalten waren, werden nach KernelBase verschoben, um der Architektur neuerer Windows-Versionen zu folgen.
    • Bibliotheken mit der falschen 32/64-Bit-Version werden ignoriert, wenn sie im Suchpfad gefunden werden, um das Laden der richtigen Bibliothek zu ermöglichen, wenn sie weiter im Pfad gefunden wird.
    • Kernelobjekte werden besser für Gerätetreiber emuliert, die Objekte von der Kernelseite aus bearbeiten sollen.
    • Die Synchronisierungsobjekte auf Kernel-Ebene wie Spin-Locks, schnelle Mutexe, Remove-Locks und Ressourcenvariablen sind implementiert.
    • Der Zustand der Systembatterie wird ordnungsgemäß an Anwendungen gemeldet.
  • Benutzeroberfläche:
    • Minimierte Fenster werden mit ihrer Titelleiste anstelle der alten Symbole im Windows 3.1-Stil angezeigt.
    • Die neuen Schaltflächenstile „Split Buttons“ und „Command Links“ sind implementiert.
    • Das Edit-Steuerelement legt die Ränder auch für CJK-Schriftarten korrekt fest.
  • Desktop-Integration:
    • Für die Ordner „Downloads“ und „Templates“ werden symbolische Links zu den entsprechenden Unix-Verzeichnissen erstellt.
  • Eingabegeräte:
    • Plug & Play-Gerätetreiber können beim Start installiert und geladen werden.
    • Gamecontroller werden besser unterstützt, einschließlich der richtigen Unterstützung für Hutschalter, Rad-, Gas- und Bremssteuerung.
    • Die alte Joystick-API von Linux-Versionen vor 2.2 wird nicht mehr unterstützt.
  • .NETZ:
    • Die Mono-Engine wurde auf Version 4.9.4 aktualisiert, einschließlich Teilen des Windows Presentation Foundation (WPF)-Frameworks.
    • Die Gecko- und Mono-Add-Ons unterstützen die gemeinsame Installation, bei der die Dateien direkt von einem globalen Speicherort unter /usr/share/wine verwendet werden, anstatt in jedes neue Präfix kopiert zu werden.
  • Internet und Vernetzung:
    • Die Gecko-Engine wurde aktualisiert, um aktuelle Toolchains zu unterstützen.
    • Eine Reihe neuer HTML-APIs werden implementiert.
    • MSHTML unterstützt einige SVG-Elemente.
    • Die Weitergabe von Fehlerobjekten und Ausnahmen wird in VBScript unterstützt.
    • Eine Reihe integrierter VBScript-Funktionen sind implementiert.
    • Der JScript-EcmaScript-kompatible Modus wurde erweitert, um weitere Funktionen zu unterstützen.
    • JScript- und VBScript-Skriptobjekte stellen Typinformationsschnittstellen bereit.
    • Die HTTP-Proxy-Konfiguration kann über DHCP abgerufen werden.
    • Passport-HTTP-Weiterleitungen werden unterstützt.
    • Der HTTP-Dienst und die entsprechende clientseitige Bibliothek (HTTPAPI) sind teilweise implementiert.
  • Kryptographie:
    • Bei Verwendung von GnuTLS werden ECC-Schlüssel (Elliptic Curve) unterstützt.
    • Der Import von Schlüsseln und Zertifikaten aus PFX-Blobs ist implementiert.
    • Der PBKDF2-Schlüsselableitungsalgorithmus wird unterstützt.
  • Texte und Schriftarten:
    • OpenType-Positionierungsfunktionen werden in DirectWrite unterstützt und sind standardmäßig für lateinische Schrift aktiviert, einschließlich Kerning.
    • Der Zugriff auf Schriftartdaten wird sicherer, indem die verschiedenen Datentabellen vor ihrer Verwendung validiert werden.
    • DirectWrite-Schnittstellen werden auf ein aktuelles SDK aktualisiert und einige der neuesten API-Ergänzungen implementiert.
  • Audio/Video:
    • Die XAudio2-Bibliotheken werden zur besseren Kompatibilität neu implementiert, um die externe FAudio-Bibliothek zu verwenden.
    • Die Bibliotheken der Media Foundation wurden erweitert, darunter:
      • Unterstützung für integrierte und asynchrone Benutzer-Arbeitswarteschlangen.
      • Möglichkeit, regelmäßige Rückrufe, wartende, geplante und reguläre Arbeitselemente einzureichen, mit Unterstützung für Elementpriorität.
      • Unterstützung für Medienereigniswarteschlangen.
      • Verschiedene Kern-APIs zur Verarbeitung von Medientypobjekten, Stream- und Präsentationsdeskriptoren, Objektattributen, Bytestream-Objekten, Beispielen und Puffern.
      • Erste Implementierung des Source Resolvers.
      • Erste Implementierung der Source Reader API.
      • Implementierung für das Sample Grabber-Objekt.
      • Kernunterstützung für die Erstellung von Topologieobjekten.
      • Integrierte Präsentationsuhr-Implementierung, mit der Implementierung der Media Session-Funktionalität begonnen.
    • Der Videoaufnahmefilter wurde so portiert, dass er v4l2 anstelle der veralteten v4l1-API verwendet, was die Verwendung einiger Kameras ermöglicht, die v4l1 nicht unterstützen.
    • Die Unterstützung für die YUV-zu-RGB-Übersetzung und das Lesen von v4l2-Geräten mit mmap() wurde entfernt; Für beide Dinge sind wir jetzt auf libv4l2 angewiesen.
    • Die integrierten AVI-, MPEG-I- und WAVE-Decoder wurden entfernt; Wir sind jetzt auf GStreamer oder das Mac QuickTime Toolkit angewiesen, um solche Mediendateien zu dekodieren.
    • Einige weitere VMR7-Konfigurations-APIs sind implementiert.
    • Die Soundtreiber unterstützen Lautstärkeanpassungen pro Kanal.
  • Internationalisierung:
    • Unicode-Zeichentabellen basieren auf Version 12.1.0 des Unicode-Standards.
    • Unicode-Normalisierung ist implementiert.
    • Die geografische Regions-ID wird automatisch basierend auf dem aktuellen Gebietsschema in der Registrierung festgelegt. Es kann bei Bedarf unter HKEY_CURRENT_USER\Control Panel\International\Geo geändert werden.
    • Die singhalesischen und asturischen Gebietsschemata werden unterstützt.
    • Codepage 28601 (Latein/Thai) wird unterstützt.
  • RPC/COM:
    • Der Typelib-Marshaller unterstützt komplexe Strukturen und Arrays.
    • Es gibt eine erste Implementierung der Windows Script-Laufzeitbibliothek.
    • Es gibt eine erste Implementierung der Microsoft ActiveX Data Objects (ADO)-Bibliothek.
  • Installateure:
    • Microsoft Installer (MSI)-Patchdateien werden unterstützt.
    • Das WUSA-Tool (Windows Update Standalone Installer) unterstützt die Installation von .MSU-Updatedateien.
  • ARM-Plattformen:
    • Das Entwickeln von Ausnahmen wird für ARM64 mithilfe der Bibliothek libunwind implementiert.
    • OLE-Stubless-Proxys werden auf ARM64 unterstützt.
  • Entwicklungstools / Winelib:
    • Der Remote-Debugger von Visual Studio kann zum Debuggen von Anwendungen verwendet werden, die unter Wine ausgeführt werden.
    • Die Debug Engine-Bibliothek (DBGENG) ist teilweise implementiert.
    • Für ein Windows-Ziel erstellte Binärdateien sind nicht mehr von der libwine-Bibliothek abhängig, sodass sie ohne zusätzliche Abhängigkeiten unter Windows ausgeführt werden können. Die libwine-Bibliothek ist überhaupt nicht mehr für Windows erstellt.
    • Der Ressourcen-Compiler und der IDL-Compiler unterstützen die Option „--sysroot“, um das Auffinden von Header-Dateien in Cross-Compile-Umgebungen zu ermöglichen.
    • Winegcc unterstützt die Optionen „--target“, „--wine-objdir“, „--winebuild“ und „-fuse-ld“, die die Verwendung als Cross-Compiler oder mit benutzerdefinierten Toolchains erleichtern.
    • Der wine/unicode.h-Header steht Anwendungen nicht mehr zur Verfügung, da die Funktionen letztendlich entfernt und durch die standardmäßigen laufzeitweiten C-Zeichenfunktionen ersetzt werden.
  • Infrastruktur aufbauen:
    • Testbinärdateien werden im PE-Format erstellt, wenn MinGW verfügbar ist, sodass dieselbe Testbinärdatei sowohl auf Wine als auch auf Windows ausgeführt werden kann. Das Make-Ziel „Crosstest“ wird nicht mehr benötigt oder unterstützt.
    • Die Aufrufkonvention „Fastcall“ wird in Spezifikationsdateien unterstützt. Es verwendet die korrekte Namensverknüpfung für Windows-Builds.
    • In Spezifikationsdateien wird das Einstiegspunktflag „-import“ unterstützt, um Funktionen zu markieren, die für ihre Import-Thunks die Generierung eines Hotpatch-Code-Präfixes benötigen.
    • Winebuild unterstützt die Option „--builtin“, um PE-Binärdateien eine spezielle Signatur hinzuzufügen und sie als Wine-Builtins zu markieren.
  • Integrierte Anwendungen:
    • Das CHCP-Tool ist implementiert. Es ermöglicht das Festlegen der Konsolen-Codepage.
    • Das MSIDB-Tool ist implementiert. Es ermöglicht die Manipulation von MSI-Datenbanken.
  • Leistungsverbesserungen:
    • Die verschiedenen Zeitfunktionen nutzen, sofern verfügbar, leistungsstärkere Systemuhren, um den Overhead in der Rendering-Schleife vieler Spiele zu reduzieren.
    • Dateisuchen nutzen die Case-Folding-Unterstützung des ext4-Dateisystems, wenn diese für das durchsuchte Verzeichnis aktiviert ist.
    • Listenfelder im No-Data-Stil (LBS_NODATA) bieten eine bessere Leistung für eine große Anzahl von Elementen.
    • Schlanke Lese-/Schreibsperren, Schlüsselereignisse und Bedingungsvariablen verwenden Futexes unter Linux, um Wineserver-Roundtrips zu vermeiden.
  • Neue externe Abhängigkeiten:
    • Der Cross-Compiler MinGW-w64 wird zum Erstellen von Modulen im PE-Format verwendet.
    • Die FAudio-Bibliothek wird zur Implementierung von XAudio2 verwendet.
    • Die Inotify-Bibliothek wird für Dateiänderungsbenachrichtigungen auf BSD-Plattformen verwendet.
    • Die Unwind-Bibliothek wird für die Ausnahmebehandlung auf ARM64 verwendet.
    • Anstelle der Version 1 wird die Video4Linux-Bibliothek Version 2 verwendet.

mehr lesen


Quelle: Wein-Hauptquartier

Geschichte über: AndroidPolice