Dopo un anno di sviluppo e 29 versioni sperimentali, è stato rilasciato Wine 10.0, una realizzazione open source stabile del Win32 API, che include oltre 6000 modifiche. Tra i traguardi principali di questa nuova versione troviamo il supporto completo per l'architettura ARM64EC, il ridimensionamento su schermi ad alta densità di pixel, l'abilitazione predefinita del driver Wayland, l'implementazione di pannelli per la configurazione dello schermo e del joystick, un backend multimediale alternativo basato su FFmpeg, un driver Bluetooth, il supporto per Vulkan 1.4 e la possibilità di emulare il cambio delle modalità video.
Con Wine sono confermate le funzionalità complete per 5372 programmi Windows (l'anno scorso 5336, due anni fa 5266, tre anni fa 5156), altri 4435 programmi (l'anno scorso 4397, due anni fa 4370, tre anni fa 4312) funzionano benissimo con configurazioni aggiuntive e DLL esterne. Per 4020 programmi (l'anno scorso 3943, due anni fa 3888, tre anni fa 3813) si osservano lievi problemi di funzionamento che non compromettono l'uso delle principali funzionalità delle applicazioni.
Novità principali di Wine 10.0:
- ARM64
- È garantito il completo supporto dell'architettura ARM64EC (ARM64 Emulation Compatible), il cui livello di supporto in Wine ha raggiunto la parità con l'architettura ARM64. L'architettura ARM64EC è progettata per semplificare il porting su sistemi ARM64 delle applicazioni originariamente scritte per sistemi x86_64, e consente di eseguire in un ambiente ARM64 moduli separati con codice x86_64 tramite un emulatore.
- È stato implementato il supporto completo per il formato di file eseguibili ARM64X, che consente di combinare in un unico file eseguibile codice per le architetture ARM64EC e ARM64. Per compilare Wine nel formato ARM64X è necessario installare LLVM da Git (la funzionalità necessaria farà parte della release LLVM 20) e specificare l'opzione '—enable-archs=arm64ec,aarch64' durante l'esecuzione dello script 'configure'.
- È stata realizzata un'interfaccia per l'emulazione dei sistemi a 64 bit x86. Utilizzando ARM64EC, Wine stesso viene eseguito normalmente, mentre l'emulazione viene applicata solo al codice delle applicazioni x86-64. La libreria con l'emulatore non è ancora inclusa nella distribuzione principale di Wine, ma per eseguire codice x86-64 in un ambiente ARM64 è possibile utilizzare un emulatore esterno FEX, compilato con supporto per ARM64EC.
- Per supportare ARM64 è necessario utilizzare pagine di memoria di dimensione 4KB nel sistema, come richiesto dall'ABI di Windows (l'esecuzione in ambienti con kernel Linux che utilizzano pagine di memoria da 16K o 64K non è attualmente supportata).
- Sottosistema grafico
- È stata implementata una scalabilità più precisa sugli schermi ad alta densità di pixel (High-DPI). È stata fornita supporto per la modalità DPI Awareness per gestire la visualizzazione delle applicazioni su schermi ad alta densità di pixel, tenendo conto se l'applicazione supporta l'adattamento al cambiamento di DPI o meno (le applicazioni che non considerano il DPI vengono scalate automaticamente). Sono state aggiunte opzioni per sovrascrivere il supporto High-DPI in relazione a singole applicazioni o prefissi Wine.
- Nel driver per l'API grafica Vulkan è stato aggiunto il supporto per la specifica Vulkan 1.4 (in Wine 9.0 era supportato Vulkan 1.3.272). È stato aggiunto il supporto per le estensioni Vulkan per la codifica e la decodifica video.
- Quando si utilizza il backend X11, è stata realizzata la possibilità di disegnare finestre figlio Vulkan per applicazioni che utilizzano tali finestre per l'output di contenuti 3D (in precedenza, tale possibilità era disponibile solo per OpenGL).
- Nella libreria GdiPlus è stata aggiunta la supporto per il meccanismo di collegamento dei caratteri ("Font Linking"), che consente di utilizzare più font per la visualizzazione del testo quando non esistono font singoli che coprano tutti i caratteri presenti nel testo.
- Wayland
- Nella configurazione predefinita è attivato il driver winewayland.drv, che consente di utilizzare Wine in ambienti basati sul protocollo Wayland senza ricorrere a XWayland e ai componenti X11. Wine avvia le applicazioni di default direttamente su Wayland solo se XWayland non è disponibile; in caso contrario, il lancio tramite XWayland rimane prioritario. Per forzare l'attivazione di Wayland, è possibile utilizzare la variabile d'ambiente DISPLAY o aggiungere una chiave nel registro creando un file file.reg: Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Wine\Drivers] "Graphics"="wayland" e applicandolo con il comando: $ WINEPREFIX=/percorso/del/prefisso wine regedit /percorso/file.reg
- Nel driver winewayland.drv è stata aggiunta la supporto per OpenGL e per i buffer di pixel (pBuffer).
- Sono stati risolti i problemi di posizionamento delle finestre popup negli ambienti basati su Wayland.
- Utilizzando Wayland, è stata implementata la supporto per la ripetizione automatica della pressione dei tasti durante il loro mantenimento.
- Integrazione con il desktop
- È stato aggiunto un meccanismo sperimentale di emulazione «modesetting», che consente di emulare il passaggio tra le modalità video senza modificare effettivamente le impostazioni dello schermo. La visibilità della modifica della risoluzione dello schermo senza il passaggio alla modalità video viene creata tramite l’estensione e la scalabilità delle finestre.
- È stato aggiunto un nuovo applet Desktop Control Panel (desk.cpl) con implementazione dell'interfaccia per la gestione delle impostazioni del display (ad esempio, è possibile modificare la risoluzione virtuale del desktop o configurare i parametri emulati del display).
- È stata aggiunta la possibilità di ripristinare le impostazioni dello schermo ai valori predefiniti nel caso in cui non si riesca a ripristinare lo stato dopo un'interruzione anomala del processo.
- È stata aggiunta la supporto per disattivare la visualizzazione delle icone nella tray di sistema (in «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» si deve impostare «NoTrayItemsDisplay=1»).
- È stata aggiunta la supporto per disattivare i launcher delle shell in modalità desktop (in «HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer» si deve impostare «NoDesktop=1»).
- Direct3D
- Per il rendering utilizzando OpenGL ora è richiesta la compatibilità con GLSL 1.20, oltre alle estensioni EXT_framebuffer_object e ARB_texture_non_power_of_two. Il supporto per il vecchio backend ARB shader e le impostazioni OffscreenRenderingMode è stato interrotto.
- Per Direct3D 9 e versioni precedenti è stato aggiunto un pipeline grafico a funzioni fisse (in Direct3D più vecchi erano disponibili solo operazioni grafiche predefinite che non potevano essere modificate), implementato tramite il linguaggio di shader HLSL e in grado di emulare funzioni fisse durante il rendering tramite le API Vulkan o OpenGL.
- Nel rendering con Vulkan vengono utilizzate le estensioni Vulkan per modificare dinamicamente lo stato del pipeline grafico, riducendo così i lag nei giochi.
- È stato aggiunto un backend alternativo glsl-vkd3d per gli shader GLSL, che utilizza vkd3d-shader.
- È stato fornito un supporto iniziale per la compilazione degli effetti Direct3D, utilizzando vkd3d-shader.
- Nella libreria D3DX9 è stata implementata la possibilità di generare MIP-texture (MipMap) durante il caricamento di texture volumetriche. È stato aggiunto il supporto per i formati di rappresentazione del colore 64bpp RGBA e 48bpp RGB nelle immagini PNG, oltre ai formati X8L8V8U8, A2W10V10U10, A8P8, V16U16 e Q16W16V16U16.
- Audio e video
- Come alternativa al backend basato su GStreamer, è stato implementato un nuovo backend multimediale, basato su FFmpeg, idoneo per il framework Media Foundation. Per abilitare il backend alternativo, è necessario specificare "DisableGstByteStreamHandler=1" nella sezione del registro "HKCU\Software\Wine\MediaFoundation".
- Migliorata l'implementazione dell'API Media Foundation, che ora si integra meglio con le applicazioni che dipendono da componenti di demultiplexing e decodifica.
- Nell'API DirectMusic è stata aggiunta la supporto per il caricamento di file MIDI.
- Dispositivi di input
- Aggiunta una versione iniziale del driver Bluetooth.
- Aggiunto l'applet Pannello di Controllo del Joystick (joy.cpl) con implementazione delle impostazioni per il joystick.
- Miglioramenti apportati ai dispositivi di puntamento (touchpad, mouse) che utilizzano il protocollo HID (Human Interface Device). Aggiunto il driver mouhid.sys per i dispositivi HID. Realizzato un corretto parsing dei dispositivi di input compositi e fornita la trasmissione delle informazioni su di essi alle applicazioni Windows come se fossero dispositivi separati.
- Per il backend X11 è stata aggiunta la supporto per i touchscreen e implementata la possibilità di utilizzare la modalità multitouch tramite l'elaborazione dei messaggi WM_POINTER* (WM_POINTERENTER, WM_POINTERLEAVE, ecc.).
- È stata implementata la distribuzione di alcune strutture interne della libreria user32 nella memoria condivisa, il che ha migliorato le prestazioni e ridotto il carico sul Wine Server.
- In winex11 è stata aggiunta la supporto per la gestione degli eventi XInput2 legati a singole finestre.
- È stata implementata un'adeguata supporto per le tastiere con layout Dvorak.
- Nucleo (interfacce di core di Windows)
- È stata aggiunta la possibilità di elevare i privilegi dei processi (a un processo inizialmente avviato come utente normale possono essere concessi privilegi di amministratore). Durante la creazione di processi server (msi action server) e di processi che chiamano le funzioni RtlCreateUserProcess() e CreateProcessInternal(), è attivato per default un token amministrativo limitato.
- Quando si recuperano informazioni sulle etichette delle unità, si utilizza, quando possibile, l'accesso ai servizi di sistema tramite DBus, invece di tentare l'accesso diretto al dispositivo.
- Il meccanismo di comunicazione interprocesso (IPC) Mailslots è ora implementato direttamente nel Wine server, consentendo un supporto completo per la semantica di Windows.
- È stata implementata l'attesa degli eventi della porta seriale in modalità asincrona.
- È stata aggiunta la piena supporto per le estensioni del processore XSTATE nei contesti del thread, consentendo l'uso di nuove estensioni vettoriali come AVX-512.
- Applicazioni integrate
- Il motore di elaborazione degli ingressi utilizzato nell'interprete dei comandi cmd.exe è stato riscritto. In cmd.exe è stato aggiunto il supporto per le operazioni '||' e '&&'.
- Nell'utilità findstr è stato aggiunto il supporto per le espressioni regolari e la ricerca senza distinzione tra maiuscole e minuscole.
- Nelle utilità regsvr32 e rundll32 è stata aggiunta la possibilità di registrare moduli ARM64EC.
- Sono state aggiunte le utilità: sort per ordinare i dati di ingresso, fc per confrontare file e where per cercare file.
- Nell'applicazione wmic è stata implementata la modalità di funzionamento interattivo.
- In Explorer è stato aggiunto il supporto opzionale per il menu di avvio e la barra degli strumenti. È stato assicurato il lancio di explorer.exe con diritti d'accesso limitati.
- Strumenti per lo sviluppo
- In winebuild è stata aggiunta l'opzione '-marm64x' per la generazione di librerie ibride ARM64X.
- In winegcc è stata aggiunta l'opzione '-marm64x' per consentire la compilazione per ARM64X.
- Nei file generati utilizzando il linguaggio di descrizione delle interfacce IDL (Interface Definition Language), sono coinvolti componenti che supportano completamente l'esecuzione in modalità interpretazione.
- Nel compilatore del linguaggio di descrizione dell'interfaccia IDL (Interface Definition Language) è stato aggiunto il supporto per la generazione di librerie di tipi (TypeLib) nel formato più vecchio (SLTG).
- Nell'utilità winedump è stata aggiunta la supporto per il salvataggio dei dump delle tabelle minidump, delle informazioni sulle eccezioni C++ e delle risorse typelib.
- Varie
- Migliorato il supporto per il protocollo di scambio delle chiavi Diffie-Hellman (DH). Aggiunta la possibilità di configurare e ottenere parametri DH. Implementati gestori per la creazione di coppie di chiavi pubbliche e private.
- È garantito l'uso del padding OAEP (Optimal Asymmetric Encryption Padding) insieme all'algoritmo RSA.
- Nell'API DirectPlay è stata implementata la supporto per le sessioni di rete.
- È stata instaurata la gestione degli stati di input/output asincrono in modalità WoW64 (Windows-on-Windows a 64 bit), che permette di eseguire applicazioni Windows a 32 bit in sistemi Unix a 64 bit.
- È stata aggiunta la supporto per il caricamento dei driver ODBC per i database costruiti per Windows.
- Per la piattaforma ARM è stata implementata la completa supporto per RPC/COM, C++ RTTI (Run-Time Type Information) e le eccezioni C++.
- Nel runtime C è stata implementata la supporto per la codifica UTF-8 nelle funzioni ANSI.
- Le capacità del motore MSHTML sono state ampliate. È stata aggiunta la supporto per prototipi e costruttori di oggetti. Nel motore JavaScript è stata aggiunta una nuova interfaccia per il binding degli oggetti per MSHTML. Le funzioni incorporate di MSHTML sono state convertite in oggetti JavaScript corretti. È stato migliorato il garbage collector per JavaScript, che ora copre tutti i contesti di esecuzione degli script nel thread. È stata aggiunta la supporto per gli oggetti JavaScript ArrayBuffer e DataView.
- È stata aggiunta al sistema di integrazione continua basato su Gitlab la supporto per l'analisi statica utilizzando Clang e i report sui test JUnit.
- È stata incorporata la libreria Capstone 5.0.3, attraverso la quale è realizzata la disassemblazione nel debugger WineDb.
- Aggiornati alle nuove versioni i componenti: Vkd3d 1.14, Faudio 24.10, FluidSynth 2.4.0, LDAP 2.5.18, LCMS2 2.16, LibJpeg 9f, LibMPG123 1.32.9, LibPng 1.6.44, LibTiff 4.7.0, LibXml2 2.12.8, LibXslt 1.1.42 e Zlib 1.3.1.
Fonte: opennet.ru
