Version stable de Wine 7.0

Après un an de développement et 30 versions expérimentales, une version stable de l'implémentation ouverte de l'API Win32 a été présentée - Wine 7.0, qui incorporait plus de 9100 64 modifications. Les principales réalisations de la nouvelle version incluent la traduction de la plupart des modules Wine au format PE, la prise en charge des thèmes, l'extension de la pile pour les joysticks et les périphériques d'entrée avec une interface HID et la mise en œuvre de l'architecture WoW32 pour exécuter des programmes 64 bits dans un Environnement XNUMX bits.

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

Innovations clés de Wine 7.0 :

  • Modules au format PE
    • Presque toutes les DLL ont été converties pour utiliser le format de fichier exécutable PE (Portable Executable, utilisé sous Windows) au lieu d'ELF. L'utilisation de PE résout les problèmes liés à la prise en charge de divers schémas de protection contre la copie qui vérifient l'identité des modules système sur le disque et en mémoire.
    • La possibilité d'interagir avec les modules PE avec les bibliothèques Unix à l'aide de l'appel système standard du noyau NT a été implémentée, ce qui vous permet de masquer l'accès au code Unix des débogueurs Windows et de surveiller l'enregistrement des threads.
    • Les DLL intégrées sont désormais chargées uniquement s'il existe un fichier PE correspondant sur le disque, qu'il s'agisse d'une véritable bibliothèque ou d'un stub. Cette modification permet à l'application de toujours voir la liaison correcte aux fichiers PE. Pour désactiver ce comportement, vous pouvez utiliser la variable d'environnement WINEBOOTSTRAPMODE.
  • WoW64
    • L'architecture WoW64 (Windows sur Windows 64 bits) a été implémentée, vous permettant d'exécuter des applications Windows 32 bits dans des processus Unix 64 bits. La prise en charge est implémentée via la connexion d'une couche qui traduit les appels système NT 32 bits en appels 64 bits vers NTDLL.
    • Les couches WoW64 sont préparées pour la plupart des bibliothèques Unix et permettent aux modules PE 32 bits d'accéder aux bibliothèques Unix 64 bits. Une fois tous les modules convertis au format PE, il sera possible d'exécuter des applications Windows 32 bits sans installer de bibliothèques Unix 32 bits.
  • Thèmes
    • Le support thématique a été implémenté. Les thèmes de design « Light », « Blue » et « Classic Blue » sont inclus, qui peuvent être sélectionnés via le configurateur WineCfg.
    • Ajout de la possibilité de personnaliser l'apparence de tous les contrôles de l'interface via des thèmes. L'apparence des éléments est automatiquement mise à jour après avoir modifié le thème de conception.
    • La prise en charge des thèmes a été ajoutée à toutes les applications Wine intégrées. Les applications ont été adaptées aux écrans à haute densité de pixels (High DPI).
  • Sous-système graphique
    • Une nouvelle bibliothèque Win32u a été ajoutée, qui comprend des parties des bibliothèques GDI32 et USER32 liées au traitement graphique et à la gestion des fenêtres au niveau du noyau. À l'avenir, des travaux commenceront sur le portage de composants de pilotes tels que winex32.drv et winemac.drv vers Win11u.
    • Le pilote Vulkan prend en charge la spécification de l'API graphique Vulkan 1.2.201.
    • Prise en charge de la sortie d'objets géométriques hachurés via l'API Direct2D, avec la possibilité de vérifier si un clic réussit (hit-test).
    • L'API Direct2D fournit une prise en charge initiale des effets visuels appliqués à l'aide de l'interface ID2D1Effect.
    • L'API Direct2D a ajouté la prise en charge de l'interface ID2D1MultiThread, qui est utilisée pour organiser un accès exclusif aux ressources dans les applications multithread.
    • L'ensemble de bibliothèques WindowsCodecs prend en charge le décodage des images au format WMP (Windows Media Photo) et l'encodage des images au format DDS (DirectDraw Surface). Nous ne prenons plus en charge l'encodage des images au format ICNS (pour macOS), qui n'est pas pris en charge sous Windows.
  • Direct3D
    • Le nouveau moteur de rendu a été considérablement amélioré, traduisant les appels Direct3D vers l'API graphique Vulkan. Dans la plupart des situations, le niveau de prise en charge de Direct3D 10 et 11 dans le moteur basé sur Vulkan a été mis à parité avec l'ancien moteur basé sur OpenGL. Pour activer le moteur de rendu Vulkan, définissez la variable de registre Direct3D « renderer » sur « vulkan ».
    • De nombreuses fonctionnalités de Direct3D 10 et 11 sont implémentées, notamment les contextes différés, les objets d'état fonctionnant dans le contexte du périphérique, les décalages persistants dans les tampons, la suppression des vues de texture dans le désordre, la copie de données entre ressources dans des formats sans type (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS), etc. .
    • Ajout de la prise en charge des configurations multi-moniteurs, vous permettant de sélectionner un moniteur pour afficher une application Direct3D en mode plein écran.
    • L'API DXGI fournit une correction gamma de l'écran, qui peut être utilisée par les applications basées sur Direct3D 10 et 11 pour modifier la luminosité de l'écran. Activation de la récupération des compteurs de framebuffers virtuels (SwapChain).
    • Direct3D 12 ajoute la prise en charge des signatures racine de la version 1.1.
    • Dans le code de rendu via l'API Vulkan, l'efficacité du traitement des requêtes a été améliorée lorsque le système prend en charge l'extension VK_EXT_host_query_reset.
    • Ajout de la possibilité de générer des framebuffers virtuels (SwapChain) via GDI si OpenGL ou Vulkan ne peuvent pas être utilisés pour l'affichage, par exemple, lors de la sortie vers une fenêtre à partir de différents processus, par exemple dans des programmes basés sur le framework CEF (Chromium Embedded Framework).
    • Lors de l'utilisation du backend du shader GLSL, le modificateur "précis" est assuré pour les instructions du shader.
    • L'API DirectDraw ajoute la prise en charge du rendu 3D dans la mémoire système à l'aide de périphériques logiciels tels que "RGB", "MMX" et "Ramp".
    • Les cartes AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 et NVIDIA GT 630 ont été ajoutées à la base de données des cartes graphiques Direct1030D.
    • La clé « UseGLSL » a été supprimée du registre HKEY_CURRENT_USER\Software\Wine\Direct3D, à la place de laquelle, à partir de Wine 5.0, vous devez utiliser « shader_backend ».
    • Pour prendre en charge Direct3D 12, vous avez désormais besoin d'au moins la version 3 de la bibliothèque vkd1.2d.
  • D3DX
    • L'implémentation de D3DX 10 a amélioré la prise en charge du framework d'effets visuels et ajouté la prise en charge du format d'image Windows Media Photo (JPEG XR).
    • Ajout de fonctions de création de texture fournies dans D3DX10, telles que D3DX10CreateTextureFromMemory().
    • Les interfaces logicielles ID3DX10Sprite et ID3DX10Font ont été partiellement implémentées.
  • Son et vidéo
    • Les modules complémentaires GStreamer pour DirectShow et le framework Media Foundation sont combinés en un seul backend WineGStreamer commun, ce qui devrait simplifier le développement de nouvelles API de décodage de contenu.
    • Basés sur le backend WineGStreamer, les objets Windows Media sont implémentés pour une lecture synchrone et asynchrone.
    • La mise en œuvre du cadre Media Foundation a été encore affinée, la prise en charge de la fonctionnalité IMFPMediaPlayer et de l'allocateur d'échantillons a été ajoutée, et la prise en charge des tampons de rendu EVR et SAR a été améliorée.
    • La bibliothèque wineqtdecoder, qui fournit un décodeur pour le format QuickTime, a été supprimée (tous les codecs utilisent désormais GStreamer).
  • Dispositifs d'entrée
    • La pile pour les périphériques d'entrée prenant en charge le protocole HID (Human Interface Devices) a été considérablement améliorée, offrant des fonctionnalités telles que l'analyse des descripteurs HID, le traitement des messages HID et la fourniture de pilotes mini-HID.
    • Dans les backends du pilote winebus.sys, la traduction des descriptions de périphériques en messages HID a été améliorée.
    • Ajout d'un nouveau backend DirectInput pour les joysticks prenant en charge le protocole HID. La possibilité d'utiliser des effets de feedback dans les joysticks a été implémentée. Panneau de commande du joystick amélioré. Interaction optimisée avec les appareils compatibles XInput. Dans WinMM, la prise en charge du joystick a été déplacée vers DInput, au lieu d'utiliser le backend evdev sous Linux et IOHID sur macOS IOHID. L'ancien pilote de joystick winejoystick.drv a été supprimé.
    • De nouveaux tests ont été ajoutés au module DInput, basés sur l'utilisation de périphériques HID virtuels et ne nécessitant pas de périphérique physique.
  • Texte et polices
    • Ajout de l’objet Font Set à DirectWrite.
    • RichEdit implémente correctement l'interface TextHost.
  • Noyau (interfaces du noyau Windows)
    • Lors de l'exécution d'un fichier exécutable non identifié (tel que « wine foo.msi ») dans Wine, start.exe est désormais appelé, ce qui appelle les gestionnaires associés au type de fichier.
    • Ajout de la prise en charge des mécanismes de synchronisation NtAlertThreadByThreadId et NtWaitForAlertByThreadId, similaires aux futex sous Linux.
    • Ajout de la prise en charge des objets de débogage NT utilisés pour déboguer les fonctions du noyau.
    • Ajout de la prise en charge des clés de registre dynamiques pour enregistrer les données de performances.
  • Exécution C
    • Le runtime C implémente un ensemble complet de fonctions mathématiques, qui sont principalement reprises de la bibliothèque Musl.
    • Toutes les plates-formes CPU fournissent une prise en charge correcte des fonctions à virgule flottante.
  • Fonctionnalités de mise en réseau
    • Mode de compatibilité amélioré pour Internet Explorer 11 (IE11), désormais utilisé par défaut pour le traitement des documents HTML.
    • La bibliothèque mshtml implémente le mode JavaScript ES6 (ECMAScript 2015), qui prend en charge des fonctionnalités telles que l'expression let et l'objet Map.
    • L'installation des packages MSI avec des ajouts au moteur Gecko dans le répertoire de travail de Wine se fait désormais lorsque cela est nécessaire, et non lors d'une mise à jour de Wine.
    • Ajout de la prise en charge du protocole DTLS.
    • Le service NSI (Network Store Interface) a été implémenté, stockant et transmettant des informations sur le routage et les interfaces réseau de l'ordinateur vers d'autres services.
    • Les gestionnaires d'API WinSock tels que setsockopt et getsockopt ont été déplacés vers NTDLL et le pilote afd.sys pour se conformer à l'architecture Windows.
    • Les fichiers de base de données réseau de Wine, tels que /etc/protocols et /etc/networks, sont désormais installés dans le répertoire de travail de Wine, au lieu d'accéder à des bases de données Unix similaires.
  • Plateformes alternatives
    • Ajout de la prise en charge des équipements Apple basés sur les puces M1 ARM (Apple Silicon).
    • La prise en charge des fonctionnalités BCrypt et Secur32 sur macOS nécessite désormais l'installation de la bibliothèque GnuTLS.
    • Les exécutables 32 bits pour les plates-formes ARM sont désormais construits en mode Thumb-2, similaire à Windows. Un préchargeur est utilisé pour charger ces fichiers.
    • Pour les plates-formes ARM 32 bits, la prise en charge des exceptions de déroulement a été implémentée.
    • Pour FreeBSD, le nombre de requêtes prises en charge pour les informations système de bas niveau, telles que l'état de la mémoire et le niveau de charge de la batterie, a été augmenté.
  • Applications et outils de développement intégrés
    • L'utilitaire reg.exe a ajouté la prise en charge des vues de registre 32 et 64 bits. Ajout de la prise en charge de la copie des clés de registre.
    • L'utilitaire WineDump a ajouté la prise en charge du vidage des métadonnées Windows et de l'affichage d'informations détaillées sur les entrées CodeView.
    • Le Wine Debugger (winedbg) offre la possibilité de déboguer des processus 32 bits à partir d'un débogueur 64 bits.
    • La possibilité de charger des bibliothèques intégrées dans des fichiers PE a été ajoutée au compilateur IDL (widl), la prise en charge des attributs et des constructions spécifiques à WinRT a été fournie et une recherche de bibliothèque spécifique à la plate-forme a été implémentée.
  • Système d'assemblage
    • Dans les répertoires spécifiques à l'architecture, les bibliothèques sont désormais enregistrées avec des noms qui reflètent l'architecture et le type d'exécutable, tels que « i386-windows » pour le format PE et « x86_64-unix » pour les bibliothèques Unix, permettant la prise en charge de différentes architectures dans un seul Wine. installation et fournir une compilation croisée de Winelib.
    • Pour définir une option dans les en-têtes des fichiers PE qui contrôle la transition vers l'utilisation de DLL natives, l'indicateur '--prefer-native option' a été ajouté à winebuild (le traitement DLL_WINE_PREATTACH dans DllMain a été arrêté).
    • Ajout de la prise en charge de la version 4 du format de données de débogage Dwarf, qui est désormais utilisé par défaut lors de la création des bibliothèques Wine.
    • Ajout de l'option de build '—enable-build-id' pour enregistrer les identifiants de build uniques dans les fichiers exécutables.
    • Ajout de la prise en charge de l'utilisation du compilateur Clang en mode de compatibilité MSVC.
  • Miscellanea
    • Les noms des répertoires typiques dans le shell utilisateur (Windows Shell) sont donnés au schéma utilisé à partir de Windows Vista, c'est-à-dire Au lieu de « Mes documents », un répertoire « Documents » est désormais créé et la plupart des données sont enregistrées dans le répertoire « AppData ».
    • La prise en charge de la spécification OpenCL 1.2 a été ajoutée à la couche bibliothèque OpenCL.
    • Le pilote WinSpool a ajouté la prise en charge de différentes tailles de page lors de l'impression.
    • Ajout de la prise en charge initiale de MSDASQL, le fournisseur Microsoft OLE DB pour les pilotes ODBC.
    • Le moteur Wine Mono avec l'implémentation de la plateforme .NET a été mis à jour vers la version 7.0.0.
    • Les données Unicode ont été mises à jour vers la spécification Unicode 14.
    • L'arborescence des sources comprend les bibliothèques Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt et Zlib, qui sont compilées au format PE et ne nécessitent pas de version au format Unix. Dans le même temps, ces bibliothèques peuvent également être importées du système pour utiliser des assemblys externes au lieu des options PE intégrées.

Source: opennet.ru

Ajouter un commentaire