AprĂšs une annĂ©e de dĂ©veloppement et 25 versions expĂ©rimentales, une version stable de l'implĂ©mentation open source de l'API Win32 â Wine 11.0 â a Ă©tĂ© prĂ©sentĂ©e, incorporant plus de 6300 modifications et 600 corrections de bogues. Parmi les rĂ©alisations clĂ©s de cette nouvelle version, on note le support complet de NTSYNC, l'implĂ©mentation du mĂ©canisme Reparse Point et l'utilisation d'une nouvelle version de l'architecture WoW64.
Wine prend en charge intégralement 5419 programmes pour Windows (contre 5372 l'année précédente, 5336 il y a deux ans et 5266 il y a trois ans), tandis que 4500 programmes (4435 l'année précédente, 4397 il y a deux ans, 4370 il y a trois ans) fonctionnent trÚs bien avec des configurations supplémentaires et des DLL externes. Pour 4086 programmes (4020 l'année précédente, 3943 il y a deux ans, 3888 il y a trois ans), des problÚmes mineurs de fonctionnement sont observés, mais cela n'entrave pas l'utilisation des fonctionnalités principales des applications.
Les nouveautés clés de Wine 11.0 :
- Support complet du pilote ntsync, permettant d'améliorer considérablement la performance des jeux Windows exécutés avec Wine. Ce pilote fait partie du noyau Linux depuis la version 6.14 et implémente un périphérique symbolique /dev/ntsync ainsi qu'un ensemble de primitives de synchronisation utilisées dans le noyau Windows NT. Un gain de performance significatif est obtenu grùce à l'élimination des frais généraux associés à l'utilisation de RPC en espace utilisateur.
- Ajout de la possibilité de configurer les priorités des threads sous Linux et macOS.
- Dans ntdll, l'API de synchronisation « Synchronization barriers » a Ă©tĂ© ajoutĂ©e, permettant de suspendre l'exĂ©cution de plusieurs threads jusqu'Ă ce qu'un certain point d'exĂ©cution soit atteint dans tous les threads (par exemple, attendre que tous les threads atteignent un certain stade lors de l'exĂ©cution parallĂšle du mĂȘme code).
- La nouvelle implĂ©mentation de la couche WoW64 (Windows-on-Windows 64 bits), permettant d'exĂ©cuter des applications Windows 32 bits sur des systĂšmes Unix 64 bits, est dĂ©sormais entiĂšrement prise en charge. Contrairement Ă l'ancienne implĂ©mentation de WoW64, oĂč les applications 32 bits Ă©taient exĂ©cutĂ©es dans des processus Unix 32 bits, le nouveau WoW64 permet l'exĂ©cution de code 32 bits Ă l'intĂ©rieur d'un processus 64 bits. Le support de l'exĂ©cution d'applications 16 bits en mode WoW64 a Ă©galement Ă©tĂ© rĂ©alisĂ©.
Dans tous les modules qui accÚdent aux bibliothÚques Unix, des convertisseurs d'appels systÚme WoW64 (thunk) sont utilisés, permettant aux modules 32 bits au format PE d'accéder aux bibliothÚques Unix 64 bits. La possibilité de lancer d'anciennes installations WoW64 dans un nouveau mode a été ajoutée en définissant la variable d'environnement « WINEARCH=wow64 ». Les préfixes 32 bits, créés en définissant WINEARCH=win32, sont désormais obsolÚtes et ne sont pas pris en charge dans le nouveau mode WoW64. Le chargeur wine64 distinct a été supprimé et remplacé par un chargeur universel qui détermine le mode en fonction de l'architecture du fichier exécuté.
- Noyau (interfaces du noyau Windows)
- Un mécanisme de Reparse Point a été implémenté, permettant d'attacher des données supplémentaires aux fichiers et répertoires, identifiables par des étiquettes. Les types de Reparse Point tels que les symlinks et les points de montage sont pris en charge.
- Pour améliorer les performances de suivi des opérations d'écriture en mémoire, le mécanisme UFFD (userfaultfd) a été activé, permettant de créer des gestionnaires pour les accÚs à des pages mémoire non allouées (page faults) dans l'espace utilisateur. Dans des tests réalisés, l'utilisation de UFFD a permis de réduire le temps de chargement des niveaux du jeu « Streets of Rage 4 » de 6-8 secondes à 1,5-2 secondes, correspondant aux performances sur la plateforme Windows.
- Les numéros d'appels systÚme NT identiques aux derniÚres versions de Windows sont maintenant utilisés, ce qui est nécessaire pour prendre en charge les applications utilisant des numéros d'appels systÚme codés en dur.
- Sur les systÚmes ARM64, il est désormais possible de simuler des pages mémoire de 4K dans des environnements avec des noyaux Linux utilisant des pages mémoire plus grandes (16K ou 64K). La simulation permet de lancer des applications simples, tandis que pour des programmes plus complexes, l'utilisation de noyaux Linux avec des pages mémoire de 4 kilooctets est recommandée.
- Sous-systĂšme graphique
- Sur les systÚmes X11 (winex11), un backend de rendu utilisant EGL est par défaut activé pour OpenGL. Le backend GLX est déclaré obsolÚte mais reste disponible en tant que solution de secours et est utilisé en l'absence d'EGL.
- Un support initial des objets D3DKMT a Ă©tĂ© ajoutĂ©, fournissant un accĂšs bas niveau aux dispositifs graphiques depuis l'espace utilisateur. Les extensions Vulkan VK_KHR_external_memory_win32, VK_KHR_external_semaphore_win32, VK_KHR_external_fence_win32 et VK_KHR_win32_keyed_mutex ont Ă©tĂ© mises en Ćuvre.
- En mode WoW64 (Windows sur Windows 64 bits), la prise en charge du mappage de la mĂ©moire pour OpenGL a Ă©tĂ© mise en Ćuvre via l'API Vulkan, permettant d'accĂ©lĂ©rer le fonctionnement des applications OpenGL 32 bits sous Wine.
- L'émulation du tampon d'affichage (front buffer) pour OpenGL a été réalisée sur des plateformes sans prise en charge intégrée.
- Le pilote pour l'API graphique Vulkan a été mis à jour avec le support de la spécification Vulkan 1.4.335.
- Dans le jeu de bibliothÚques WindowsCodecs, la prise en charge des métadonnées dans les fichiers d'images a été étendue, ainsi que la conversion entre les formats de couleur entiers et les formats à virgule flottante.
- La dépendance à la bibliothÚque OSMesa (Off-screen Mesa) a été supprimée. Il est désormais possible de dessiner des bitmap via OpenGL en utilisant le runtime OpenGL accéléré par matériel.
- Intégration avec le bureau
- Dans le pilote winewayland.drv, qui permet l'utilisation de Wine dans des environnements basĂ©s sur le protocole Wayland sans utiliser XWayland et les composants X11, la prise en charge du presse-papiers, des mĂ©thodes d'entrĂ©e, des fenĂȘtres non rectangulaires et de la transparence a Ă©tĂ© mise en Ćuvre.
- L'intĂ©gration avec X11 a Ă©tĂ© amĂ©liorĂ©e : les demandes d'activation des fenĂȘtres sont envoyĂ©es au gestionnaire de fenĂȘtres et le protocole EWMH est utilisĂ© pour synchroniser l'Ă©tat des fenĂȘtres actives entre X11 et Win32.
- La prise en charge du mode plein Ă©cran exclusif a Ă©tĂ© mise en Ćuvre. L'assistance pour le mode plein Ă©cran dans D3D a Ă©tĂ© amĂ©liorĂ©e et le fonctionnement des anciens jeux basĂ©s sur DDraw a Ă©tĂ© optimisĂ©.
- Les performances de certaines fonctions liĂ©es aux fenĂȘtres ont Ă©tĂ© amĂ©liorĂ©es. La mĂ©moire partagĂ©e a Ă©tĂ© utilisĂ©e pour l'interaction entre les processus.
- Direct3D
- Direct3D 11 a ajoutĂ© la prise en charge de l'accĂ©lĂ©ration matĂ©rielle pour le dĂ©codage vidĂ©o au format H.264, mise en Ćuvre avec l'API graphique Vulkan.
- Direct3D 11 a introduit le support de la minmax-filtering pour les textures, utilisant l'extension OpenGL GL_ARB_texture_filter_minmax ou l'extension Vulkan VK_EXT_sampler_filter_minmax.
- Direct3D 11 a implémenté des fonctions pour le chargement de textures.
- Une grande portion des capacitĂ©s de Direct3D pour le rendu via Vulkan a Ă©tĂ© mise en Ćuvre, telles que le mĂ©lange de sommets, lâombrage plat, les plans de dĂ©coupe personnalisĂ©s et divers formats de ressources.
- Dans la copie intégrée de vkd3d-shader, la prise en charge des modÚles de shaders 1, 2 et 3 a été améliorée.
- Dans la méthode D3DXSaveSurfaceToFileInMemory, le support des images PNG, JPEG et BMP a été ajouté.
- Direct3D 10 et 11 ont mis en Ćuvre la prise en charge de la compression et de la dĂ©compression des formats BC4 et BC5, ainsi que la gĂ©nĂ©ration de niveaux MIP (MipMap) lors du chargement des textures.
- Les mĂ©thodes ID3DXEffect::SetRawValue() et ID3DXSkinInfo::UpdateSkinnedMesh() ont Ă©tĂ© mises en Ćuvre.
- Périphériques d'entrée
- La compatibilité avec les manettes est améliorée grùce à l'utilisation du backend hidraw.
- Le support de l'effet de retour de force (Force feedback) est amélioré lors de l'utilisation de volants de jeu et de manettes.
- Le support des manettes dans l'API Windows.Gaming.Input et avec le backend evdev a été amélioré.
- Un onglet pour configurer l'API Windows.Gaming.Input a été ajouté dans l'applet de gestion des contrÎleurs de jeu.
- La compatibilité de DirectInput avec les anciens jeux a été améliorée.
- Bluetooth
- Le pilote Bluetooth a été mis à jour pour inclure la possibilité de scanner, de configurer la détection et de coupler des dispositifs.
- Ajout de la prise en charge des services Bluetooth Low Energy.
- Les applications ont désormais la possibilité de créer des connexions RFCOMM à bas niveau avec des dispositifs externes en utilisant l'API Winsock.
- Support des scanners.
- Le support de l'API TWAIN 2.0, permettant d'accéder aux scanners depuis des applications 64 bits, a été implémenté.
- Le support du composant DAT_IMAGENATIVEXFER pour transfĂ©rer les images du scanner vers l'application a Ă©tĂ© mis en Ćuvre.
- La sauvegarde du scanner sélectionné et des paramÚtres dans le registre a été garantie.
- Le support de la numérisation multi-page et de l'alimentation automatique de documents a été ajouté.
- Le blocage de l'application lors de l'appel de l'interface de numĂ©risation a Ă©tĂ© arrĂȘtĂ©.
- Le support pour le chargement de pilotes Windows natifs pour les scanners a été ajouté.
- Internationalisation
- La génération de la base de données de localisations au format locale.nls à partir de la base de données Unicode CLDR (Unicode Common Locale Data Repository) version 48 a été assurée. Le support de localisations supplémentaires 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 et suz-Sunu-NP a été ajouté.
- Les tables des caractÚres Unicode ont été mises à jour vers la version 17.0.0. La base de données des fuseaux horaires a été mise à jour.
- Fonctionnalités réseau
- Dans le moteur MSHTML en mode conformitĂ© aux normes, le travail avec les attributs des Ă©lĂ©ments comme de vĂ©ritables nĆuds DOM a Ă©tĂ© assurĂ©. Les objets DOMParser, XDomainRequest et msCrypto ont Ă©tĂ© mis en Ćuvre.
- Le support des tableaux typés a été ajouté dans JavaScript.
- Une commande ping a Ă©tĂ© mise en Ćuvre pour ICMPv6.
- BD
- Le support de l'enregistrement des modifications dans la base de donnĂ©es a Ă©tĂ© ajoutĂ© Ă la bibliothĂšque MSADO (ActiveX Data Objects). La plupart des fonctions de l'objet Recordset ont Ă©tĂ© mises en Ćuvre.
- Dans la bibliothÚque odbc32, le support des pilotes ANSI win32 non conçus pour travailler avec Unicode a été amélioré. Les fonctions SQLDriverConnectA(), SQLSpecialColumnsW(), SQLGetInfoW(), SQLGetInfoW(), SQLStatisticsW() et QLColumnsW() ont été implémentées.
- Applications intégrées
- Un onglet pour configurer le périphérique MIDI par défaut a été ajouté dans WineCfg.
- Dans l'outil cmd, l'autocomplĂ©tion des noms de fichiers a Ă©tĂ© mise en Ćuvre en mode d'interaction, avec un support ajoutĂ© pour des instructions complexes et une commande « mklink /j » pour crĂ©er un Reparse Point.
- Dans l'outil conhost (Console Hosting), le support de l'historique via les touches F1 et F3 a été ajouté.
- Les commandes timeout, runas et subst ont Ă©tĂ© mises en Ćuvre.
- Dans l'outil find, des options « /c » pour afficher le nombre de correspondances et /i pour des correspondances sans distinction de casse ont été ajoutées.
- L'outil whoami a maintenant la possibilité de configurer le format de sortie.
- Divers
- L'implémentation du langage de description d'interface WIDL (Wine Interface Definition Language) prend désormais en charge la génération de métadonnées Windows Runtime (WinRT). La génération et l'installation de fichiers WinMD (Windows Metadata) pour l'API WinRT (Windows Runtime) ont été assurées.
- Dans l'outil winedump, le support du dump des ressources MUI, des numéros des appels systÚmes, des modules NE intégrés et des grands fichiers PDB (> 4 Go) a été ajouté.
- Le refactoring de l'implémentation de Common Control a été effectué, la bibliothÚque COMCTL32 a été divisée en modules distincts pour les versions 5 et 6.
- Dans BCrypt, le support de la norme de dérivation de clé PBKDF2 a été ajouté.
- Le support pour les répertoires UserProgramFiles, AccountPictures et Screenshots a été ajouté.
- Les bibliothÚques LLVM Compiler-RT 8.0.1 et TomCrypt 1.18.2 ont été intégrées. La bibliothÚque HwLoc a été utilisée pour déterminer le CPU sur la plateforme FreeBSD.
- Les composants 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, LibXslt 1.1.43 ont été mis à jour vers de nouvelles versions.
Source : opennet.ru
