AprĂšs un an de dĂ©veloppement et 28 versions expĂ©rimentales, la version stable de l'implĂ©mentation open source de l'API Win32 â , qui intĂšgre plus de 7400 changements. Parmi les rĂ©alisations clĂ©s de cette nouvelle version, on note la livraison de modules Wine au format PE, le support des configurations multi-Ă©crans, une nouvelle implĂ©mentation de l'API sonore XAudio2 et le support de l'API graphique Vulkan 1.1.
Dans Wine, 4869 programmes compatibles Windows (contre 4737 l'annĂ©e derniĂšre), 4136 programmes (4045 l'annĂ©e derniĂšre) fonctionnent parfaitement avec des rĂ©glages supplĂ©mentaires et des DLL externes. Pour 3635 programmes, de petits problĂšmes d'exĂ©cution sont observĂ©s, mais cela n'empĂȘche pas l'utilisation des fonctions principales des applications.
Améliorations clés Wine 5.0 :
- Modules au format PE
- Avec un compilateur MinGW, la plupart des modules Wine sont maintenant compilés au format d'exécutables PE (Portable Executable, utilisé sous Windows) au lieu de ELF. L'utilisation de PE résout les problÚmes de support de différentes schémas de protection contre la copie qui vérifient l'identité des modules systÚme sur le disque et en mémoire;
- Les exécutables PE sont maintenant copiés dans le répertoire ~/$WINEPREFIX au lieu d'utiliser de fausses DLL, ce qui rend l'installation plus similaire à de vraies installations Windows, au prix d'un espace disque supplémentaire;
- Les modules convertis au format PE peuvent utiliser les standard fonctions C et constantes unicode (par exemple, L»abc»);
- Dans Wine, le runtime C a ajouté le support du liaison avec des fichiers binaires compilés dans MinGW, qui est utilisé par défaut lors de la compilation de DLL au lieu du runtime MinGW;
- Sous-systĂšme graphique
- Ajout du support pour le travail avec plusieurs moniteurs et adaptateurs graphiques, y compris la possibilité de modifier dynamiquement les paramÚtres;
- Le driver pour l'API graphique Vulkan a été mis à jour pour se conformer à la spécification Vulkan 1.1.126;
- Dans la bibliothĂšque WindowsCodecs, une fonctionnalitĂ© de conversion de formats raster supplĂ©mentaires a Ă©tĂ© mise en Ćuvre, y compris des formats avec une palette indexĂ©e;
- Direct3D
- Lors de l'exécution d'applications en plein écran, Direct3D permet de désactiver l'économiseur d'écran;
- Dans DXGI (DirectX Graphics Infrastructure), une prise en charge a Ă©tĂ© ajoutĂ©e pour informer l'application de la minimisation de sa fenĂȘtre, permettant Ă l'application de rĂ©duire l'exĂ©cution des opĂ©rations gourmandes en ressources lors de la rĂ©duction de la fenĂȘtre.
- Pour les applications utilisant DXGI, il est dĂ©sormais possible de basculer entre le mode plein Ă©cran et le mode fenĂȘtre Ă l'aide de la combinaison Alt+EntrĂ©e;
- Les capacitĂ©s d'implĂ©mentation de Direct3D 12 ont Ă©tĂ© Ă©largies, notamment avec l'ajout du support pour le basculement entre le mode plein Ă©cran et le mode fenĂȘtre, le changement de modes d'Ă©cran, la sortie avec mise Ă l'Ă©chelle, et la gestion de l'intervalle d'Ă©change de buffers de rendu (swap interval);
- AmĂ©lioration du traitement de diverses situations limites, telles que l'application de valeurs d'entrĂ©e dĂ©passant les plages admissibles pour les tests de transparence et de profondeur, le rendu avec des textures et des buffers rĂ©flĂ©chis, l'utilisation d'objets DirectDraw incorrects. , crĂ©ation de dispositifs Direct3 pour des fenĂȘtres incorrectes, utilisation de zones visibles dont les valeurs minimales des paramĂštres sont Ă©gales aux maximales, etc.
- Dans Direct3D 8 et 9, un suivi plus précis des zones "" des textures chargées est assuré;
- Réduction de la taille de l'espace d'adresses requis lors du chargement de textures 3D compressées par la méthode S3TC (au lieu d'un chargement complet, les textures sont chargées par morceaux).
- Mise en Ćuvre de l'interface pour protĂ©ger les sections critiques dans les applications multi-threadĂ©es;
- Pour les anciennes applications DirectDraw, diverses améliorations et corrections liées au calcul de l'éclairage ont été apportées;
- Des appels supplémentaires ont été implémentés pour obtenir des informations sur les shaders dans l'API ;
- Support ajouté dans wined3d pour basés sur le CPU pour le traitement des ressources compressées;
- La base de données des cartes graphiques reconnues dans Direct3D a été élargie;
- De nouvelles clĂ©s de registre ont Ă©tĂ© ajoutĂ©es dans HKEY_CURRENT_USER\Software\Wine\Direct3D : «shader_backend» (backend pour le travail avec les shaders : «glsl» pour GLSL, «arb» pour les vertex/fragment ARB, et «none» pour dĂ©sactiver la prise en charge des shaders), «strict_shader_math» (0x1 â activer, 0x0 â dĂ©sactiver la conversion des shaders Direct3D). La clĂ© «UseGLSL» a Ă©tĂ© dĂ©clarĂ©e obsolĂšte (il convient d'utiliser «shader_backend»);
- D3DX
- Support implémenté pour le mécanisme de compression des textures 3D S3TC (S3 Texture Compression);
- Implémentations correctes ajoutées pour des opérations telles que le remplissage de textures et les surfaces non mappables (unmappable);
- Diverses améliorations et corrections apportées au framework de création ;
- Noyau (interfaces du noyau Windows)
- La plupart des fonctions utilisées dans Kernel32 ont été déplacées vers
KernelBase, conformĂ©ment aux changements de l'architecture Windows; - PossibilitĂ© de mĂ©langer des DLL 32 bits et 64 bits dans les rĂ©pertoires utilisĂ©s pour le chargement. Les bibliothĂšques non conformes Ă l'architecture actuelle (32/64) sont ignorĂ©es, au cas oĂč une bibliothĂšque correcte serait trouvĂ©e plus loin dans le chemin.
- Pour les pilotes de périphériques, l'émulation des objets noyau a été améliorée.
- Des objets de synchronisation fonctionnant au niveau du noyau ont été implémentés, tels que des spinlocks, des mutex rapides et des variables liées aux ressources.
- Information correcte des applications sur l'état de la batterie.
- La plupart des fonctions utilisées dans Kernel32 ont été déplacées vers
- Interface utilisateur et intégration avec le bureau
- Les fenĂȘtres minimisĂ©es s'affichent dĂ©sormais avec un en-tĂȘte plutĂŽt qu'avec une icĂŽne de style Windows 3.1.
- De nouveaux styles de boutons ajoutés. (bouton avec une liste déroulante d'actions) et (liens dans des boßtes de dialogue utilisés pour passer à l'étape suivante).
- Des liens symboliques ont Ă©tĂ© créés pour les dossiers âDownloadsâ et âTemplatesâ, pointant vers les rĂ©pertoires correspondants dans les systĂšmes Unix.
- Périphériques d'entrée
- L'installation et le chargement des pilotes de périphériques Plug & Play sont assurés au démarrage.
- Amélioration du support des manettes de jeu, y compris le mini-joystick (hat switch), le volant, les pédales d'accélérateur et de frein.
- Le support de l'ancien API Linux pour l'interaction avec les joysticks, utilisé dans les noyaux Linux avant la version 2.2, a été abandonné.
- .NET
- Le moteur Mono a été mis à jour vers la version 4.9.4 et inclut désormais des parties du framework Windows Presentation Foundation (WPF).
- Ajout de la possibilitĂ© d'installer des extensions avec Mono et Gecko dans un rĂ©pertoire commun avec les fichiers placĂ©s dans la hiĂ©rarchie /usr/share/wine au lieu d'ĂȘtre copiĂ©s dans de nouveaux prĂ©fixes.
- Fonctionnalités réseau
- Le moteur de navigateur Wine Gecko, utilisé dans la bibliothÚque MSHTML, a été mis à jour vers la version 2.47.1. La prise en charge des nouvelles API HTML a été implémentée.
- La prise en charge des éléments SVG a été ajoutée à MSHTML.
- Ajout de nombreuses nouvelles fonctionnalités VBScript (par exemple, gestionnaires d'erreurs et d'exceptions, fonctions Hour, Day, Month, String, LBound, RegExp.Replace, RScriptTypeInfo_* et ScriptTypeComp_Bind* etc.).
- La persistance de l'état du code dans VBScript et JScript a été assurée.
- Une implémentation initiale du service HTTP (WinHTTP) et de son API associée (HTTPAPI) a été ajoutée pour les applications clientes et serveurs, envoyant et recevant des demandes via le protocole HTTP.
- La possibilité d'obtenir les paramÚtres de configuration HTTP proxy via DHCP a été implémentée.
- Ajout de la prise en charge du redirectionnement des requĂȘtes d'authentification via le service Microsoft Passport ;
- Cryptographie
- Prise en charge mise en Ćuvre de clĂ©s cryptographiques basĂ©es sur des courbes elliptiques (ECC) lors de l'utilisation de GnuTLS ;
- Ajout de la possibilité d'importer des clés et des certificats à partir de fichiers au format PFX ;
- Ajout de la prise en charge du schéma de génération de clé basé sur le mot de passe PBKDF2 ;
- Texte et polices
- Dans l'implémentation de l'API DirectWrite, prise en charge ajoutée des fonctionnalités OpenType liées à , qui sont activées par défaut pour la fonte Latin, y compris le crantage ;
- Sécurisé le traitement des données de police grùce à la vérification de la validité de différentes tables de données avant leur utilisation ;
- Les interfaces DirectWrite ont été mises à jour pour correspondre au dernier SDK ;
- Son et vidéo
- Nouvelle implémentation de l'API audio , construite sur le projet . L'utilisation de FAudio dans Wine permet d'obtenir une meilleure qualité sonore dans les jeux et d'activer des fonctionnalités telles que le mélange des volumes et des effets sonores avancés ;
- Ajout d'un grand nombre de nouveaux appels dans l'implémentation du cadre Media Foundation, y compris la prise en charge des files d'attente asynchrones intégrées et personnalisées, de l'API Source Reader, de Media Session, etc.
- Le filtre de capture vidéo a été mis à jour pour utiliser l'API v4l2 à la place de l'API v4l1, ce qui a élargi la gamme des caméras prises en charge ;
- Les décodeurs AVI, MPEG-I et WAVE intégrés ont été supprimés, et à la place, GStreamer ou QuickTime sont utilisés ;
- Ajout d'un sous-ensemble des API de configuration VMR7 ;
- Les pilotes audio ont ajouté la prise en charge de l'ajustement du volume des canaux individuels ;
- Internationalisation
- Les tableaux Unicode ont été mis à jour vers la version 12.1.0 ;
- Prise en charge de la normalisation Unicode mise en Ćuvre ;
- Installation automatique de la région géographique (HKEY_CURRENT_USER\Control Panel\International\Geo) basée sur la locale actuelle ;
- RPC/COM
- Prise en charge des structures complexes et des tableaux ajoutée au typelib ;
- Mise en Ćuvre de la bibliothĂšque d'exĂ©cution Windows Script ajoutĂ©e ;
- Mise en Ćuvre de la bibliothĂšque ADO (Microsoft ActiveX Data Objects) ajoutĂ©e ;
- Installateurs
- Prise en charge de la livraison de patchs (Patch Files) mise en Ćuvre pour l'installateur MSI ;
- Dans l'outil WUSA (Windows Update Standalone Installer), il est désormais possible d'installer des mises à jour au format .MSU ;
- Plateforme ARM
- Pour l'architecture ARM64, la prise en charge du déroulement de la pile (stack unwinding) a été ajoutée dans ntdll. Le support de la connexion aux bibliothÚques externes libunwind a été ajouté;
- Pour l'architecture ARM64, le support des proxies sans stub (stubless proxies) pour les interfaces objet a Ă©tĂ© mis en Ćuvre;
- Outils de développement / Winelib
- Ajout de la possibilité d'utiliser le débogueur de Visual Studio pour le débogage à distance des applications exécutées sous Wine;
- La bibliothÚque DBGENG (Debug Engine) a été partiellement implémentée;
- Les fichiers exécutables compilés pour Windows ne dépendent plus de libwine, ce qui permet de les exécuter sous Windows sans dépendances supplémentaires;
- Une option ââsysrootâ a Ă©tĂ© ajoutĂ©e dans le Resource Compiler et l'IDL Compiler pour dĂ©finir le chemin d'emplacement des fichiers d'en-tĂȘte;
- Des options ââtargetâ, ââwine-objdirâ ont Ă©tĂ© ajoutĂ©es Ă winegcc,
ââwinebuildâ et â-fuse-ldâ, simplifiant la configuration de l'environnement pour la compilation croisĂ©e;
- Applications intégrées
- L'outil CHCP pour configuration du codage de la console a été réalisé;
- L'outil MSIDB pour manipuler des bases au format MSI a été réalisé;
- Optimisation des performances
- Différentes fonctions de gestion du temps ont été traduites pour utiliser des fonctions systÚme haute performance de gestion de minuteurs, ce qui a permis de réduire les frais généraux dans le cycle de rendu de nombreux jeux;
- Ajout de la possibilité d'utiliser le FS Ext4 de fonctionnement insensible à la casse;
- Optimisation des performances du traitement de nombreux éléments dans les dialogues de listes sortantes en mode LBS_NODATA;
- Une implémentation plus rapide des verrous SRW (Slim Reader/Writer) pour Linux a été ajoutée, traduite en Futex;
- Dépendances externes
- Un compilateur croisé MinGW-w64 a été utilisé pour la compilation de modules au format PE;
- La réalisation de XAudio2 nécessite la bibliothÚque FAudio;
- Pour la surveillance des modifications de fichiers sur les systĂšmes BSD
la bibliothÚque Inotify a été utilisée; - Pour le traitement des exceptions sur la plateforme ARM64, la bibliothÚque Unwind est nécessaire;
- La bibliothÚque Video4Linux2 est désormais requise à la place de Video4Linux1.
Source : opennet.ru
