Nach einem Jahr Entwicklung und 25 experimentellen Versionen wurde die stabile Version der offenen Umsetzung der Win32 API â Wine 11.0 â veröffentlicht, die ĂŒber 6300 Ănderungen und 600 Fehlerbehebungen umfasst. Zu den wichtigsten Neuerungen in der neuen Version zĂ€hlt die vollstĂ€ndige UnterstĂŒtzung von NTSYNC, die Implementierung des Reparse Point-Mechanismus und die Verwendung einer neuen Umsetzung der WoW64-Architektur.
In Wine wurde die volle FunktionalitĂ€t von 5419 Windows-Anwendungen bestĂ€tigt (vor einem Jahr waren es 5372, vor zwei Jahren 5336, vor drei Jahren 5266), auĂerdem funktionieren weitere 4500 Programme (vor einem Jahr 4435, vor zwei Jahren 4397, vor drei Jahren 4370) hervorragend mit zusĂ€tzlichen Anpassungen und externen DLLs. Bei 4086 Programmen (vor einem Jahr 4020, vor zwei Jahren 3943, vor drei Jahren 3888) gibt es kleinere Probleme, die die Nutzung der Hauptfunktionen der Anwendungen jedoch nicht beeintrĂ€chtigen.
Wichtige Neuerungen in Wine 11.0:
- VollstĂ€ndige UnterstĂŒtzung des NTSYNC-Treibers, der die Leistung von Windows-Spielen, die mit Wine ausgefĂŒhrt werden, erheblich steigert. Der Treiber ist Teil des Linux-Kernels seit Version 6.14 und implementiert das zeichenorientierte GerĂ€t /dev/ntsync sowie einen Satz von Synchronisationsprimitiven, die im Windows NT-Kernel verwendet werden. Der signifikante Leistungszuwachs wird durch die Beseitigung von Overhead, der mit RPC im Benutzerspace verbunden ist, erreicht.
- Die Möglichkeit zur Einstellung der Thread-PrioritĂ€ten in Linux und macOS wurde hinzugefĂŒgt.
- Im ntdll wurde die Synchronisierungs-API âSynchronization barriersâ hinzugefĂŒgt, die es ermöglicht, die AusfĂŒhrung mehrerer Threads bis zu einem bestimmten Punkt in der AusfĂŒhrung aller Threads anzuhalten (z. B. bis alle Threads einen bestimmten Punkt beim parallelen AusfĂŒhren desselben Codes erreicht haben).
- Die neue Umsetzung der WoW64-Api (64-Bit Windows-on-Windows) wird nun als vollstĂ€ndig unterstĂŒtzt eingestuft und ermöglicht die AusfĂŒhrung von 32-Bit Windows-Anwendungen in 64-Bit Unix-Systemen. Im Gegensatz zur alten WoW64-Umsetzung, in der 32-Bit-Anwendungen in 32-Bit Unix-Prozessen ausgefĂŒhrt wurden, ermöglicht die neue WoW64 die AusfĂŒhrung von 32-Bit-Code innerhalb eines 64-Bit-Prozesses. Innerhalb des WoW64-Modus wurde die UnterstĂŒtzung fĂŒr die AusfĂŒhrung von 16-Bit-Anwendungen implementiert.
In allen Modulen, die auf Unix-Bibliotheken zugreifen, werden WoW64-Systemaufrufumwandler (Thunk) verwendet, die es 32-Bit-Modulen im PE-Format ermöglichen, auf 64-Bit-Unix-Bibliotheken zuzugreifen. Es wurde die Möglichkeit hinzugefĂŒgt, alte WoW64-Installationen im neuen Modus durch Setzen der Umgebungsvariable âWINEARCH=wow64â zu starten. 32-Bit-Prefixe, die bei Setzen von WINEARCH=win32 erstellt werden, sind als veraltet deklariert und werden im neuen WoW64-Modus nicht mehr unterstĂŒtzt. Der separate wine64-Loader wurde entfernt; stattdessen wird ein universeller Loader verwendet, der den Modus basierend auf der Bitbreite der ausfĂŒhrbaren Datei bestimmt.
- Kern (Windows Kernel-Schnittstellen)
- Ein Mechanismus fĂŒr Reparse Points wurde implementiert, mit dem zusĂ€tzliche Daten, die ĂŒber Tags identifiziert werden, an Dateien und Verzeichnisse angehĂ€ngt werden können. Typen von Reparse Points wie symbolische Links und Einrichtungspunkte werden unterstĂŒtzt.
- Um die Leistung beim Tracking von Schreiboperationen im Speicher zu verbessern, wird der Mechanismus UFFD (userfaultfd) eingesetzt, der es ermöglicht, Handler fĂŒr Zugriffe auf nicht zugewiesene Speicherseiten (Page Faults) im Benutzermodus zu erstellen. In durchgefĂŒhrten Tests ermöglichte der Einsatz von UFFD, die Ladezeit von Levels im Spiel âStreets of Rage 4â von 6-8 Sekunden auf 1,5-2 Sekunden zu reduzieren, was den Ladezeiten auf der Windows-Plattform entspricht.
- Die Systemaufrufnummern NT, die mit den neuesten Versionen von Windows identisch sind, wurden implementiert, um die UnterstĂŒtzung von Anwendungen sicherzustellen, die fest codierte Systemaufrufnummern verwenden.
- Auf ARM64-Systemen wurde die Möglichkeit einer Simulation von 4K-Speicherseiten in Umgebungen mit Linux-Kernen, die gröĂere Speicherseiten (16K oder 64K) verwenden, implementiert. Die Simulation ermöglicht das AusfĂŒhren einfacher Anwendungen; fĂŒr komplexere Programme wird empfohlen, Linux-Kerne mit 4-Kilobyte-Speicherseiten zu verwenden.
- Grafik-Subsystem
- Auf X11-Systemen (winex11) wird standardmĂ€Ăig ein Rendering-Backend, das EGL verwendet, fĂŒr OpenGL eingesetzt. Das GLX-Backend ist als veraltet angesehen, bleibt aber als Option verfĂŒgbar und wird verwendet, wenn EGL nicht vorhanden ist.
- Die anfĂ€ngliche UnterstĂŒtzung fĂŒr D3DKMT-Objekte, die einen niedrigen Zugriff auf grafische GerĂ€te aus dem Benutzermodus bieten, wurde hinzugefĂŒgt. Vulkan-Erweiterungen VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32 und VK_KHR_win32_keyed_mutex wurden realisiert.
- Im WoW64-Modus (64-Bit Windows-on-Windows) wurde die UnterstĂŒtzung fĂŒr den Speichermapping von OpenGL ĂŒber die Vulkan-API implementiert, die die Leistung von 32-Bit OpenGL-Anwendungen in Wine beschleunigt.
- Es wurde eine Emulation des Front-Buffers fĂŒr OpenGL auf Plattformen ohne integrierte UnterstĂŒtzung dafĂŒr realisiert.
- Im Driver fĂŒr die Vulkan-API wurde UnterstĂŒtzung fĂŒr die Spezifikation Vulkan 1.4.335 hinzugefĂŒgt.
- Im WindowsCodecs-Bibliothekspaket wurde die UnterstĂŒtzung fĂŒr Metadaten in Bilddateien erweitert, und die Umwandlung zwischen ganzzahligen Farbdarstellungsformaten und FlieĂkommaformaten wurde implementiert.
- Die AbhĂ€ngigkeit von der OSMesa-Bibliothek (Off-screen Mesa) wurde entfernt. Es wurde die Möglichkeit implementiert, Bitmaps ĂŒber OpenGL mit Hilfe eines hardwarebeschleunigten OpenGL-Runtimes zu rendern.
- Integration mit dem Desktop
- Im Driver winewayland.drv, der die Verwendung von Wine in Umgebungen auf Basis des Wayland-Protokolls ohne XWayland und X11-Komponenten ermöglicht, wurde UnterstĂŒtzung fĂŒr die Zwischenablage, Eingabemethoden, unregelmĂ€Ăige Fenster und Transparenz implementiert.
- Die Integration mit X11 wurde verbessert: Anfragen zur Aktivierung von Fenstern werden nun an den Fenstermanager gesendet, und das EWMH-Protokoll wurde aktiviert, um den Zustand aktiver Fenster zwischen X11 und Win32 zu synchronisieren.
- Die UnterstĂŒtzung fĂŒr den exklusiven Vollbildmodus wurde implementiert. Die UnterstĂŒtzung des Vollbildmodus in D3D wurde verbessert, und die Leistung alter Spiele auf Basis von DDraw wurde optimiert.
- Die Leistung bestimmter Fensterfunktionen wurde gesteigert. FĂŒr die Interaktion zwischen Prozessen wurde Shared Memory eingesetzt.
- Direct3D
- In Direct3D 11 wurde die UnterstĂŒtzung fĂŒr hardwarebeschleunigtes Dekodieren von Videos im H.264-Format implementiert, realisiert durch die Vulkan-API.
- In Direct3D 11 wurde die UnterstĂŒtzung fĂŒr Minmax-Texturfilterung unter Verwendung der OpenGL-Erweiterung GL_ARB_texture_filter_minmax oder der Vulkan-Erweiterung VK_EXT_sampler_filter_minmax implementiert.
- In Direct3D 11 wurden Funktionen zum Laden von Texturen realisiert.
- Eine gröĂere Palette von Direct3D-Funktionen beim Rendern ĂŒber Vulkan wurde implementiert, darunter Vertex-Mischung, Flat Shading, benutzerdefinierte Clipping-Ebenen und verschiedene Ressourcenformate.
- In der integrierten Version von vkd3d-shader wurde die UnterstĂŒtzung fĂŒr Shadermodelle 1, 2 und 3 verbessert.
- In der Methode D3DXSaveSurfaceToFileInMemory wurde die UnterstĂŒtzung fĂŒr die Formate PNG, JPEG und BMP implementiert.
- In Direct3D 10 und 11 wurde die UnterstĂŒtzung fĂŒr die Komprimierung und Dekomprimierung der Formate BC4 und BC5 sowie die Generierung von MIP-Ebenen (MipMap) beim Laden von Texturen implementiert.
- Die Methoden ID3DXEffect::SetRawValue() und ID3DXSkinInfo::UpdateSkinnedMesh() wurden implementiert.
- EingabegerÀte
- Die KompatibilitÀt mit Joysticks wurde durch die Verwendung des hidraw-Backends verbessert.
- Die UnterstĂŒtzung fĂŒr das Vibrieren (Force Feedback) bei der Verwendung von SpielrĂ€dern und Joysticks wurde verbessert.
- Die UnterstĂŒtzung von Gamepads in der API Windows.Gaming.Input sowie bei der Verwendung des evdev-Backends wurde verbessert.
- Im Applet zur Steuerung von Spielcontrollern wurde eine Registerkarte zur Konfiguration der API Windows.Gaming.Input hinzugefĂŒgt.
- Die KompatibilitÀt von DirectInput mit Àlteren Spielen wurde erhöht.
- Bluetooth
- Im Bluetooth-Treiber wurde die Möglichkeit zum Scannen, Einrichten von Entdeckungen und Koppeln von GerĂ€ten hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr Bluetooth Low Energy-Dienste wurde hinzugefĂŒgt.
- Anwendungen wurde die Möglichkeit gegeben, niedrigstufige RFCOMM-Verbindungen mit externen GerĂ€ten ĂŒber die Winsock-API zu erstellen.
- UnterstĂŒtzung fĂŒr Scanner
- Die UnterstĂŒtzung fĂŒr die API TWAIN 2.0, die den Zugriff auf Scanner aus 64-Bit-Anwendungen ermöglicht, wurde implementiert.
- Die UnterstĂŒtzung fĂŒr die Komponente DAT_IMAGENATIVEXFER wurde implementiert, um Bilder von Scannern an Anwendungen zu ĂŒbertragen.
- Die Auswahl des Scanners und der Scannereinstellungen wird im Registrierungsdatenbank gespeichert.
- Die UnterstĂŒtzung fĂŒr das Scannen mehrerer Seiten und die automatische ZufĂŒhrung von Dokumenten wurde hinzugefĂŒgt.
- Die Blockierung der Anwendung wÀhrend des Aufrufs der Scan-Schnittstelle wurde beendet.
- Die UnterstĂŒtzung fĂŒr das Laden der nativen Windows-Treiber fĂŒr Scanner wurde hinzugefĂŒgt.
- Internationalisierung
- Die Generierung einer DB fĂŒr Locales im Format locale.nls aus der Unicode CLDR-Datenbank (Unicode Common Locale Data Repository) Version 48 wurde sichergestellt. UnterstĂŒtzung fĂŒr zusĂ€tzliche Locales bua-RU, bqi-IR, cop-EG, ht-HT, kek-GT, lzz-TR, mww-Hmnp-US, oka-CA, pi-Latn-GB, pms-IT, sgs-LT, suz-Deva-NP und suz-Sunu-NP wurde hinzugefĂŒgt.
- Die Unicode-Zeichentabellen wurden auf die Standards Version 17.0.0 aktualisiert. Die Zeitzonendatenbank wurde aktualisiert.
- NetzwerkfÀhigkeiten
- Im MSHTML-Engine wurde im Modus der StandardkonformitÀt die Arbeit mit den Attributen von Elementen als vollwertige DOM-Knoten sichergestellt. Die Objekte DOMParser, XDomainRequest und msCrypto wurden implementiert.
- In JavaScript wurde die UnterstĂŒtzung fĂŒr typisierte Arrays hinzugefĂŒgt.
- FĂŒr ICMPv6 wurde der Befehl ping implementiert.
- Datenbank
- In der MSADO-Bibliothek (ActiveX Data Objects) wurde die UnterstĂŒtzung fĂŒr das Schreiben von Ănderungen in die Datenbank hinzugefĂŒgt. Die meisten Funktionen des Recordset-Objekts wurden implementiert.
- In der Bibliothek odbc32 wurde die UnterstĂŒtzung fĂŒr ANSI win32-Treiber, die nicht fĂŒr die Arbeit mit Unicode ausgelegt sind, verbessert. Die Funktionen SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLGetInfoW(), SQLStatisticsW() und QLColumnsW() wurden implementiert.
- Eingebettete Anwendungen
- In WineCfg wurde eine Registerkarte zur Konfiguration des standardmĂ€Ăigen MIDI-GerĂ€ts hinzugefĂŒgt.
- Das cmd-Tool unterstĂŒtzt jetzt die automatische VervollstĂ€ndigung von Dateinamen im interaktiven Modus, ermöglicht komplexe Befehle und implementiert den Befehl âmklink /jâ zur Erstellung eines Reparse Points.
- Im Tool conhost (Console Hosting) wurde die UnterstĂŒtzung fĂŒr die Historie durch DrĂŒcken der Tasten F1 und F3 hinzugefĂŒgt.
- Die Befehle timeout, runas und subst wurden implementiert.
- Im Tool find wurden die Optionen â/câ zur Anzeige der Anzahl der Ăbereinstimmungen und â/iâ fĂŒr die GroĂ-/Kleinschreibung ignorierende Ăbereinstimmungen hinzugefĂŒgt.
- Im Tool whoami wurde die Möglichkeit zur Anpassung des Ausgabeformats hinzugefĂŒgt.
- Verschiedenes
- Im WIDL (Wine Interface Definition Language) wurde die UnterstĂŒtzung fĂŒr die Generierung von Windows Runtime (WinRT)-Metadaten hinzugefĂŒgt. Es wird die Generierung und Installation von WinMD-Dateien (Windows Metadata) fĂŒr die WinRT-API (Windows Runtime) ermöglicht.
- Im Tool winedump wurde die UnterstĂŒtzung fĂŒr das Dumpen von MUI-Ressourcen, Systemaufrufnummern, eingebetteten NE-Modulen und groĂen PDB-Dateien (> 4 GB) hinzugefĂŒgt.
- Es wurde ein Refactoring der Common Control-Implementierung durchgefĂŒhrt, die COMCTL32-Bibliothek wurde in separate Module fĂŒr die Versionen 5 und 6 aufgeteilt.
- In BCrypt wurde die UnterstĂŒtzung fĂŒr den PBKDF2-SchlĂŒsselberstellungsstandard hinzugefĂŒgt.
- Die Verzeichnisse UserProgramFiles, AccountPictures und Screenshots wurden unterstĂŒtzt.
- In das Paket wurden die Bibliotheken LLVM Compiler-RT 8.0.1 und TomCrypt 1.18.2 integriert. Zur CPU-Erkennung auf der FreeBSD-Plattform wurde die HwLoc-Bibliothek verwendet.
- Die Komponenten Vkd3d 1.18, Faudio 25.12, FluidSynth 2.4.2, LCMS2 2.17, LibMPG123 1.33.0, Libpng 1.6.51, LibTiff 4.7.1, LibXml2 2.12.10 und LibXslt 1.1.43 wurden auf neue Versionen aktualisiert.
Quelle: opennet.ru
