Version stable de Wine 9.0

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.

Wine a confirmé le fonctionnement complet de 5336 (il y a un an 5266, il y a deux ans 5156, il y a trois ans 5049) programmes pour Windows, 4397 autres programmes (il y a un an 4370, il y a deux ans 4312, il y a trois ans 4227) fonctionnent parfaitement avec paramètres supplémentaires et DLL externe. Les programmes 3943 (il y a un an 3888, il y a deux ans 3813, il y a trois ans 3703) présentent des problèmes de fonctionnement mineurs qui n'interfèrent pas avec l'utilisation des fonctions principales des applications.

Innovations clés de Wine 9.0 :

  • Ajout du pilote winewayland.drv, vous permettant d'utiliser Wine dans des environnements basés sur le protocole Wayland sans utiliser les composants XWayland et X11. Le développement vise à fournir un environnement Wayland pur avec prise en charge de l'exécution d'applications Windows qui ne nécessitent pas l'installation de packages liés à X11, ce qui permet d'améliorer les performances et la réactivité des jeux en éliminant les couches inutiles. L'utilisation d'un environnement Wayland pur pour Wine élimine également les problèmes de sécurité inhérents à X11 (par exemple, des jeux X11 non fiables peuvent espionner d'autres applications puisque le protocole X11 permet l'accès à tous les événements d'entrée et à la substitution de fausses frappes).

    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 (Windows-on-Windows 64 bits), qui permet d'exécuter des applications Windows 32 bits sur des systèmes Unix 64 bits, s'est poursuivi. Tous les modules qui accèdent aux bibliothèques Unix utilisent les appels système WoW64 pour permettre aux modules au format PE 32 bits d'accéder aux bibliothèques Unix 64 bits.

    Amélioration du nouveau mode de lancement de WoW64, qui exécute du code 32 bits dans un processus 64 bits (dans l'ancien mode WoW64, les applications 32 bits s'exécutaient dans des processus Unix 32 bits). Ajout de la prise en charge de l'utilisation du nouveau mode WoW64 sur la plateforme macOS. Étant donné que le nouveau mode WoW64 présente certaines lacunes, telles que le manque de prise en charge du mode 16 bits et des performances OpenGL réduites en raison du manque de prise en charge de l'extension ARB_buffer_storage, il n'est pas encore activé par défaut et nécessite une construction avec l'option « -enable- archs=i386,x86_64 " dans le script de configuration.

  • Ajout de la possibilité d'exécuter des exécutables Windows existants sur des systèmes à architecture ARM64. La possibilité de créer Wine pour l'ARM64EC ABI (compatible avec l'émulation ARM64) et la prise en charge du chargement des modules ARM64EC ont été implémentées, utilisées pour simplifier le portage d'applications initialement écrites pour l'architecture x64_86 vers les systèmes ARM64 en offrant la possibilité d'exécuter des modules individuels avec x64_86. code dans l’environnement ARM64 à l’aide d’un émulateur. Ajout de la prise en charge du format de fichier ARM64X PE, qui permet de charger un seul fichier exécutable dans les processus x64/Arm64EC et ARM64. Une interface pour émuler les systèmes x32 86 bits a été implémentée, mais la bibliothèque avec l'émulateur n'est pas encore incluse dans le package Wine principal (vous pouvez utiliser l'émulateur FEX externe pour exécuter du code x86 dans un environnement ARM64).
  • Sous-système graphique
    • Le pilote PostScript a été repensé pour prendre en charge les fichiers spool au format Windows qui stockent les 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.
    • La prise en charge du chargement des polices sonores (SoundFont - formats de synthèse basés sur des échantillons utilisés pour lire des fichiers MIDI) aux formats DLS1 et DLS2, ainsi qu'au format SF2 utilisé sous Linux, a été implémentée.
    • 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
    • Un composant DMO (DirectX Media Object) avec un décodeur au format WMV (Windows Media Video) a été implémenté.
    • 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
    • Prise en charge étendue de l'IME (éditeurs de méthodes d'entrée). Des travaux ont été effectués pour garantir la compatibilité avec les implémentations natives de Windows IME et améliorer l'intégration 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)
    • La version par défaut de Windows publiée est 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.
    • La possibilité d'exposer les anciennes versions de Windows (pré-XP) sur les plates-formes 64 bits a été ajoutée à l'interface WineCfg, ce qui vous permet d'exécuter des applications héritées 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 les informations de la base de données WMI (Windows Management Instrumentation).
    • 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 offre la possibilité d'afficher le contenu des fichiers de registre Windows (format REGF), ainsi que d'afficher les 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 prendre en charge les cartes à puce, la bibliothèque externe PCSClite (sous macOS - PCSC) est utilisée.
    • 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

Ajouter un commentaire