Scopri il Mondo del Vino: Curiosità e Segreti da Non Perdere!

Wine è uno strato di compatibilità per eseguire app Windows su Linux.

Wine è uno strato di compatibilità open-source che permette di eseguire applicazioni Windows su sistemi operativi basati su Unix, come Linux e macOS. Grazie a Wine, gli utenti possono utilizzare software progettati per Windows senza necessità di avere un sistema operativo Windows installato.

L’acronimo Wine significa “Wine Is Not an Emulator” (Wine non è un emulatore), poiché non emula completamente un ambiente Windows, ma traduce le chiamate di sistema di Windows nelle corrispondenti chiamate sul sistema ospite. Questo consente alle applicazioni Windows di funzionare in modo più efficiente e performante rispetto a una loro emulazione.

Caratteristiche

Compatibilità Binaria

  • Supporta l’esecuzione di programmi e librerie Windows 64-bit, 32-bit, 16-bit Windows 9x/NT/2000/XP/Vista/7/8/10 e Windows 3.x
  • Layout della memoria, gestione delle eccezioni, thread e processi compatibili con Win32
  • Progettato per sistemi operativi compatibili POSIX (ad es. Linux, macOS, FreeBSD) e Android
  • Compatibilità “bug-per-bug” con Windows

Supporto API Win32

  • Supporto per giochi e applicazioni basate su DirectX (supporto Direct3D fino a DirectX 12)
  • Supporto per giochi e applicazioni basate su OpenGL e Vulkan
  • Supporto DirectShow con utilizzo di GStreamer per i codec
  • Supporto Direct2D, DirectWrite
  • Le API audio MMDevice, XAudio, WinMM, DirectSound sono supportate
  • Stampa tramite driver PostScript sul sistema di stampa ospite (di solito CUPS)
  • Driver per Enhanced Metafile (EMF) e Windows Metafile (WMF)
  • Desktop-in-a-box o finestre mischiabili

Interfaccia con programmi Windows:

  • Grafica basata su X11, che permette la visualizzazione remota su qualsiasi terminale X
  • Grafica basata su macOS e Android
  • Font X11, TrueType (.ttf/.ttc) e Bitmap di Windows (.fon)
  • Dispositivi audio tramite ALSA, OSS, PulseAudio, Core Audio, ecc.
  • Tastiere multilingue e supporto per il metodo di input CJK tramite XIM
  • Modem, dispositivi seriali
  • Rete (TCP/IP e IPX)
  • Scanner ASPI
  • Tablet Windows tramite XInput (es. Wacom)
  • Dispositivi di cattura video tramite v4l2
  • Dispositivi HID tramite IOHid (MacOS), evdev (Linux), hidraw (Linux), SDL2

Copertura API e portabilità

  • Progettato per la compatibilità di codice sorgente e binario con il codice Win32
  • Suite di test API Win32 per garantire la compatibilità
  • Compilabile con un’ampia gamma di compilatori C
  • Permette la miscelazione di codice Win32 e POSIX
  • Permette la miscelazione di binari ELF (.so) e PE (.dll/.exe) nello stesso spazio di indirizzi
  • File di intestazione compatibili con Win32
  • Documentazione API generata automaticamente
  • Compilatore di risorse
  • Compilatore di messaggi
  • Compilatore IDL
  • Ampio supporto Unicode
  • Internazionalizzazione: Wine supporta 16 lingue
  • Debugger integrato e messaggi di traccia configurabili
  • Supporto per il controllo della memoria esterna tramite Valgrind
  • Programmi di esempio

Novità

Il team di Wine è orgoglioso di annunciare che la release stabile Wine 10.0 è ora disponibile.

Questa release rappresenta un anno di sforzi nello sviluppo e più di 6.000 cambiamenti individuali. Contiene un gran numero di miglioramenti che sono elencati di seguito. I principali punti salienti sono la nuova architettura ARM64EC e il supporto alla scala DPI elevata.

ARM64

  • L’architettura ARM64EC è pienamente supportata, con parità di funzionalità con il supporto ARM64.
  • I moduli ARM64X ibridi sono pienamente supportati. Questo permette di mescolare codice ARM64EC e ARM64 puro in un unico binario. Tutto Wine può essere costruito come ARM64X passando l’opzione –enable-archs=arm64ec,aarch64 a configure. Questo richiede ancora uno strumento di compilazione LLVM sperimentale, ma si prevede che la prossima release LLVM 20 sarà in grado di compilare Wine ARM64X senza problemi.
  • L’interfaccia di emulazione x86 a 64 bit è implementata. Questo sfrutta il supporto ARM64EC per eseguire tutto il codice di Wine come nativo, con solo il codice x86-64 dell’applicazione che richiede emulazione.
  • Al momento non è fornita una libreria di emulazione con Wine, ma può essere utilizzata una libreria esterna che esporta l’interfaccia di emulazione, specificando il suo nome nella chiave di registro HKLMSoftwareMicrosoftWow64amd64. L’emulatore FEX implementa questa interfaccia quando è costruito come ARM64EC.
  • Si noti che il supporto ARM64 richiede che la dimensione della pagina di sistema sia di 4K, poiché questo è quanto specificato dall’ABI di Windows. L’esecuzione su kernel con pagine di 16K o 64K non è supportata in questo momento.

