Tempo fa mi sono imbattuto in un progetto relativo alla possibilità di
convertire un file eseguibile binario per Microsoft Windows in uno per GNU/Linux
o Mac OS X. Alky, è questo il nome del
progetto, sembrerebbe estremamente interessante. Per ora il progetto è nelle
fasi iniziali e non vedo l'ora di provarlo.
In base a quanto affermato dagli sviluppatori le differenze rispetto i vari
emulatori (o "non-emulatori" come Wine) saranno notevoli, tali da dare un
carattere estremamente innovativo a questo progetto. Se volessimo eseguire un
programma con Wine attualmente il processo che viene fatto è quello di lanciare
un server (wineserver) che viene interrogato riguardo cosa fare per le richieste
relative alle API di Windows: in questo modo wineserver è l'anello di
congiunzione tra le istruzioni per Linux e quelle per Windows.
Questo processo viene fatto in diretta e al volo, ad ogni esecuzione del
binario per sistemi operativi Microsoft. Quello che non piace a chi ha avviato
il progetto Alky è anche questo: lo scambio di messaggi porta
inevitabilmente a una perdita di prestazioni. Inoltre non è possibile
fare alcuna ottimizzazione sul codice che verrà eseguito, essendo questo (nel
bytecode relativo a Linux) non noto.
Queste due motivazioni hanno portato gli sviluppatori di Alky a decidere di
cercare un sistema migliore, più performante e indipendente
dalla piattaforma per risolvere uno dei problemi più grossi che continua ad
avere GNU/Linux e gli altri sistemi operativi non Microsoft: la mancanza della
possibilità di eseguire codice nativo per Windows senza che questo non
significhi anche uno spreco di risorse. Questo di fatto si traduce
nell'impossibilità di eseguire alcune applicazioni, dalle quali per un motivo o
per l'altro non è possibile separarsi.
In molti erano stati contenti della scelta di Apple di passare a un sistema
operativo basato su Unix, per l'eventualità (certezza per alcuni) che molte
delle applicazioni disponibili sotto Mac venissero portate anche su Linux.
Questo a distanza di anni non è praticamente avvenuto e quasi
sempre se Linux ha colmato alcune lacune è stato per merito della comunità di
sviluppatori che ha rilasciato software libero sempre più competitivo.
Ma cosa c'è dietro il progetto Alky? Penso che vada preso
per quello che realmente è: un progetto nato con l'idea di risolvere il problema
in modo simile (con differenze nette) a quello che già fa Wine, partendo da
zero, con in mente le performance. E, cosa non da poco, offrendo il supporto
anche ad applicazioni nate per altre architetture hardware. Il suo funzionamento
infatti si basa sulla possibilità di reinterpretare i file binari in un bytecode
leggibile in modo nativo da Linux.
In pratica un'applicazione verrà processata da alkynator
che
analizzando il codice, le librerie richieste e le operazioni da seguire
convertirà tutto in un file binario eseguibile su Linux senza bisogno di altro.
Questo però detta una necessità di primaria importanza: conoscere tutte le
dipendenze dell'applicazione e saperle tradurle in chiamate interpretabili da
Linux.
Questo esiste già, attraverso le libwine
, ma la scelta degli
sviluppatori è stata quella di non servirsene, per riscrivere da zero una parte
fondamentale di questo progetto. Il motivo è quello di cercare di ottimizzare il
codice puntando a determinati tipi di applicazioni (soprattutto i giochi) e
riuscendo anche a rendere possibile la creazione di binari per architetture
anche non x86.
Questo significa che probabilmente abbiamo davanti un altro progetto
molto ambizioso che ci metterà diverso tempo per raggiungere una
maturità tale da poter raggiungere il proprio obbiettivo, con un ambiente
dinamico attorno che rilascia nuovi strumenti di sviluppo, nuove applicazioni e
nuovi sistemi operativi, di solito a sorgente chiuso.
Forse sono scettico, di certo son contento dello sviluppo di una applicazione
che potrà far avvicinare nuovi utenti a GNU/Linux, ma, lo ripeto, penso che
questo genere di progetti vada preso per quello che realmente sono, senza troppi
entusiasmi, e cioè come uno strumento che difficilmente sarà usabile da subito
nel modo in cui gli utenti vorrebbero e che ha davanti a se lunghi tempi di
sviluppo.