Després d'un any de desenvolupament i 26 versions experimentals, es va presentar una versió estable de la implementació oberta de l'API Win32: Wine 9.0, que va incorporar més de 7000 canvis. Els èxits clau de la nova versió inclouen la implementació de l'arquitectura WoW64 per executar programes de 32 bits en un entorn de 64 bits, integració de controladors per donar suport a Wayland, suport per a l'arquitectura ARM64, implementació de l'API DirectMusic i suport per a targetes intel·ligents.
S'ha confirmat que 5336 programes (5266 fa un any, 5156 fa dos anys, 5049 fa tres anys) funcionen correctament amb Wine. WindowsAltres 4397 programes (4370 fa un any, 4312 fa dos anys, 4227 fa tres anys) funcionen correctament amb configuracions addicionals i DLL externes. 3943 programes (3888 fa un any, 3813 fa dos anys, 3703 fa tres anys) tenen problemes menors que no interfereixen amb la funcionalitat bàsica de les aplicacions.
Innovacions clau en Wine 9.0:
- S'ha afegit el controlador winewayland.drv, que permet utilitzar Wine en entorns basats en Wayland sense utilitzar components XWayland o X11. Aquest desenvolupament té com a objectiu proporcionar un entorn Wayland pur amb suport per al llançament. Windows- aplicacions que no requereixen la instal·lació de paquets relacionats amb X11, cosa que permet un major rendiment i capacitat de resposta en els jocs eliminant capes innecessàries. L'ús d'un entorn Wayland pur per a Wine també elimina els problemes de seguretat inherents a X11 (per exemple, els jocs X11 no fiables poden espiar altres aplicacions perquè el protocol X11 permet accedir a tots els esdeveniments d'entrada i realitzar la substitució de pulsacions de tecles).
El controlador està marcat com a experimental i en desenvolupament, però, tanmateix, ja té suport per a moltes funcions, com ara la gestió de finestres, el treball amb diversos monitors, el suport per a l'escalat de la sortida en pantalles d'alta densitat de píxels (alt DPI), el treball amb coordenades relatives quan es fa el seguiment del moviment del ratolí i suport per a l'API de gràfics Vulkan. De manera predeterminada, el controlador no està actiu i per activar-lo hauríeu d'afegir “wayland” al paràmetre de registre “HKCU\Software\Wine\Drivers” i assegureu-vos que la variable d'entorn DISPLAY no estigui configurada: wine reg.exe add HKCU\ \Software\\Wine\\Drivers /v Graphics /d x11,wayland
- Tots els mòduls s'han convertit a la interfície de trucada del sistema NT, en lloc de fer trucades directes entre les capes PE i Unix, marcant la finalització de molts anys de treball per convertir totes les DLL per utilitzar el format de fitxer executable PE (Executable portàtil).
- El desenvolupament de la capa de WoW64 (64 bits) va continuar Windows-en-Windows), que permet executar 32 bits Windows- aplicacions en sistemes Unix de 64 bits. Tots els mòduls que accedeixen a les biblioteques d'Unix utilitzen traductors de crides al sistema (thunks) WoW64, cosa que permet als mòduls de 32 bits en format PE accedir a les biblioteques d'Unix de 64 bits.
El nou mode d'inici de WoW64 s'ha millorat, permetent que el codi de 32 bits s'executi dins d'un procés de 64 bits (en l'antic mode WoW64, les aplicacions de 32 bits s'executaven en processos Unix de 32 bits). S'ha afegit compatibilitat amb l'ús del nou mode WoW64 a la plataforma. macOSCom que el nou mode WoW64 té alguns errors menors, com ara la manca de suport per a 16 bits i un rendiment reduït d'OpenGL a causa de la manca de suport per a l'extensió ARB_buffer_storage, encara no està habilitat per defecte i cal compilar-lo amb l'opció "--enable-archs=i386,x86_64" a l'script de configuració.
- S'ha afegit la capacitat d'executar fitxers executables existents. Windows En sistemes amb l'arquitectura ARM64. Ara es pot compilar Wine per a l'ABI ARM64EC (compatible amb l'emulació ARM64) i es poden carregar mòduls ARM64EC. Aquests mòduls s'utilitzen per simplificar la migració d'aplicacions escrites originalment per a l'arquitectura x86_64 a sistemes ARM64 permetent l'execució de mòduls de codi x86_64 individuals a l'entorn ARM64 mitjançant un emulador. S'ha afegit compatibilitat amb el format de fitxer ARM64X PE, que permet carregar un únic fitxer executable tant en processos x64/Arm64EC com ARM64. S'ha implementat una interfície per emular sistemes x86 de 32 bits, però la biblioteca de l'emulador encara no s'ha inclòs a la distribució principal de Wine (l'emulador FEX extern es pot utilitzar per executar codi x86 a l'entorn ARM64).
- Subsistema gràfic
- El controlador PostScript s'ha redissenyat per admetre fitxers spool en el format Windows, que emmagatzemen dades sobre treballs d'impressió. S'exclouen les crides directes al controlador des de l'entorn Unix.
- S'ha afegit suport al mode fosc als temes de WinRT. S'ha afegit una configuració a WineCfg per habilitar el disseny de la interfície fosca.
- El controlador de l'API de gràfics Vulkan ha afegit suport per a l'especificació Vulkan 1.3.272 (8.0 era compatible amb Wine 1.3.237).
- Les funcions de la biblioteca GdiPlus s'han optimitzat, la qual cosa permet augmentar el rendiment gràfic.
- Direct3D
- L'anàlisi d'un flux d'ordres multifils es suspèn quan no es processen ordres de renderització, la qual cosa permet reduir el consum d'energia al nivell de processament d'un sol fil quan s'executen programes que no ocupen tot l'amplada de banda del flux d'ordres.
- Direct3D 10 inclou suport per a efectes addicionals.
- S'han fet optimitzacions de rendiment al codi WineD3D i al backend mitjançant l'API de gràfics Vulkan.
- El codi de representació basat en l'API de Vulkan ara comprova quines capacitats admet el dispositiu i indica a l'aplicació quin nivell de funcionalitat de Direct3D està disponible.
- S'han implementat les funcions D3DXFillTextureTX i D3DXFillCubeTextureTX.
- El backend clàssic de l'ombrador OpenGL ARB ha afegit suport per definir ombres mitjançant l'extensió ARB_fragment_program_shadow.
- D3DXLoadMeshHierarchyFromX i funcions similars han afegit suport per carregar dades d'usuari mitjançant la interfície ID3DXLoadUserData.
- So i vídeo
- S'ha proposat una implementació inicial de l'API DirectMusic. S'ha afegit suport per a col·leccions, instruments i mostres de so en el format SoundFont. S'ha afegit suport per a l'efecte Doppler. S'han implementat proves per verificar la correcta implementació en operar el seqüenciador dmime i el sintetitzador MIDI dmsynth.
- La biblioteca FluidSynth està integrada a l'API de DirectMusic per utilitzar-la.
- S'ha implementat la compatibilitat amb la càrrega de fonts de so (SoundFont - formats per a síntesi basada en mostres que s'utilitzen per reproduir fitxers MIDI) en els formats DLS1 i DLS2, així com en el format SF2 utilitzat en Linux.
- S'ha afegit la possibilitat de reproduir contingut MIDI mitjançant la biblioteca dmsynth, utilitzant el sintetitzador de programari FluidSynth i l'API DirectSound per a la sortida d'àudio.
- S'ha afegit un descodificador per a vídeo en el format de còdec de vídeo Indeo IV50.
- Mostra directa
- S'ha implementat el component DMO (DirectX Media Object) amb un descodificador de format WMV (Windows Vídeo multimèdia).
- S'ha afegit un filtre de captura d'àudio (DirectShow Audio Capture Filter).
- A més dels fluxos d'àudio, el MPEG-1 Stream Splitter (DirectShow MPEG-1 Stream Splitter) ara admet fluxos de vídeo i fluxos de servei.
- S'ha implementat un filtre per descodificar vídeo en format MPEG-1 (DirectShow MPEG-1 Video Decoder).
- Dispositius d’entrada
- DirectInput admet el mapatge d'accions, que us permet vincular botons d'un controlador de joc a accions específiques dels jocs.
- Integració d'escriptori
- Els enllaços s'han exportat a l'entorn d'usuari principal, permetent que les aplicacions que s'executen sota Wine es cridin com a controladors de protocol quan s'obre un URL (per exemple, llançant spotify.exe quan s'obren enllaços com "spotify:user:spotify:playlist:848218482355482821").
- S'ha implementat l'extracció de dades EDID (Extended Display Identification Data) amb informació sobre els paràmetres del monitor connectat, com ara el nom i el model del dispositiu.
- És possible tancar una finestra d'escriptori desplegada en mode de pantalla completa mitjançant el botó "Surt de l'escriptori" al menú "Inici".
- Internacionalització
- S'ha ampliat la compatibilitat amb els IME (editors de mètodes d'entrada). S'ha treballat per garantir la compatibilitat amb els codis natius. Windows Implementacions d'IME i integració millorada amb Linux EMI
- S'ha proporcionat la generació de bases de dades locals en format locale.nls a partir de la base de dades Unicode CLDR (Unicode Common Locale Data Repository) versió 44. S'ha proporcionat suport per a locals addicionals bew-ID, blo-BJ, csw-CA, ie-EE, mic-CA. , s'ha afegit prg-PL, skr-PK, tyv-RU, vmw-MZ, xnr-IN i za-CN.
- La interfície s'ha traduït al georgià. Es proporcionen traduccions completes per a 16 idiomes i traduccions parcials per a 31 idiomes.
- Les taules de caràcters Unicode s'han actualitzat a la versió estàndard 15.1.0. La base de dades de zones horàries s'ha actualitzat.
- Nucli (interfícies del nucli) Windows)
- Com a versió publicada Windows definit per defecte Windows 10.
- Per als fitxers executables en format PE, s'implementa el suport per a l'aleatorització de l'espai d'adreces (ASLR), però les adreces per carregar codi a la memòria encara no estan completament aleatòries.
- S'ha implementat el suport per a un munt poc fragmentat (LFH, Low Fragmentation Heap) que ha augmentat el rendiment de les operacions d'assignació de memòria.
- S'ha afegit suport per a la reserva de memòria (marcador de posició) al mecanisme d'assignació de memòria virtual, la qual cosa permet a una aplicació reservar una àrea específica de memòria virtual per a un ús futur.
- Els carregadors de 64 bits (carregador i precarregador) de fitxers executables i biblioteques es compilen en format PIE (Executables independents de la posició) per alliberar part de l'espai d'adreces de 32 bits.
- Es proporciona un desenrotllament correcte de la pila per a les trucades del sistema NT i les trucades de retorn de trucada d'usuari.
- Funcions de xarxa
- El motor MSHTML admet el mecanisme de recollida d'escombraries "Cycle Collection".
- MSHTML ha afegit suport per al processament síncron de sol·licituds XMLHttpRequest.
- jscript.dll afegeix suport per a un objecte WeakMap per treballar amb una col·lecció de parells clau/valor en què la clau és un objecte que pot tenir un valor arbitrari associat. S'han implementat els mètodes WeakMap.get(), WeakMap.delete(), WeakMap.clear() i WeakMap.has().
- El motor del navegador Gecko s'ha actualitzat a la versió 2.47.4.
- S'ha implementat suport per a notificacions sobre canvis en l'estat de la interfície de xarxa.
- Criptografia i seguretat
- S'ha afegit suport per a targetes intel·ligents a la biblioteca Winscard.dll, implementada a través de la biblioteca del sistema PCSClite.
- BCrypt ha afegit suport per al protocol d'intercanvi de claus Diffie-Hellman.
- S'ha implementat el paquet Negotiate, que proporciona una capa per utilitzar la interfície SSPI (Security Support Provider Interface) per accedir als proveïdors SSP (Security Support Provider).
- Aplicacions incrustades
- El Wine Debugger (winedbg) utilitza la biblioteca Zydis per desmuntar les instruccions de la màquina X86.
- La interfície de WineCfg s'ha actualitzat per admetre versions anteriors en plataformes de 64 bits. Windows (abans de XP), que permet executar aplicacions antigues utilitzant el mode WoW64.
- Totes les aplicacions gràfiques integrades ara mostren informació d'error en un diàleg separat en lloc de mostrar-les a la consola.
- El programa systeminfo permet mostrar informació de la base de dades WMI (Windows Instrumentació de gestió).
- S'ha afegit l'aplicació klist per mostrar els bitllets de Kerberos.
- L'aplicació taskkill implementa la capacitat d'acabar amb força els processos secundaris.
- S'ha afegit l'opció "/machine" a la utilitat d'inici per seleccionar l'arquitectura utilitzada quan s'executen executables híbrids que admeten x86 i ARM.
- La major part de la funcionalitat del programa de llista de tasques s'ha implementat.
- S'ha afegit una implementació bàsica de l'aplicació findstr.
- Eines de desenvolupament
- La utilitat WineDump té la capacitat de mostrar el contingut dels fitxers del registre. Windows (format REGF), així com mostrar dades per a totes les arquitectures (x86/ARM64) compatibles amb els fitxers PE híbrids.
- El compilador IDL ha afegit suport per als atributs "composable", "default_overload", "obsolet" i "protegit".
- S'ha eliminat libwine.so, que estava obsolet al Wine 6.0 i fa temps que ja no s'utilitzava al Wine. Els programes en format ELF construïts en versions anteriors del Wine (5.0 i anteriors) amb libwine.so requereixen una reconstrucció per executar-se al Wine 9.0.
- Biblioteques integrades i dependències externes
- Les biblioteques FluidSynth 2.3.3, Musl 1.2.3 (només funcions matemàtiques) i Zydis 4.0.0 estan integrades al paquet.
- Els components Vkd3d 1.10, Faudio 23.12, OpenLDAP 2.5.16, LCMS2 2.15, LibMPG123 1.32.2, LibPng 1.6.40, LibTiff 4.6.0, LibXml2 2.11.5 s'han actualitzat a la versió 1.1.38Xsd1.3 i . El motor Wine Mono amb la implementació de la plataforma .NET s'ha actualitzat per al llançament 8.1.0.
- El controlador winewayland.drv utilitza la biblioteca de client Wayland com a dependències externes, així com les biblioteques xkbcommon i xkbregistry.
- Per admetre targetes intel·ligents, s'utilitza la biblioteca externa PCSClite (en macOS — PCSC).
- La creació de fitxers PE en plataformes que no són i386 ara requereix un compilador creuat amb suport per a directives ".seh" per gestionar les excepcions.
Font: opennet.ru