Grafica

  • Il supporto DPI elevato è implementato più accuratamente e le finestre non consapevoli del DPI sono ridimensionate automaticamente, invece di esporre dimensioni DPI elevate ad applicazioni che non le gestiscono.
  • Sono implementati flag di compatibilità per sovrascrivere il supporto DPI elevato, sia per applicazione sia globalmente nel prefisso.
  • Il rendering di finestre figlio Vulkan è supportato con il backend X11, per applicazioni che necessitano di rendering 3D su finestre figlio. Questo era già supportato con OpenGL, e ora il supporto Vulkan è equiparabile.
  • Il driver Vulkan supporta fino alla versione 1.4.303 della specifica Vulkan. Supporta anche le estensioni Vulkan Video.
  • Il collegamento dei font è supportato in GdiPlus.

Integrazione desktop

  • È disponibile un nuovo meccanismo di emulazione della modalità impostazioni dello schermo, ancora molto sperimentale, che può essere utilizzato per forzare i cambiamenti della modalità di visualizzazione per essere completamente emulati, invece di cambiare effettivamente le impostazioni dello schermo.
  • Le finestre sono imbottite e ridimensionate se necessario per adattarsi al display fisico, come se la risoluzione del monitor fosse cambiata, ma non viene richiesto alcun cambio di modalità, migliorando l’esperienza utente.
  • È fornito un nuovo applet del Pannello di controllo del desktop, desk.cpl, per ispezionare e modificare la configurazione del display. Può essere utilizzato anche per cambiare la risoluzione del desktop virtuale o per controllare le nuove impostazioni di visualizzazione emulate.
  • Le impostazioni di visualizzazione sono ripristinate ai valori predefiniti se un processo si blocca senza ripristinarle correttamente.
  • Le icone della barra delle applicazioni possono essere completamente disabilitate impostando NoTrayItemsDisplay=1 nella chiave HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer.
  • I lanciatori di shell possono essere disabilitati in modalità desktop impostando NoDesktop=1 nella chiave HKLMSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer.

Direct3D

  • Il renderer GL ora richiede GLSL 1.20, EXT_framebuffer_object e ARB_texture_non_power_of_two. Il backend shader ARB legacy non è più disponibile e l’impostazione OffscreenRenderingMode è stata rimossa.
  • L’esportazione dello stencil dello shader è implementata per i renderer GL e Vulkan.
  • È disponibile una pipeline a funzione fissa basata su HLSL per Direct3D 9 e versioni precedenti, che fornisce supporto per l’emulazione della funzione fissa per il renderer Vulkan. Può essere utilizzata anche per il renderer GL, impostando il valore D3D ffp_hlsl su un valore non nullo tramite il registro o la variabile di ambiente WINE_D3D_CONFIG.
  • Il renderer Vulkan utilizza diverse estensioni di stato dinamico, se disponibili, con l’obiettivo di ridurre il balbettio nei giochi.
  • È ora disponibile un backend shader GLSL alternativo che utilizza vkd3d-shader, e può essere selezionato impostando l’impostazione D3D shader_backend su glsl-vkd3d. Il supporto GLSL corrente di vkd3d-shader è incompleto rispetto al backend shader GLSL integrato, ma è in fase di sviluppo attivo.

Librerie di supporto Direct3D

  • È implementato il supporto iniziale per la compilazione degli effetti Direct3D utilizzando vkd3d-shader.
  • D3DX 9 supporta molti più formati di bump-map e palettizzati.
  • D3DX 9 supporta il salvataggio di superfici palettizzate nei file DDS.
  • D3DX 9 supporta la generazione di mipmap quando si caricano i file di texture volumetrica.
  • D3DX 9 supporta la lettura di file PNG a 48 bit e 64 bit.

Driver Wayland

  • Il driver grafico Wayland è abilitato per impostazione predefinita, ma il driver X11 ha ancora la precedenza se entrambi sono disponibili. Per forzare l’uso del driver Wayland in quel caso, assicurarsi che la variabile di ambiente DISPLAY non sia impostata.
  • Le finestre popup dovrebbero essere posizionate correttamente nella maggior parte dei casi.
  • OpenGL è supportato.
  • La ripetizione automatica dei tasti è implementata.

