Wine est une couche de compatibilité pour exécuter des applications Windows sur Linux.
Wine est une couche de compatibilité open source permettant d’exécuter des applications Windows sur des systèmes d’exploitation basés sur Unix, tels que Linux et macOS. Il permet aux utilisateurs d’exécuter des logiciels Windows sans avoir besoin d’un système d’exploitation Windows.
Wine signifie « Wine Is Not an Emulator » car il n’émule pas un environnement Windows complet, mais traduit plutôt les appels système Windows en leurs équivalents sur le système hôte. Cela permet aux applications Windows de s’exécuter plus efficacement et avec de meilleures performances que si elles étaient émulées.
Caractéristiques
Compatibilité binaire
- Charge les programmes et bibliothèques Windows 9x/NT/2000/XP/Vista/7/8/10 et Windows 3.x 64 bits, 32 bits et 16 bits.
- Disposition de la mémoire compatible Win32, gestion des exceptions, threads et processus
- Conçu pour les systèmes d’exploitation compatibles POSIX (par exemple Linux, macOS et FreeBSD) et Android
- compatibilité « bug pour bug » avec Windows
Prise en charge de l’API Win32
- Prise en charge des jeux et applications basés sur DirectX (prise en charge de Direct3D jusqu’à DirectX 12)
- Prise en charge des jeux et applications basés sur OpenGL et Vulkan
- Prise en charge de DirectShow avec utilisation de GStreamer pour les codecs
- Prise en charge de Direct2D et DirectWrite
- Les API audio MMDevice, XAudio, WinMM et DirectSound sont prises en charge
- Impression via le pilote PostScript sur le système d’impression hôte (généralement CUPS)
- Pilote Enhanced Metafile (EMF) et Windows Metafile (WMF)
- Bureau dans une boîte ou fenêtres mixables
Permet au programme Windows de s’interfacer avec :
- Graphiques basés sur X11 qui permettent un affichage à distance sur n’importe quel terminal X
- Graphiques basés sur macOS et Android
- Polices X11, TrueType (.ttf/.ttc) et Windows Bitmap (.fon)
- Appareils audio via ALSA, OSS, PulseAudio, Core Audio, etc.
- Claviers multilingues et prise en charge de la méthode de saisie CJK via XIM
- Modems, appareils série
- Réseaux (TCP/IP et IPX)
- Scanners ASPI
- Tablettes Windows via XInput (par exemple Wacom)
- Appareils de capture vidéo via v4l2
- Appareils HID via IOHid (MacOS), evdev (Linux), hidraw (Linux), SDL2
Couverture et portabilité des API
- Conçu pour la compatibilité source et binaire avec le code Win32
- Suite de tests API Win32 pour garantir la compatibilité
- Compilable sur une large gamme de compilateurs C
- Permet de mélanger le code Win32 et POSIX
- Permet de mélanger les binaires ELF (.so) et PE (.dll/.exe) dans un seul espace d’adressage
- Fichiers d’en-tête compatibles Win32
- Documentation API générée automatiquement
- Compilateur de ressources
- Compilateur de messages
- Compilateur IDL
- Prise en charge étendue d’Unicode
- Internationalisation – Wine prend en charge 16 langues
- Débogueur intégré et messages de trace configurables
- Prise en charge du vérificateur de mémoire externe utilisant Valgrind
- Exemples de programmes
Quoi de neuf
L’équipe Wine est fière d’annoncer que la version stable Wine 9.0 est désormais disponible.
WoW64
- Toutes les transitions du code Windows vers Unix passent par l’interface syscall NT. Il s’agit d’une étape majeure qui marque l’achèvement du travail de réarchitecture pluriannuel visant à convertir les modules au format PE et à introduire une frontière appropriée entre les mondes Windows et Unix.
- Tous les modules qui appellent une bibliothèque Unix contiennent des thunks WoW64 pour permettre l’appel de la bibliothèque Unix 64 bits à partir du code PE 32 bits. Cela signifie qu’il est possible d’exécuter des applications Windows 32 bits sur une installation Unix purement 64 bits. C’est ce qu’on appelle le nouveau mode WoW64, par opposition à l’ancien mode WoW64 dans lequel les applications 32 bits s’exécutent dans un processus Unix 32 bits.
- Le nouveau mode WoW64 n’est pas encore activé par défaut. Il peut être activé en passant l’option –enable-archs=i386,x86_64 à configurer. Cela devrait fonctionner pour la plupart des applications, mais il existe encore certaines limitations, notamment :
- Manque de prise en charge du code 16 bits.
- Performances OpenGL réduites et manque de prise en charge de l’extension ARB_buffer_storage.
- Le nouveau mode WoW64 permet enfin aux applications 32 bits de s’exécuter sur les versions récentes de macOS qui ont supprimé la prise en charge des processus Unix 32 bits.
Chauffeur Wayland
- Il existe un pilote graphique expérimental Wayland. C’est toujours un travail en cours, mais il implémente déjà de nombreuses fonctionnalités, telles que la gestion de base des fenêtres, plusieurs moniteurs, une mise à l’échelle haute résolution, des événements de mouvement relatif et la prise en charge de Vulkan.
- Le pilote Wayland n’est pas encore activé par défaut. Il peut être activé via la clé de registre HKCU\Software\Wine\Drivers en exécutant :
- wine reg.exe ajouter HKCU\\Software\\Wine\\Drivers /v Graphics /d x11,wayland
- puis en vous assurant que la variable d’environnement DISPLAY n’est pas définie.
Bras64
- L’achèvement de la séparation PE/Unix signifie qu’il est possible d’exécuter les binaires Windows existants sur ARM64.
- Le chargeur prend en charge le chargement des modules Arm64X et ARM64EC.
- L’interface d’émulation x86 32 bits est implémentée. Aucune bibliothèque d’émulation n’est fournie avec Wine à ce stade, mais une bibliothèque externe qui exporte l’interface peut être utilisée, en précisant son nom dans la clé de registre HKLM\Software\Microsoft\Wow64\x86. L’émulateur FEX implémente cette interface lorsqu’il est construit en tant que PE.
- Il existe un support initial pour la création de Wine pour l’architecture ARM64EC, à l’aide d’une chaîne d’outils expérimentale LLVM. Une fois la chaîne d’outils prête, elle sera utilisée pour créer une version ARM64X appropriée et activer l’émulation x86 64 bits.
Graphique
- Le pilote PostScript est réimplémenté pour fonctionner à partir de fichiers spool au format Windows et éviter tout appel direct du côté Unix.
- La thématique WinRT prend en charge une option de thème sombre, avec une bascule correspondante dans WineCfg.
- Le pilote Vulkan prend en charge jusqu’à la version 1.3.272 de la spécification Vulkan.
- Un certain nombre de fonctions GdiPlus sont optimisées pour de meilleures performances graphiques.
Direct3D
- Le flux de commandes multithread se met en veille au lieu de tourner lorsqu’il ne traite pas les commandes de rendu. Cela réduit la consommation d’énergie dans les programmes qui n’occupent pas toute la bande passante disponible du flux de commandes. La consommation d’énergie doit être comparable à celle lorsque le flux de commandes multithread est désactivé.
- Les effets Direct3D 10 prennent en charge beaucoup plus d’instructions.
- Diverses optimisations ont été apportées au cœur de WineD3D et au backend Vulkan.
- Le moteur de rendu Vulkan valide correctement que les fonctionnalités requises sont prises en charge par le périphérique sous-jacent et signale le niveau de fonctionnalité Direct3D correspondant à l’application.
- D3DXFillTextureTX et D3DXFillCubeTextureTX sont implémentés.
- L’ancien backend du shader OpenGL ARB prend en charge l’échantillonnage d’ombres via ARB_fragment_program_shadow.
- Le compilateur HLSL prend en charge les indicateurs de compilation matricielle majoritaire.
- D3DXLoadMeshHierarchyFromX et les fonctions associées prennent en charge le chargement des données utilisateur via ID3DXLoadUserData.
Audio Video
- La base de plusieurs modules DirectMusic est implémentée. De nombreux tests sont ajoutés pour valider le comportement du séquenceur dmime et du synthétiseur MIDI dmsynth.
- Le chargement des polices sonores DLS1 et DLS2 est implémenté, ainsi que le format SF2 pour la compatibilité avec les polices sonores MIDI standard Linux.
- La lecture MIDI est implémentée dans dmsynth, avec l’intégration du synthétiseur logiciel de la bibliothèque FluidSynth et l’utilisation de DirectSound pour la sortie audio.
- Le décalage Doppler est pris en charge dans DirectSound.
- Le décodeur Indeo IV50 Video pour Windows est implémenté.
DirectAffichage
- Le décodeur Windows Media Video (WMV) DirectX Media Object (DMO) est implémenté.
- Le filtre DirectShow Audio Capture est implémenté.
- Le filtre DirectShow MPEG�’1 Stream Splitter prend en charge les flux vidéo et système ainsi que les flux audio.
- Le filtre DirectShow MPEG�’1 Video Decoder est implémenté.
Des dispositifs d’entrée
- Des cartes d’action DirectInput sont implémentées, améliorant ainsi la compatibilité avec de nombreux anciens jeux qui l’utilisent pour mapper les entrées du contrôleur aux actions du jeu.
Lisez les notes de version complètes ici.