Versione stabile di Wine 7.0

Dopo un anno di sviluppo e 30 versioni sperimentali, è stata presentata una versione stabile dell'implementazione aperta dell'API Win32: Wine 7.0, che incorporava oltre 9100 modifiche. I principali risultati della nuova versione includono la traduzione della maggior parte dei moduli Wine in formato PE, il supporto per i temi, l'espansione dello stack per joystick e dispositivi di input con interfaccia HID e l'implementazione dell'architettura WoW64 per l'esecuzione di programmi a 32 bit in un ambiente Ambiente a 64 bit.

Wine ha confermato il pieno funzionamento di 5156 (un anno fa 5049) programmi per Windows, altri 4312 (un anno fa 4227) programmi funzionano perfettamente con impostazioni aggiuntive e DLL esterne. 3813 programmi (3703 anni fa) presentano piccoli problemi operativi che non interferiscono con l'utilizzo delle principali funzioni delle applicazioni.

Principali innovazioni in Wine 7.0:

  • Moduli in formato PE
    • Quasi tutte le DLL sono state convertite per utilizzare il formato di file eseguibile PE (Portable Executable, utilizzato su Windows) anziché ELF. L'uso di PE risolve i problemi legati al supporto di vari schemi di protezione dalla copia che verificano l'identità dei moduli di sistema su disco e in memoria.
    • È stata implementata la possibilità di interagire tra moduli PE e librerie Unix utilizzando la chiamata di sistema standard del kernel NT, che consente di nascondere l'accesso al codice Unix dai debugger di Windows e monitorare la registrazione dei thread.
    • Le DLL integrate vengono ora caricate solo se sul disco è presente un file PE corrispondente, indipendentemente dal fatto che si tratti di una libreria reale o di uno stub. Questa modifica consente all'applicazione di vedere sempre l'associazione corretta ai file PE. Per disabilitare questo comportamento, è possibile utilizzare la variabile d'ambiente WINEBOOTSTRAPMODE.
  • WoW64
    • È stata implementata l'architettura WoW64 (Windows-on-Windows a 64 bit), che consente di eseguire applicazioni Windows a 32 bit in processi Unix a 64 bit. Il supporto viene implementato tramite la connessione di un livello che traduce le chiamate di sistema NT a 32 bit in chiamate a 64 bit a NTDLL.
    • I livelli WoW64 sono preparati per la maggior parte delle librerie Unix e consentono ai moduli PE a 32 bit di accedere alle librerie Unix a 64 bit. Una volta che tutti i moduli saranno stati convertiti in formato PE, sarà possibile eseguire applicazioni Windows a 32 bit senza installare librerie Unix a 32 bit.
  • Temi
    • È stato implementato il supporto del tema. Sono inclusi i temi di design “Light”, “Blue” e “Classic Blue”, selezionabili tramite il configuratore WineCfg.
    • Aggiunta la possibilità di personalizzare l'aspetto di tutti i controlli dell'interfaccia tramite temi. L'aspetto degli elementi viene aggiornato automaticamente dopo aver modificato il tema del design.
    • Il supporto dei temi è stato aggiunto a tutte le applicazioni Wine integrate. Le applicazioni sono state adattate a schermi con elevata densità di pixel (High DPI).
  • Sottosistema grafico
    • È stata aggiunta una nuova libreria Win32u che include parti delle librerie GDI32 e USER32 relative all'elaborazione grafica e alla gestione delle finestre a livello di kernel. In futuro inizierà il lavoro sul porting di componenti driver come winex32.drv e winemac.drv su Win11u.
    • Il driver Vulkan supporta la specifica API grafica Vulkan 1.2.201.
    • Fornito supporto per l'output di oggetti geometrici tratteggiati tramite l'API Direct2D, con la possibilità di verificare se un clic va a buon fine (hit test).
    • L'API Direct2D fornisce il supporto iniziale per gli effetti visivi applicati utilizzando l'interfaccia ID2D1Effect.
    • L'API Direct2D ha aggiunto il supporto per l'interfaccia ID2D1MultiThread, che viene utilizzata per organizzare l'accesso esclusivo alle risorse nelle applicazioni multi-thread.
    • Il set di librerie WindowsCodecs fornisce supporto per la decodifica di immagini nel formato WMP (Windows Media Photo) e la codifica di immagini nel formato DDS (DirectDraw Surface). Non supportiamo più la codifica delle immagini nel formato ICNS (per macOS), che non è supportato su Windows.
  • Direct3D
    • Il nuovo motore di rendering è stato notevolmente migliorato, traducendo le chiamate Direct3D all'API grafica Vulkan. Nella maggior parte dei casi, il livello di supporto per Direct3D 10 e 11 nel motore basato su Vulkan è stato portato alla parità con il vecchio motore basato su OpenGL. Per abilitare il motore di rendering Vulkan, imposta la variabile del registro Direct3D "renderer" su "vulkan".
    • Sono implementate molte funzionalità di Direct3D 10 e 11, inclusi contesti differiti, oggetti di stato che operano nel contesto del dispositivo, offset persistenti nei buffer, cancellazione di visualizzazioni di texture fuori ordine, copia di dati tra risorse in formati senza tipo (DXGI_FORMAT_BC3_TYPELESS, DXGI_FORMAT_R32G32B32A32_TYPELESS), ecc. .
    • Aggiunto supporto per configurazioni multi-monitor, che consente di selezionare un monitor per visualizzare un'applicazione Direct3D in modalità a schermo intero.
    • L'API DXGI fornisce la correzione della gamma dello schermo, che può essere utilizzata dalle applicazioni basate su Direct3D 10 e 11 per modificare la luminosità dello schermo. Abilitato il recupero dei contatori dei framebuffer virtuali (SwapChain).
    • Direct3D 12 aggiunge il supporto per le firme root della versione 1.1.
    • Nel codice di rendering tramite l'API Vulkan, l'efficienza dell'elaborazione delle query è stata migliorata quando il sistema supporta l'estensione VK_EXT_host_query_reset.
    • Aggiunta la possibilità di generare framebuffer virtuali (SwapChain) tramite GDI se OpenGL o Vulkan non possono essere utilizzati per la visualizzazione, ad esempio durante l'output in una finestra da processi diversi, ad esempio in programmi basati sul framework CEF (Chromium Embedded Framework).
    • Quando si utilizza il backend shader GLSL, il modificatore "preciso" è garantito per le istruzioni dello shader.
    • L'API DirectDraw aggiunge il supporto per il rendering 3D nella memoria di sistema utilizzando dispositivi software come "RGB", "MMX" e "Ramp".
    • Le schede AMD Radeon RX 3M, AMD Radeon RX 5500/6800 XT/6800 XT, AMD Van Gogh, Intel UHD Graphics 6900 e NVIDIA GT 630 sono state aggiunte al database delle schede grafiche Direct1030D.
    • La chiave “UseGLSL” è stata rimossa dal registro HKEY_CURRENT_USER\Software\Wine\Direct3D, al posto della quale, a partire da Wine 5.0, è necessario utilizzare “shader_backend”.
    • Per supportare Direct3D 12, ora è necessaria almeno la versione 3 della libreria vkd1.2d.
  • D3DX
    • L'implementazione di D3DX 10 ha migliorato il supporto per il framework degli effetti visivi e aggiunto il supporto per il formato immagine Windows Media Photo (JPEG XR)
    • Aggiunte funzioni di creazione di texture fornite in D3DX10, come D3DX10CreateTextureFromMemory().
    • Le interfacce software ID3DX10Sprite e ID3DX10Font sono state parzialmente implementate.
  • Suono e video
    • I componenti aggiuntivi di GStreamer per DirectShow e il framework Media Foundation sono combinati in un unico backend WineGStreamer, che dovrebbe semplificare lo sviluppo di nuove API di decodifica dei contenuti.
    • Basati sul backend WineGStreamer, gli oggetti Windows Media sono implementati per la lettura sincrona e asincrona.
    • L'implementazione del framework Media Foundation è stata ulteriormente perfezionata, è stato aggiunto il supporto per la funzionalità IMFPMediaPlayer e l'allocatore di campioni ed è stato migliorato il supporto per i buffer di rendering EVR e SAR.
    • La libreria wineqtdecoder, che fornisce un decodificatore per il formato QuickTime, è stata rimossa (tutti i codec ora utilizzano GStreamer).
  • Dispositivi di input
    • Lo stack per i dispositivi di input che supportano il protocollo HID (Human Interface Devices) è stato notevolmente migliorato, fornendo funzionalità come l'analisi dei descrittori HID, l'elaborazione dei messaggi HID e la fornitura di driver mini-HID.
    • Nei backend del driver winebus.sys è stata migliorata la traduzione delle descrizioni dei dispositivi in ​​messaggi HID.
    • Aggiunto un nuovo backend DirectInput per i joystick che supportano il protocollo HID. È stata implementata la possibilità di utilizzare effetti di feedback nei joystick. Pannello di controllo joystick migliorato. Interazione ottimizzata con dispositivi compatibili con XInput. In WinMM, il supporto del joystick è stato spostato su DInput, invece di utilizzare il backend evdev su Linux e IOHID su macOS IOHID. Il vecchio driver del joystick winejoystick.drv è stato rimosso.
    • Sono stati aggiunti nuovi test al modulo DInput, basati sull'utilizzo di dispositivi HID virtuali e che non richiedono un dispositivo fisico.
  • Testo e caratteri
    • Aggiunto oggetto Set di caratteri a DirectWrite.
    • RichEdit implementa correttamente l'interfaccia TextHost.
  • Kernel (interfacce del kernel di Windows)
    • Quando si esegue un file eseguibile non identificato (come "wine foo.msi") in Wine, ora viene chiamato start.exe, che richiama i gestori associati al tipo di file.
    • Aggiunto il supporto per i meccanismi di sincronizzazione NtAlertThreadByThreadId e NtWaitForAlertByThreadId, simili ai futex in Linux.
    • Aggiunto il supporto per gli oggetti di debug NT utilizzati per eseguire il debug delle funzioni del kernel.
    • Aggiunto il supporto per le chiavi di registro dinamiche per salvare i dati sulle prestazioni.
  • Tempo di esecuzione C
    • Il runtime C implementa un set completo di funzioni matematiche, che vengono principalmente riprese dalla libreria Musl.
    • Tutte le piattaforme CPU forniscono il supporto corretto per le funzioni in virgola mobile.
  • Funzionalità di rete
    • Modalità di compatibilità migliorata per Internet Explorer 11 (IE11), che ora viene utilizzata per impostazione predefinita per l'elaborazione di documenti HTML.
    • La libreria mshtml implementa la modalità JavaScript ES6 (ECMAScript 2015), che fornisce supporto per funzionalità come l'espressione let e l'oggetto Map.
    • L'installazione dei pacchetti MSI con aggiunte al motore Gecko nella directory di lavoro di Wine ora viene eseguita quando necessario e non durante un aggiornamento di Wine.
    • Aggiunto il supporto per il protocollo DTLS.
    • È stato implementato il servizio NSI (Network Store Interface), che memorizza e trasmette informazioni sul routing e sulle interfacce di rete del computer ad altri servizi.
    • I gestori API WinSock come setsockopt e getsockopt sono stati spostati in NTDLL e nel driver afd.sys per conformarsi all'architettura Windows.
    • I file del database di rete di Wine, come /etc/protocols e /etc/networks, sono ora installati nella directory di lavoro di Wine, invece di accedere a database Unix simili.
  • Piattaforme alternative
    • Aggiunto supporto per apparecchiature Apple basate su chip M1 ARM (Apple Silicon).
    • Il supporto per le funzionalità BCrypt e Secur32 su macOS ora richiede l'installazione della libreria GnuTLS.
    • Gli eseguibili a 32 bit per le piattaforme ARM sono ora realizzati in modalità Thumb-2, simile a Windows. Per caricare tali file viene utilizzato un preloader.
    • Per le piattaforme ARM a 32 bit è stato implementato il supporto per le eccezioni di rimozione.
    • Per FreeBSD, il numero di query supportate per informazioni di sistema di basso livello, come lo stato della memoria e il livello di carica della batteria, è stato ampliato.
  • Applicazioni e strumenti di sviluppo integrati
    • L'utilità reg.exe ha aggiunto il supporto per le visualizzazioni del registro a 32 e 64 bit. Aggiunto il supporto per la copia delle chiavi di registro.
    • L'utilità WineDump ha aggiunto il supporto per il dump dei metadati di Windows e la visualizzazione di informazioni dettagliate sulle voci CodeView.
    • Wine Debugger (winedbg) offre la possibilità di eseguire il debug di processi a 32 bit da un debugger a 64 bit.
    • La possibilità di caricare librerie integrate nei file PE è stata aggiunta al compilatore IDL (widl), è stato fornito il supporto per attributi e costrutti specifici di WinRT ed è stata implementata una ricerca di librerie specifica per la piattaforma.
  • Sistema di assemblaggio
    • Nelle directory specifiche dell'architettura, le librerie vengono ora salvate con nomi che riflettono l'architettura e il tipo di eseguibile, come "i386-windows" per il formato PE e "x86_64-unix" per le librerie unix, consentendo il supporto per diverse architetture in un unico Wine installazione e fornire la compilazione incrociata di Winelib.
    • Per impostare un'opzione nelle intestazioni dei file PE che controlla la transizione all'utilizzo di DLL native, il flag '--prefer-native option' è stato aggiunto a winebuild (l'elaborazione DLL_WINE_PREATTACH in DllMain è stata interrotta).
    • Aggiunto il supporto per la versione 4 del formato dati di debug Dwarf, che ora viene utilizzato per impostazione predefinita durante la creazione delle librerie Wine.
    • Aggiunta l'opzione di build "—enable-build-id" per salvare identificatori di build univoci nei file eseguibili.
    • Aggiunto il supporto per l'utilizzo del compilatore Clang in modalità compatibilità MSVC.
  • Varie
    • I nomi delle directory tipiche nella shell utente (Shell di Windows) seguono lo schema utilizzato a partire da Windows Vista, ovvero Invece di "Documenti", ora viene creata una directory "Documenti" e la maggior parte dei dati viene salvata nella directory "AppData".
    • Il supporto per la specifica OpenCL 1.2 è stato aggiunto al livello della libreria OpenCL.
    • Il driver WinSpool ha aggiunto il supporto per diversi formati di pagina durante la stampa.
    • Aggiunto il supporto iniziale per MSDASQL, il provider Microsoft OLE DB per i driver ODBC.
    • Il motore di Wine Mono con l'implementazione della piattaforma .NET è stato aggiornato alla release 7.0.0.
    • I dati Unicode sono stati aggiornati alla specifica Unicode 14.
    • L'albero dei sorgenti comprende le librerie Faudio, GSM, LCMS2, LibJPEG, LibJXR, LibMPG123, LibPng, LibTiff, LibXml2, LibXslt e Zlib, che sono compilate in formato PE e non richiedono una versione in formato Unix. Allo stesso tempo, queste librerie possono anche essere importate dal sistema per utilizzare assembly esterni invece delle opzioni PE integrate.

Fonte: opennet.ru

Aggiungi un commento