Multimedia

  • È introdotto un nuovo backend basato su FFmpeg, come alternativa al backend GStreamer. È inteso per migliorare la compatibilità con le pipeline Media Foundation. È ancora in fase sperimentale, tuttavia, e sarà necessario più lavoro, specialmente per la riproduzione consapevole di D3D. Può essere abilitato impostando il valore DisableGstByteStreamHandler=1 nella chiave di registro HKCUSoftwareWineMediaFoundation.
  • Le pipeline multimediali Media Foundation sono implementate più accuratamente, per le molte applicazioni che dipendono dalla esposizione dei singoli componenti di demultiplexing e decodifica. La risoluzione della topologia con creazione di demuxer e decoder e auto-plugging è migliorata.
  • DirectMusic supporta il caricamento di file MIDI.

Dispositivi di input / HID

  • I dispositivi HID grezzi con più collezioni di livello superiore sono analizzati correttamente ed esposti come dispositivi individuali all’applicazione Windows.
  • L’input e gli eventi del touchscreen sono supportati con il backend X11, e il supporto base multi-touch tramite i messaggi WM_POINTER è implementato. Anche i messaggi di finestra del mouse come WM_LBUTTON*, WM_RBUTTON* e WM_MOUSEMOVE sono generati dagli eventi del tocco primario.
  • Diverse strutture interne di USER32 sono memorizzate nella memoria condivisa, per migliorare le prestazioni e ridurre il carico del server Wine evitando viaggi di andata e ritorno al server.
  • È implementata una versione iniziale di un driver Bluetooth, con alcune funzionalità di base.
  • L’applet del Pannello di controllo del joystick joy.cpl consente di attivare alcune impostazioni avanzate.
  • Il layout della tastiera Dvorak è supportato correttamente.

Internazionalizzazione

  • I dati della località sono generati dal database Unicode CLDR versione 46. Le seguenti località aggiuntive sono supportate: kaa-UZ, lld-IT, ltg-LV e mhn-IT.
  • Le tabelle dei caratteri Unicode si basano sulla versione 16.0.0 dello standard Unicode.
  • I dati del fuso orario si basano sulla versione 2024a del database dei fusi orari IANA.

Internet e networking

  • Il motore JavaScript supporta una nuova interfaccia di binding degli oggetti, utilizzata da MSHTML per esporre i suoi oggetti in modalità conforme agli standard. Questo elimina la distinzione tra oggetti JavaScript e oggetti host all’interno del motore, consentendo agli script una maggiore flessibilità nell’interazione con gli oggetti MSHTML.
  • Le funzioni integrate di MSHTML sono veri oggetti funzione JavaScript, e altre proprietà utilizzano funzioni di accesso dove appropriato.
  • MSHTML supporta oggetti prototipo e costruttori per i suoi oggetti integrati.
  • Gli oggetti funzione in modalità MSHTML legacy supportano i metodi call e apply.
  • Il garbage collector JavaScript opera globalmente attraverso tutti i contesti di script all’interno di un thread, migliorando la sua accuratezza.
  • Gli oggetti JavaScript ArrayBuffer e DataView sono supportati.

RPC / COM

  • Le chiamate RPC/COM sono pienamente supportate su piattaforme ARM, incluse funzionalità come proxy senza stub e il typelib marshaler.
  • Tutti i proxy COM generati utilizzano la modalità di marshaling completamente interpretata su tutte le piattaforme.

Runtime C

  • Le eccezioni C++ e le informazioni sul tipo di runtime (RTTI) sono supportate su piattaforme ARM.
  • Le funzioni ANSI nel runtime C supportano la pagina di codice UTF-8.

Kernel

  • L’elevazione del processo è implementata, il che significa che i processi vengono eseguiti come utente normale per impostazione predefinita, ma possono essere elevati ad accesso amministrativo quando necessario.
  • Le etichette dei dischi sono recuperate da DBus quando possibile invece di accedere al dispositivo grezzo.
  • Le mailslot sono implementate direttamente nel server Wine invece di utilizzare una coppia di socket, per consentire il supporto della piena semantica di Windows.
  • L’attesa asincrona per gli eventi della porta seriale è reimplementata. L’implementazione precedente era stata interrotta dal lavoro di separazione PE in Wine 9.0.
  • Il pieno stato del processore XState è supportato nei contesti dei thread, abilitando il supporto per le estensioni vettoriali più recenti come AVX-512.

macOS