Wine, la couche de compatibilité Windows, atteint la version 5.0 sur Android

Wine est une couche de compatibilité Windows permettant aux utilisateurs d'exécuter des applications Windows sur d'autres systèmes d'exploitation. Wine pour Android a maintenant atteint la version 5.0 – jetez-y un œil !

L'écosystème des applications Android a régulièrement évolué au fil des années d'existence d'Android, alimenté par l'adoption constante du mobile comme principale interaction informatique pour la plupart des gens. De nombreux utilisateurs se sont tournés vers un mode de vie exclusivement mobile, car les applications et l'écosystème d'applications sur mobile ont réussi à répondre à leurs besoins particuliers. Mais si jamais vous aviez besoin d’une application de bureau sans avoir accès à un ordinateur de bureau, que feriez-vous? C'est là qu'intervient Wine, une couche de compatibilité Windows qui permet aux utilisateurs d'exécuter des applications Windows complètes sur différents systèmes d'exploitation. Wine pour Android a maintenant atteint la v5.0, rassemblant l'équivalent d'un an d'efforts de développement de la part de l'équipe.

Wine est une couche de compatibilité gratuite et open source pour Windows, visant à permettre aux programmes informatiques développés pour Windows de s'exécuter sur d'autres systèmes d'exploitation. Wine pour Android apporte Wine sur Android, évidemment. Wine n'est pas un émulateur (qui est en fait un backronym récursif pour le nom), il ne peut donc fonctionner que versions d'applications spécifiques à l'architecture - la version ARM de Wine pour Android exécutera uniquement les applications ARM, et non x86.

Les points forts de la version stable de Wine 5.0 incluent la prise en charge multi-moniteurs et la prise en charge de Vulkan 1.1. Le journal des modifications complet pour la mise à jour est le suivant :

