Après un an de développement et 26 versions expérimentales, une version stable de l'implémentation ouverte de l'API Win32 - Wine 9.0, qui incorporait plus de 7000 64 modifications, a été présentée. Les principales réalisations de la nouvelle version incluent la mise en œuvre de l'architecture WoW32 pour exécuter des programmes 64 bits dans un environnement 64 bits, l'intégration de pilotes pour prendre en charge Wayland, la prise en charge de l'architecture ARMXNUMX, la mise en œuvre de l'API DirectMusic et la prise en charge des cartes à puce.
5336 (5266 il y a un an, 5156 il y a deux ans, 5049 il y a trois ans) programmes ont été confirmés comme fonctionnant correctement dans Wine. Windows4 397 autres programmes (4 370 il y a un an, 4 312 il y a deux ans et 4 227 il y a trois ans) fonctionnent correctement avec des paramètres supplémentaires et des DLL externes. 3 943 programmes (3 888 il y a un an, 3 813 il y a deux ans et 3 703 il y a trois ans) présentent des problèmes mineurs qui n'affectent pas leur fonctionnement de base.
Innovations clés de Wine 9.0 :
- Le pilote winewayland.drv a été ajouté, permettant d'utiliser Wine dans les environnements Wayland sans recourir aux composants XWayland ou X11. Ce développement vise à fournir un environnement Wayland pur avec prise en charge du lancement. WindowsLes applications qui ne nécessitent pas l'installation de paquets liés à X11 offrent de meilleures performances et une réactivité accrue dans les jeux grâce à la suppression des couches superflues. L'utilisation d'un environnement Wayland pur pour Wine élimine également les problèmes de sécurité inhérents à X11 (par exemple, les jeux X11 non fiables peuvent espionner d'autres applications car le protocole X11 permet d'accéder à tous les événements d'entrée et d'effectuer une substitution de frappe).
Le pilote est marqué comme expérimental et en cours de développement, mais il prend néanmoins déjà en charge de nombreuses fonctionnalités, telles que la gestion des fenêtres, le travail avec plusieurs moniteurs, la prise en charge de la mise à l'échelle de la sortie sur les écrans à haute densité de pixels (haute DPI), le travail avec coordonnées relatives lors du suivi des mouvements de la souris et prise en charge de l'API graphique Vulkan. Par défaut, le pilote n'est pas actif et pour l'activer, vous devez ajouter « wayland » au paramètre de registre « HKCU\Software\Wine\Drivers » et vous assurer que la variable d'environnement DISPLAY n'est pas définie : wine reg.exe add HKCU\ \Logiciel\\Wine\\Drivers /v Graphics /d x11,wayland
- Tous les modules ont été convertis vers l'interface d'appel système NT, plutôt que d'effectuer des appels directs entre les couches PE et Unix, marquant l'achèvement de nombreuses années de travail pour convertir toutes les DLL afin d'utiliser le format de fichier exécutable PE (Portable Executable).
- Le développement de la couche WoW64 (64 bits) s'est poursuivi. Windows-au-Windows), ce qui vous permet d'exécuter des programmes 32 bits Windows- Applications sur systèmes Unix 64 bits. Tous les modules accédant aux bibliothèques Unix utilisent des traducteurs d'appels système WoW64 (thunks), permettant aux modules 32 bits au format PE d'accéder aux bibliothèques Unix 64 bits.
Le nouveau mode de lancement WoW64 a été amélioré, permettant l'exécution de code 32 bits au sein d'un processus 64 bits (dans l'ancien mode WoW64, les applications 32 bits s'exécutaient dans des processus Unix 32 bits). La prise en charge du nouveau mode WoW64 sur la plateforme a été ajoutée. macOSÉtant donné que le nouveau mode WoW64 présente quelques bugs mineurs, tels qu'un manque de prise en charge 16 bits et des performances OpenGL réduites en raison de l'absence de prise en charge de l'extension ARB_buffer_storage, il n'est pas encore activé par défaut et nécessite une compilation avec l'option "--enable-archs=i386,x86_64" dans le script de configuration.
- Ajout de la possibilité d'exécuter des fichiers exécutables existants Windows Sur les systèmes dotés d'une architecture ARM64, Wine peut désormais être compilé pour l'ABI ARM64EC (compatible avec l'émulation ARM64) et les modules ARM64EC peuvent être chargés. Ces modules simplifient le portage d'applications initialement conçues pour l'architecture x86_64 vers les systèmes ARM64 en permettant l'exécution de modules de code x86_64 individuels dans l'environnement ARM64 à l'aide d'un émulateur. La prise en charge du format de fichier PE ARM64X a été ajoutée, permettant le chargement d'un seul fichier exécutable dans les processus x64/Arm64EC et ARM64. Une interface pour l'émulation des systèmes x86 32 bits a été implémentée, mais la bibliothèque d'émulation n'est pas encore incluse dans la distribution principale de Wine (l'émulateur externe FEX peut être utilisé pour exécuter du code x86 dans l'environnement ARM64).
- Sous-système graphique
- Le pilote PostScript a été repensé pour prendre en charge les fichiers spool au format Windows, qui stockent des données sur les travaux d'impression. Les appels directs au pilote depuis l'environnement Unix sont exclus.
- La prise en charge du mode sombre a été ajoutée aux thèmes WinRT. Un paramètre a été ajouté à WineCfg pour activer la conception d'interface sombre.
- Le pilote de l'API graphique Vulkan a ajouté la prise en charge de la spécification Vulkan 1.3.272 (8.0 était pris en charge dans Wine 1.3.237).
- Les fonctions de la bibliothèque GdiPlus ont été optimisées, permettant des performances graphiques accrues.
- Direct3D
- L'analyse d'un flux de commandes multithread est suspendue lorsqu'aucune commande de rendu n'est en cours de traitement, ce qui permet de réduire la consommation d'énergie au niveau d'un traitement monothread lors de l'exécution de programmes qui n'occupent pas toute la bande passante du flux de commandes.
- Direct3D 10 inclut la prise en charge d'effets supplémentaires.
- Optimisation des performances du code et du backend WineD3D à l'aide de l'API graphique Vulkan.
- Le code de rendu basé sur l'API Vulkan vérifie désormais les fonctionnalités prises en charge par l'appareil et indique à l'application quel niveau de fonctionnalité Direct3D est disponible.
- Les fonctions D3DXFillTextureTX et D3DXFillCubeTextureTX ont été implémentées.
- Le backend classique du shader OpenGL ARB a ajouté la prise en charge de la définition des ombres à l'aide de l'extension ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX et des fonctions similaires ont ajouté la prise en charge du chargement des données utilisateur à l'aide de l'interface ID3DXLoadUserData.
- Son et vidéo
- Une première implémentation de l'API DirectMusic a été proposée. Ajout de la prise en charge des collections, des instruments et des échantillons sonores au format SoundFont. Ajout de la prise en charge de l'effet Doppler. Des tests ont été mis en œuvre pour vérifier la bonne implémentation lors de l'utilisation du séquenceur dmime et du synthétiseur MIDI dmsynth.
- La bibliothèque FluidSynth est intégrée à l'API DirectMusic pour être utilisée.
- Prise en charge du chargement des banques de sons (SoundFont - formats de synthèse à base d'échantillons utilisés pour lire les fichiers MIDI) aux formats DLS1 et DLS2, ainsi qu'au format SF2 utilisé dans Linux.
- Ajout de la possibilité de lire du contenu MIDI à l'aide de la bibliothèque dmsynth, du synthétiseur logiciel FluidSynth et de l'API DirectSound pour la sortie audio.
- Ajout d'un décodeur pour la vidéo au format codec vidéo Indeo IV50.
- DirectShow
- Le composant DMO (DirectX Media Object) avec un décodeur de format WMV a été implémenté (Windows Vidéo multimédia).
- Ajout d'un filtre de capture audio (DirectShow Audio Capture Filter).
- En plus des flux audio, le MPEG‑1 Stream Splitter (DirectShow MPEG‑1 Stream Splitter) prend désormais en charge les flux vidéo et les flux de services.
- Un filtre de décodage vidéo au format MPEG-1 (DirectShow MPEG-1 Video Decoder) a été implémenté.
- Dispositifs d'entrée
- DirectInput prend en charge le mappage d'actions, qui vous permet de lier les boutons d'un contrôleur de jeu à des actions spécifiques dans les jeux.
- Intégration de bureau
- Les liaisons ont été exportées vers l'environnement utilisateur principal, permettant aux applications exécutées sous Wine d'être appelées en tant que gestionnaires de protocole lors de l'ouverture d'une URL (par exemple, en lançant spotify.exe lors de l'ouverture de liens tels que « spotify:user:spotify:playlist:848218482355482821 »).
- Implémentation de l'extraction des données EDID (Extended Display Identification Data) avec des informations sur les paramètres du moniteur connecté, tels que le nom et le modèle de l'appareil.
- Il est possible de fermer une fenêtre de bureau déployée en mode plein écran à l'aide du bouton « Quitter le bureau » du menu « Démarrer ».
- Internationalisation
- La prise en charge des éditeurs de méthode de saisie (IME) a été étendue. Des travaux ont été menés pour assurer la compatibilité avec les systèmes natifs. Windows Implémentations IME et intégration améliorée avec Linux IME
- La génération de bases de données de paramètres régionaux au format locale.nls à partir de la base de données Unicode CLDR (Unicode Common Locale Data Repository) version 44 a été fournie. Prise en charge de paramètres régionaux supplémentaires bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA , prg-PL a été ajouté. , skr-PK, tyv-RU, vmw-MZ, xnr-IN et za-CN.
- L'interface a été traduite en géorgien. Des traductions complètes sont fournies pour 16 langues et des traductions partielles pour 31 langues.
- Les tables de caractères Unicode ont été mises à jour vers la version standard 15.1.0. La base de données des fuseaux horaires a été mise à jour.
- Noyau (interfaces du noyau) Windows)
- Conformément à la version publiée Windows défini par défaut Windows 10.
- Pour les fichiers exécutables au format PE, la prise en charge de la randomisation de l'espace d'adressage (ASLR) est implémentée, mais les adresses de chargement du code en mémoire ne sont pas encore complètement randomisées.
- La prise en charge d'un tas faiblement fragmenté (LFH, Low Fragmentation Heap) a été implémentée, ce qui a augmenté les performances des opérations d'allocation de mémoire.
- La prise en charge de la réservation de mémoire (espace réservé) a été ajoutée au mécanisme d'allocation de mémoire virtuelle, permettant à une application de réserver une zone spécifique de mémoire virtuelle pour une utilisation future.
- Les chargeurs 64 bits (chargeur et préchargeur) de fichiers exécutables et de bibliothèques sont compilés au format PIE (Position-Independent Executables) pour libérer une partie de l'espace d'adressage 32 bits.
- Un déroulement correct de la pile est fourni pour les appels système NT et les appels de rappel utilisateur.
- Fonctionnalités de mise en réseau
- Le moteur MSHTML prend en charge le mécanisme de récupération de place « Cycle Collection ».
- MSHTML a ajouté la prise en charge du traitement synchrone des requêtes XMLHttpRequest.
- jscript.dll ajoute la prise en charge d'un objet WeakMap pour fonctionner avec une collection de paires clé/valeur dans laquelle la clé est un objet auquel une valeur arbitraire peut lui être attachée. Implémentation des méthodes WeakMap.get(), WeakMap.delete(), WeakMap.clear() et WeakMap.has().
- Le moteur de navigation Gecko a été mis à jour vers la version 2.47.4.
- La prise en charge des notifications concernant les changements dans l'état de l'interface réseau a été implémentée.
- Cryptographie et sécurité
- La prise en charge des cartes à puce a été ajoutée à la bibliothèque Winscard.dll, implémentée via la bibliothèque système PCSClite.
- BCrypt a ajouté la prise en charge du protocole d'échange de clés Diffie-Hellman.
- Le package Négocier a été implémenté, fournissant une couche permettant d'utiliser l'interface SSPI (Security Support Provider Interface) pour accéder aux fournisseurs SSP (Security Support Provider).
- Applications embarquées
- Le Wine Debugger (winedbg) utilise la bibliothèque Zydis pour désassembler les instructions machine X86.
- L'interface WineCfg a été mise à jour pour prendre en charge les anciennes versions sur les plateformes 64 bits. Windows (avant XP), qui vous permet d'exécuter des applications anciennes en utilisant le mode WoW64.
- Toutes les applications graphiques intégrées affichent désormais les informations d'erreur dans une boîte de dialogue séparée, au lieu de les afficher dans la console.
- Le programme systeminfo permet d'afficher des informations provenant de la base de données WMI (Windows Instrumentation de gestion).
- Ajout de l'application klist pour afficher les tickets Kerberos.
- L'application taskkill implémente la possibilité de mettre fin de force aux processus enfants.
- Ajout de l'option "/ machine" à l'utilitaire de démarrage pour sélectionner l'architecture utilisée lors de l'exécution d'exécutables hybrides prenant en charge x86 et ARM.
- La plupart des fonctionnalités du programme de liste de tâches ont été implémentées.
- Ajout d'une implémentation de base de l'application findstr.
- Outils de développement
- L'utilitaire WineDump permet d'afficher le contenu des fichiers de registre. Windows (format REGF), ainsi que l'affichage des données pour toutes les architectures (x86/ARM64) prises en charge dans les fichiers PE hybrides.
- Le compilateur IDL a ajouté la prise en charge des attributs « composable », « default_overload », « obsolète » et « protégé ».
- Suppression de libwine.so, qui était obsolète dans Wine 6.0 et n'est plus utilisé depuis longtemps dans Wine. Les programmes au format ELF construits dans les anciennes versions de Wine (5.0 et antérieures) avec libwine.so nécessitent une reconstruction pour fonctionner dans Wine 9.0.
- Bibliothèques intégrées et dépendances externes
- Les bibliothèques FluidSynth 2.3.3, Musl 1.2.3 (fonctions mathématiques uniquement) et Zydis 4.0.0 sont intégrées au package.
- Les composants Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5, LibXslt 1.1.38 et Zlib 1.3 ont été mis à jour vers de nouvelles versions. Le moteur Wine Mono avec l'implémentation de la plateforme .NET a été mis à jour vers la version 8.1.0.
- Le pilote winewayland.drv utilise la bibliothèque client Wayland comme dépendances externes, ainsi que les bibliothèques xkbcommon et xkbregistry.
- Pour la prise en charge des cartes à puce, la bibliothèque externe PCSClite est utilisée (dans macOS — PCSC).
- La création de fichiers PE sur des plates-formes non-i386 nécessite désormais un compilateur croisé prenant en charge les directives ".seh" pour gérer les exceptions.
Source: opennet.ru
