Après un an de développement et 29 versions expérimentales, une version stable de l'implémentation ouverte de l'API Win32 - Wine 10.0, qui incorporait plus de 6000 64 modifications, a été présentée. Les principales réalisations de la nouvelle version incluent la prise en charge complète de l'architecture ARM1.4EC, la mise à l'échelle sur les écrans à haute densité de pixels, l'inclusion du pilote Wayland par défaut, la mise en œuvre de panneaux pour configurer l'écran et le joystick, un backend multimédia alternatif basé sur FFmpeg, Bluetooth pilote, prise en charge de Vulkan XNUMX, capacité d'émulation pour changer de mode vidéo.
Il a été confirmé que 5372 programmes fonctionnent correctement dans Wine. Windows 5 372 programmes (il y a un an, 5 336 il y a deux ans, 5 266 il y a trois ans) et 4 500 autres (4 435 il y a un an, 4 397 il y a deux ans, 4 370 il y a trois ans) fonctionnent correctement avec des paramètres supplémentaires et des DLL externes. 4 086 programmes (4 020 il y a un an, 3 943 il y a deux ans, 3 888 il y a trois ans) présentent des problèmes mineurs qui n'affectent pas le fonctionnement de base de l'application.
Innovations clés de Wine 10.0 :
- ARM64
- Une prise en charge complète est fournie pour l'architecture ARM64EC (ARM64 Emulation Compatible), dont le niveau de prise en charge dans Wine a atteint la parité avec l'architecture ARM64. L'architecture ARM64EC est conçue pour simplifier le portage d'applications initialement écrites pour les systèmes x64_86 vers les systèmes ARM64 et permet à des modules de code x64_86 individuels de s'exécuter dans l'environnement ARM64 à l'aide d'un émulateur.
- Une prise en charge complète a été implémentée pour le format de fichier ARM64X PE, ce qui vous permet de combiner le code des architectures ARM64EC et ARM64 dans un seul fichier exécutable. Pour construire Wine au format ARM64X, vous devez installer LLVM depuis Git (les fonctionnalités nécessaires seront incluses dans la version LLVM 20) et lors de l'exécution du script « configure », spécifier l'option « -enable-archs=arm64ec,aarch64 ». .
- Une interface pour émuler les systèmes x64 86 bits a été implémentée. Lors de l'utilisation d'ARM64EC, Wine lui-même s'exécute tel quel et l'émulation n'est appliquée qu'au code d'application x86-64. La bibliothèque avec l'émulateur n'est pas encore incluse dans le package Wine principal, mais pour exécuter du code x86-64 dans l'environnement ARM64, vous pouvez utiliser l'émulateur FEX externe construit avec le support ARM64EC.
- La prise en charge d'ARM64 nécessite que le système utilise des pages de mémoire de 4 Ko, comme l'exige l'ABI. Windows (exécution dans des environnements avec des noyaux) LinuxL'utilisation de pages mémoire de 16 Ko ou 64 Ko n'est pas encore prise en charge.
- Sous-système graphique
- Mise à l'échelle plus précise sur les écrans à haute densité de pixels (High-DPI). La prise en charge du mode DPI Awareness a été prévue pour organiser l'affichage des applications sur des écrans à haute densité de pixels, en tenant compte si l'application prend en charge ou non l'adaptation aux changements DPI (les applications qui ne prennent pas en compte le DPI sont mises à l'échelle automatiquement). Ajout d'options pour remplacer la prise en charge High-DPI pour des applications individuelles ou des préfixes Wine.
- La prise en charge de la spécification Vulkan 1.4 a été ajoutée au pilote de l'API graphique Vulkan (Vulkan 9.0 était pris en charge dans Wine 1.3.272). Ajout de la prise en charge des extensions Vulkan pour l'encodage et le décodage vidéo.
- Lors de l'utilisation du backend X11, la possibilité de restituer les fenêtres enfants de Vulkan pour les applications qui utilisent de telles fenêtres pour afficher du contenu 3D a été implémentée (auparavant, une telle fonctionnalité n'était disponible que pour OpenGL).
- La prise en charge du mécanisme de liaison des polices a été ajoutée à la bibliothèque GdiPlus, ce qui vous permet d'utiliser plusieurs polices lors de l'affichage du texte s'il n'y a pas de polices couvrant séparément tous les caractères trouvés dans le texte.
- Wayland
- La configuration par défaut inclut le pilote winewayland.drv, qui permet à Wine de fonctionner dans les environnements Wayland sans utiliser les composants XWayland ou X11. Wine lance les applications par défaut directement sur Wayland uniquement si XWayland est indisponible ; sinon, XWayland est le lanceur privilégié. Pour forcer l’utilisation de Wayland, vous pouvez utiliser la variable d’environnement DISPLAY ou ajouter une clé de registre en créant un fichier .reg. Windows Éditeur du Registre version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] « Graphics » = « wayland » et appliquez la modification avec la commande : $ WINEPREFIX = /chemin/vers/préfixe wine regedit /chemin/vers/fichier.reg
- Ajout de la prise en charge d'OpenGL et des tampons de pixels (pBuffer) au pilote winewayland.drv.
- Problèmes résolus avec le positionnement des fenêtres contextuelles dans les environnements basés sur Wayland.
- Lors de l'utilisation de Wayland, la prise en charge de la répétition automatique des pressions tout en maintenant les touches enfoncées est implémentée.
- Intégration de bureau
- Ajout d'un mécanisme d'émulation expérimental de « modesetting » qui vous permet d'émuler le changement de mode vidéo sans réellement modifier les paramètres de l'écran. La visibilité du changement de résolution d'écran sans changer de mode vidéo est créée en agrandissant et en mettant à l'échelle les fenêtres.
- Une nouvelle applet Desktop Control Panel (desk.cpl) a été ajoutée avec la mise en place d'une interface de gestion des paramètres d'affichage (par exemple, vous pouvez modifier la résolution virtuelle du bureau ou configurer des paramètres d'affichage émulés).
- Ajout de la possibilité de réinitialiser les paramètres de l'écran aux valeurs par défaut s'il est impossible de restaurer l'état après un crash de processus.
- Ajout de la possibilité de désactiver l'affichage des icônes dans la barre d'état système (dans « HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" devrait spécifier "NoTrayItemsDisplay=1").
- Ajout de la prise en charge de la désactivation des shells (lanceur de shell) en mode bureau (dans « HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" devrait spécifier "NoDesktop=1").
- Direct3D
- Le rendu avec OpenGL nécessite désormais la prise en charge de GLSL 1.20, ainsi que des extensions EXT_framebuffer_object et ARB_texture_non_power_of_two. La prise en charge de l’ancien backend du shader ARB et du paramètre OffscreenRenderingMode a été interrompue.
- Pour Direct3D 9 et versions antérieures, un pipeline graphique à fonctions fixes a été ajouté (l'ancien Direct3D ne fournissait que des opérations graphiques prédéfinies qui ne pouvaient pas être modifiées), implémenté à l'aide du langage de shader HLSL et permettant l'émulation de fonctions fixes lors du rendu via l'API Vulkan ou OpenGL.
- Le rendu avec Vulkan utilise les extensions Vulkan pour modifier dynamiquement l'état du pipeline graphique, réduisant ainsi le bégaiement dans les jeux.
- Ajout d'un backend glsl-vkd3d alternatif pour les shaders GLSL, en utilisant vkd3d-shader.
- Fourniture d'un support initial pour la compilation d'effets Direct3D à l'aide de vkd3d-shader.
- La bibliothèque D3DX9 implémente la possibilité de générer des textures MIP (MipMap) lors du chargement de textures volumétriques. Ajout de la prise en charge des formats de représentation des couleurs RVBA 64 bpp et RVB 48 bpp dans les images PNG, ainsi que des formats X8L8V8U8, A2W10V10U10, A8P8, V16U16 et Q16W16V16U16.
- Son et vidéo
- Comme alternative au backend basé sur GStreamer, un nouveau backend multimédia a été implémenté, basé sur l'utilisation de FFmpeg et adapté à l'exécution du framework Media Foundation. Pour activer un backend alternatif, vous devez spécifier « DisableGstByteStreamHandler=1 » dans la section du registre « HKCU\Software\Wine\MediaFoundation ».
- L'implémentation de l'API Media Foundation a été améliorée pour mieux s'adapter aux applications qui dépendent des composants de démultiplexage et de décodage.
- L'API DirectMusic a ajouté la prise en charge du chargement de fichiers MIDI.
- Dispositifs d'entrée
- Ajout de la version initiale du pilote Bluetooth.
- Ajout de l'applet du panneau de commande du joystick (joy.cpl) avec implémentation des paramètres du joystick.
- Des améliorations ont été apportées aux périphériques de pointage (pavés tactiles, souris) utilisant le protocole HID (Human Interface Device). Le pilote mouhid.sys pour les périphériques HID a été ajouté. L'analyse correcte des périphériques d'entrée composites a été implémentée et les informations les concernant sont désormais transmises à Windows-applications, en tant qu'appareils distincts.
- Pour le backend X11, la prise en charge des écrans tactiles a été ajoutée et la possibilité d'utiliser le mode multi-touch via le traitement des messages WM_POINTER* (WM_POINTERENTER, WM_POINTERLEAVE, etc.) a été implémentée.
- Implémentation du placement de certaines structures internes de la bibliothèque user32 dans la mémoire partagée, ce qui a augmenté les performances et réduit la charge sur Wine Server.
- Winex11 a ajouté la prise en charge du traitement des événements XInput2 par rapport à des fenêtres individuelles.
- Implémentation d'un support correct pour les claviers avec la disposition Dvorak.
- Noyau (interfaces du noyau) Windows)
- Ajout de la prise en charge de l'élévation des privilèges des processus (un processus exécuté initialement en tant qu'utilisateur standard peut se voir accorder des privilèges d'administrateur). Lors de la création de processus serveur (serveur d'action msi), ainsi que de processus qui appellent les fonctions RtlCreateUserProcess() et CreateProcessInternal(), un jeton d'administrateur limité est activé par défaut.
- Lors de l'obtention d'informations sur les étiquettes de disque, dans la mesure du possible, l'accès aux services système via DBus est désormais utilisé, au lieu de tenter d'accéder directement au périphérique.
- Le mécanisme de communication interprocessus (IPC) unidirectionnel de Mailslots est désormais implémenté directement dans le serveur Wine, permettant une prise en charge sémantique complète. Windows.
- Implémentation de l'attente des événements du port série en mode asynchrone.
- Ajout d'une prise en charge complète des extensions de processeur XSTATE dans les contextes de thread, permettant l'utilisation de nouvelles extensions vectorielles telles que AVX-512.
- Applications embarquées
- Le moteur de traitement des données d'entrée utilisé dans l'interpréteur de commandes cmd.exe a été réécrit. Ajout de la prise en charge des opérations « || » dans cmd.exe Et "&&".
- L'utilitaire findstr a ajouté la prise en charge des expressions régulières et des recherches insensibles à la casse.
- La possibilité d'enregistrer des modules ARM32EC a été ajoutée aux utilitaires regsvr32 et rundll64.
- Utilitaires ajoutés : sort pour trier les données d'entrée, fc pour comparer les fichiers et où pour rechercher des fichiers.
- L'application wmic implémente un mode de fonctionnement interactif.
- L'Explorateur a ajouté une prise en charge facultative pour le menu Démarrer et la barre d'outils. Activation du lancement d'explorer.exe avec des droits d'accès réduits.
- Outils de développement
- Ajout de l'option "-marm64x" à winebuild pour générer des bibliothèques hybrides ARM64X.
- Ajout de l'option "-marm64x" à winegcc pour permettre la construction pour ARM64X.
- Les fichiers générés à l'aide du langage IDL (Interface Definition Language) utilisent des composants qui prennent entièrement en charge l'exécution en mode interprété.
- La prise en charge de la génération de bibliothèques de types (TypeLib) dans l'ancien format (SLTG) a été ajoutée au compilateur IDL (Interface Definition Language).
- L'utilitaire winedump a ajouté la prise en charge de l'enregistrement des sauvegardes des tables minidump, des informations sur les exceptions C++ et des ressources typelib.
- Miscellanea
- Prise en charge améliorée du protocole d'échange de clés Diffie-Hellman (DH). Ajout de la possibilité de configurer et de recevoir des paramètres DH. Implémentation de gestionnaires pour créer des paires de clés publiques et privées.
- L'utilisation du remplissage incrémentiel OAEP (Optimal Aometric Encryption Padding) avec l'algorithme RSA est fournie.
- L'API DirectPlay prend en charge les sessions réseau.
- Gestion améliorée des états d'entrée/sortie asynchrones en mode WoW64 (64 bits) Windows-au-Windows), ce qui vous permet d'exécuter des programmes 32 bits Windows-applications sur systèmes Unix 64 bits.
- Ajout de la prise en charge du chargement des pilotes ODBC pour les SGBD compilés pour Windows.
- Pour la plate-forme ARM, la prise en charge complète des exceptions RPC/COM, C++ RTTI (Run-Time Type Information) et C++ est implémentée.
- Dans le runtime C, les fonctions ANSI implémentent la prise en charge du codage UTF-8.
- Les capacités du moteur MSHTML ont été étendues. Ajout de la prise en charge des prototypes et des constructeurs d'objets. Une nouvelle interface de liaison d'objets pour MSHTML a été ajoutée au moteur JavaScript. Les fonctions intégrées MSHTML ont été converties en objets JavaScript valides. Amélioration du garbage collection JavaScript pour couvrir tous les contextes d'exécution de script dans un thread. Ajout de la prise en charge des objets JavaScript ArrayBuffer et DataView.
- La prise en charge de l'analyse statique à l'aide des rapports de test Clang et JUnit a été ajoutée au système d'intégration continue basé sur Gitlab.
- La bibliothèque Capstone 5.0.3 est intégrée au package, grâce à laquelle le désassemblage est implémenté dans le débogueur WineDb.
- Composants mis à jour vers les nouvelles versions : Vkd3d 1.14, Faudio 24.10, FluidSynth 2.4.0, LDAP 2.5.18, LCMS2 2.16, LibJpeg 9f, LibMPG123 1.32.9, LibPng 1.6.44, LibTiff 4.7.0, LibXml2 2.12.8, LibXslt 1.1.42 et Zlib 1.3.1.
Source: opennet.ru