Journal des modifications de Wine 5.0 :

  • Modules PE :
    • La plupart des modules sont construits au format PE (Portable Executable, le format binaire de Windows) au lieu d'ELF lorsque le compilateur MinGW est disponible. Cela aide divers systèmes de protection contre la copie qui vérifient que le contenu sur le disque et en mémoire des modules système est identique.
    • Les binaires PE réels sont copiés dans le préfixe Wine au lieu des faux fichiers DLL. Cela fait ressembler le préfixe à une véritable installation de Windows, au prix d'un espace disque supplémentaire.
    • Les modules qui ont été convertis en PE peuvent utiliser des fonctions C standard à caractères larges, ainsi que des constantes de caractères à caractères larges comme L"abc". Cela rend le code plus facile à lire.
    • Tous les modules n'ont pas encore été convertis en PE; il s'agit d'un processus continu qui se poursuivra tout au long de la série de développement de Wine 5.x.
    • Le runtime Wine C est mis à jour pour prendre en charge la liaison aux binaires compilés par MinGW; il est utilisé par défaut à la place du runtime MinGW lors de la création de DLL.
  • Graphique:
    • Plusieurs cartes graphiques et moniteurs sont correctement pris en charge, y compris les modifications de configuration dynamiques.
    • Le pilote Vulkan prend en charge jusqu'à la version 1.1.126 de la spécification Vulkan.
    • La bibliothèque WindowsCodecs est capable de convertir davantage de formats bitmap, y compris les formats indexés par palette.
  • Direct3D :
    • Les applications Direct3D plein écran inhibent l'économiseur d'écran.
    • Les présentations de la swapchain DXGI informent l'application lorsque la fenêtre correspondante est réduite. Cela permet généralement aux applications de réduire l'utilisation du processeur tout en étant minimisée, et est dans certains cas nécessaire pour permettre à la fenêtre de l'application d'être à nouveau restaurée.
    • La commutation entre les modes plein écran et fenêtré à l'aide de la combinaison standard Alt+Entrée est implémentée pour les applications DXGI.
    • Les fonctionnalités suivantes sont implémentées pour les applications Direct3D 12 :
      • Basculer entre plein écran et fenêtré.
      • Modification des modes d'affichage.
      • Cadeaux à l'échelle.
      • Échangez les intervalles. Ces fonctionnalités étaient déjà implémentées pour les versions antérieures de l’API Direct3D.
    • La gestion de divers cas extrêmes est améliorée. Entre autres :
      • Valeurs de référence hors plage pour les tests alpha et pochoir.
      • Échantillonnage de ressources 2D avec des échantillonneurs 3D et vice versa.
      • Dessiner avec des textures et des tampons mappés.
      • Utilisation d’objets clipper DirectDraw non valides.
      • Création de périphériques Direct3D sur Windows non valide, comme la fenêtre du bureau.
      • Fenêtres avec un Z minimum supérieur ou égal au Z maximum.
      • Ressources liées simultanément à la fois aux vues de ressources de shader et aux vues de cible de rendu ou de pochoir de profondeur.
      • Blits entre formats avec et sans composants alpha. Étant donné que les applications qui se comportent bien ne s'appuient pas sur ces cas extrêmes, elles n'affectent généralement qu'une ou deux applications chacune. Il en existe néanmoins un bon nombre.
    • Les régions de texture sales sont suivies avec plus de précision pour les téléchargements de texture Direct3D 8 et 9.
    • Les téléchargements de textures 3D compressées S3TC nécessitent moins d’espace d’adressage. Étant donné que les textures 3D peuvent être potentiellement volumineuses et que l'épuisement de l'espace d'adressage est un problème pour les applications 32 bits, les textures 3D compressées par S3TC sont téléchargées par tranche, plutôt qu'en un seul téléchargement.
    • L'interface ID3D11Multithread est implémentée.
    • Divers correctifs et améliorations de calcul d'éclairage pour les anciennes applications DirectDraw ont été apportés.
    • Une prise en charge limitée des blits entre les swapchains est implémentée.
    • Davantage d'API de réflexion de shader sont implémentées.
    • Le blitter CPU wined3d peut gérer les ressources sources compressées. La prise en charge des ressources de destination compressées était déjà implémentée dans une version précédente.
    • La base de données des cartes graphiques Direct3D reconnaît davantage de cartes graphiques.
    • Nouvelles clés de registre HKEY_CURRENT_USER\Software\Wine\Direct3D :
      • "shader_backend" (REG_SZ)Le backend du shader à utiliser. Les valeurs possibles sont "glsl" (par défaut) pour GLSL, "arb" pour les programmes de sommets/fragments ARB et "aucun" pour désactiver la prise en charge des shaders.
      • "strict_shader_math" (REG_DWORD) Activer (0x1) ou désactiver (0x0, par défaut) une traduction plus stricte des shaders Direct3D, potentiellement à un coût en termes de performances. Actuellement, cela ne fait une différence qu'avec le backend de shader GLSL par défaut en combinaison avec les pilotes propriétaires NVIDIA.
    • Clé de registre HKEY_CURRENT_USER\Software\Wine\Direct3D obsolète :
      • "UseGLSL" Ceci a été remplacé par le paramètre "shader_backend" ci-dessus.
  • D3DX :
    • La prise en charge de la compression des textures à l'aide de la compression S3TC est implémentée.
    • Diverses opérations, comme par ex. les remplissages de texture, sur les surfaces non cartographiables, sont implémentés plus correctement. Auparavant, leur implémentation reposait sur l'implémentation Direct3D sous-jacente n'appliquant pas les restrictions de mappage.
    • Diverses améliorations et correctifs ont été apportés au cadre d'effets.
  • Noyau:
    • La plupart des fonctions qui se trouvaient auparavant dans Kernel32 sont déplacées vers KernelBase, pour suivre l'architecture des versions récentes de Windows.
    • Les bibliothèques de mauvais 32/64 bits sont ignorées lorsqu'elles sont trouvées dans le chemin de recherche, pour permettre de charger la bonne si elle est trouvée plus loin dans le chemin.
    • Les objets du noyau sont mieux émulés pour les pilotes de périphériques qui s'attendent à manipuler des objets du côté du noyau.
    • Les objets de synchronisation au niveau du noyau tels que les verrous tournants, les mutex rapides, la suppression des verrous et les variables de ressources sont implémentés.
    • L'état de la batterie du système est correctement signalé aux applications.
  • Interface utilisateur:
    • Les fenêtres réduites sont affichées à l'aide de leur barre de titre au lieu des anciennes icônes de style Windows 3.1.
    • Les nouveaux styles de boutons Split Buttons et Command Links sont implémentés.
    • Le contrôle Edit définit également correctement les marges pour les polices CJK.
  • Intégration de bureau :
    • Des liens symboliques vers les répertoires Unix correspondants sont créés pour les dossiers « Téléchargements » et « Modèles ».
  • Des dispositifs d'entrée:
    • Les pilotes de périphérique Plug & Play peuvent être installés et chargés au démarrage.
    • Les contrôleurs de jeu sont mieux pris en charge, y compris une prise en charge appropriée des commandes de commutateur de chapeau, de roue, d'accélérateur et de frein.
    • L'ancienne API joystick des versions Linux antérieures à 2.2 n'est plus prise en charge.
  • .FILET:
    • Le moteur Mono est mis à jour vers la version 4.9.4, y compris des parties du framework Windows Presentation Foundation (WPF).
    • Les modules complémentaires Gecko et Mono prennent en charge l'installation partagée, où les fichiers sont utilisés directement à partir d'un emplacement global sous /usr/share/wine au lieu d'être copiés dans chaque nouveau préfixe.
  • Internet et réseaux :
    • Le moteur Gecko est actualisé pour prendre en charge les chaînes d'outils récentes.
    • Un certain nombre de nouvelles API HTML sont implémentées.
    • MSHTML prend en charge certains éléments SVG.
    • Les objets d'erreur et la propagation des exceptions sont pris en charge dans VBScript.
    • Un certain nombre de fonctions intégrées à VBScript sont implémentées.
    • Le mode compatible JScript EcmaScript est étendu pour prendre en charge davantage de fonctionnalités.
    • Les objets de script JScript et VBScript exposent des interfaces d'informations de type.
    • La configuration du proxy HTTP peut être récupérée via DHCP.
    • Les redirections HTTP Passport sont prises en charge.
    • Le service HTTP et la bibliothèque côté client correspondante (HTTPAPI) sont partiellement implémentés.
  • Cryptographie :
    • Les clés ECC (courbe elliptique) sont prises en charge lors de l'utilisation de GnuTLS.
    • L'importation de clés et de certificats à partir de blobs PFX est implémentée.
    • L'algorithme de dérivation de clé PBKDF2 est pris en charge.
  • Texte et polices :
    • Les fonctionnalités de positionnement OpenType sont prises en charge dans DirectWrite et activées par défaut pour l'écriture latine, y compris le crénage.
    • L'accès aux données de polices est sécurisé en validant les différentes tables de données avant de les utiliser.
    • Les interfaces DirectWrite sont mises à jour vers un SDK récent, implémentant certains des derniers ajouts d'API.
  • Audio Video:
    • Les bibliothèques XAudio2 sont réimplémentées pour utiliser la bibliothèque externe FAudio, pour une meilleure compatibilité.
    • Les bibliothèques de la Media Foundation sont étoffées et comprennent :
      • Prise en charge des files d'attente de travail asynchrones intégrées et utilisateur.
      • Possibilité de soumettre des rappels périodiques, des éléments de travail en attente, planifiés et réguliers, avec prise en charge de la priorité des éléments.
      • Prise en charge des files d'attente d'événements multimédias.
      • Diverses API de base pour gérer les objets de type média, les descripteurs de flux et de présentation, les attributs d'objet, les objets de flux d'octets, les échantillons et les tampons.
      • Implémentation initiale du résolveur de source.
      • Implémentation initiale de l'API Source Reader.
      • Implémentation de l'objet Sample Grabber.
      • Prise en charge de base pour la création d'objets de topologie.
      • Implémentation de l'horloge de présentation intégrée et début de l'implémentation de la fonctionnalité Media Session.
    • Le filtre de capture vidéo a été porté pour utiliser v4l2 au lieu de l'API v4l1 obsolète, permettant l'utilisation de certaines caméras qui ne prennent pas en charge v4l1.
    • La prise en charge de la traduction et de la lecture YUV vers RVB à partir de périphériques v4l2 utilisant mmap() a été supprimée; nous dépendons maintenant de libv4l2 pour ces deux choses.
    • Les décodeurs intégrés AVI, MPEG-I et WAVE ont été supprimés; nous dépendons désormais de GStreamer ou du Mac QuickTime Toolkit pour décoder ces fichiers multimédias.
    • D'autres API de configuration VMR7 sont implémentées.
    • Les pilotes audio prennent en charge les réglages de volume par canal.
  • Internationalisation:
    • Les tables de caractères Unicode sont basées sur la version 12.1.0 de la norme Unicode.
    • La normalisation Unicode est implémentée.
    • L'identifiant de la région géographique est automatiquement défini dans le registre en fonction des paramètres régionaux actuels. Il peut être modifié si nécessaire sous HKEY_CURRENT_USER\Control Panel\International\Geo.
    • Les paramètres régionaux cingalais et asturiens sont pris en charge.
    • La page de codes 28601 (latin/thaïlandais) est prise en charge.
  • RPC/COM :
    • Le marshaller typelib prend en charge les structures et les tableaux complexes.
    • Il existe une implémentation initiale de la bibliothèque d'exécution Windows Script.
    • Il existe une première implémentation de la bibliothèque Microsoft ActiveX Data Objects (ADO).
  • Installateurs :
    • Les fichiers de correctifs Microsoft Installer (MSI) sont pris en charge.
    • L'outil WUSA (Windows Update Standalone Installer) prend en charge l'installation des fichiers de mise à jour .MSU.
  • Plateformes ARM :
    • Le déroulement des exceptions est implémenté pour ARM64, à l'aide de la bibliothèque libunwind.
    • Les proxys OLE stubles sont pris en charge sur ARM64.
  • Outils de développement / Winelib :
    • Le débogueur distant Visual Studio peut être utilisé pour déboguer des applications exécutées sous Wine.
    • La bibliothèque Debug Engine (DBGENG) est partiellement implémentée.
    • Les binaires créés pour une cible Windows ne dépendent plus de la bibliothèque libwine, pour leur permettre de s'exécuter sous Windows sans aucune dépendance supplémentaire. La bibliothèque libwine n'est plus du tout conçue pour Windows.
    • Le compilateur de ressources et le compilateur IDL prennent en charge une option « --sysroot » pour permettre la localisation des fichiers d'en-tête dans des environnements de compilation croisée.
    • Winegcc prend en charge les options « --target », « --wine-objdir », « --winebuild » et « -fuse-ld » qui facilitent son utilisation en tant que compilateur croisé ou avec des chaînes d'outils personnalisées.
    • L'en-tête wine/unicode.h n'est plus disponible pour les applications, car les fonctions seront finalement supprimées et remplacées par les fonctions de caractères standard du runtime C.
  • Construire des infrastructures :
    • Les binaires de test sont construits au format PE si MinGW est disponible, de sorte que le même binaire de test peut s'exécuter à la fois sur Wine et Windows. La cible de création « crosstest » n'est plus nécessaire ni prise en charge.
    • La convention d'appel « fastcall » est prise en charge dans les fichiers de spécifications. Il utilise le nom correct pour les versions Windows.
    • Un indicateur de point d'entrée '-import' est pris en charge dans les fichiers de spécifications, pour marquer les fonctions qui nécessitent la génération d'un préfixe de code hotpatch pour leurs importation.
    • Winebuild prend en charge une option '--builtin' pour ajouter une signature spéciale aux binaires PE afin de les marquer comme intégrés à Wine.
  • Applications intégrées :
    • L'outil CHCP est implémenté. Il permet de définir la page de codes de la console.
    • L'outil MSIDB est implémenté. Il permet de manipuler les bases de données MSI.
  • Amélioration des performances:
    • Les différentes fonctions temporelles utilisent des horloges système plus performantes si disponibles, pour réduire la surcharge dans la boucle de rendu de nombreux jeux.
    • Les recherches de fichiers profitent de la prise en charge du pliage de cas du système de fichiers ext4 si elle est activée sur le répertoire recherché.
    • Les listes de style sans données (LBS_NODATA) offrent de meilleures performances pour un grand nombre d'éléments.
    • Les verrous Slim Reader/Writer, les événements à clé et les variables de condition utilisent des futex sous Linux pour éviter les allers-retours du serveur wine.
  • Nouvelles dépendances externes :
    • Le compilateur croisé MinGW-w64 est utilisé pour créer des modules au format PE.
    • La bibliothèque FAudio est utilisée pour implémenter XAudio2.
    • La bibliothèque Inotify est utilisée pour les notifications de modifications de fichiers sur les plateformes BSD.
    • La bibliothèque Unwind est utilisée pour la gestion des exceptions sur ARM64.
    • La bibliothèque Video4Linux version 2 est utilisée à la place de la version 1.

En savoir plus


Source: QG du Vin

Histoire via: AndroidPolice