Scriviamo spesso dell’evoluzione del Kernel, e del supporto che riesce a dare ad una serie molto ampia di dispositivi ed architetture diverse fra loro. Ma quegli sviluppi sono software, codice scritto con linguaggio di programmazione C: serve una traduzione in linguaggio macchina per rendere comprensibile (ed eseguibile) quanto scrivono i programmatori al computer, traduzione fatta da un programma apposito, il compilatore.
Senza l’esistenza di un compilatore per una certa architettura, quella architettura non potrebbe eseguire quel codice.
Storicamente in Linux questo compilatore per C è GCC (GNU Compiler Collection – Collezione [di strumenti] per la Compilazione GNU). GCC lavora in (almeno) due fasi, gestite da altrettanti componenti:
- Il frontend: un programma, specifico per ogni linguaggio di programmazione supportato, esegue la traduzione delle istruzioni ad un linguaggio intermedio, interno, indipendente dall’architettura finale di destinazione;
- Il backend: un programma, specifico per ogni architettura supportata, esegue la traduzione di questo linguaggio intermedio nelle istruzioni specifiche per l’architettura.
Questa divisione di compiti non solo ha permesso il supporto (e l’aggiunta nel tempo) di molti linguaggi in ingresso, ma anche il mantenimento del supporto per varie architetture. A patto che rimanga stabile la rappresentazione interna, ovvero quel linguaggio intermedio. Ma, ovviamente, anche quel linguaggio è soggetto ad evoluzione.
Con il rilascio di GCC 10, attualmente in sviluppo ma atteso a breve, una parte di quel linguaggio interno è stato definito deprecato, in quanto sostituito da una versione nuova, migliore ma non compatibile. Non solo: con il prossimo rilascio, quello della versione 11, ne è prevista proprio la rimozione. Quindi, per allora, tutti i backend dovranno usare la nuova implementazione per poter funzionare.
Per chi è curioso di cosa cambi in particolare, riportiamo la questione come l’abbiamo letta: per i condition codes viene deprecato il metodo di rappresentazione CC0 in favore di MODE_CC. Non vi nascondiamo che, essendo i dettagli davvero molto tecnici, non li comprendiamo nemmeno noi abbastanza da spiegarveli. Ma che la modifica sia importante è chiaro.
I backend per le architetture più usate e comuni sono già stati aggiornati, lasciando fuori quelle meno usate, e in particolare quelle storiche. Tra queste, l’architettura Motorola 68000. Nata e adottata nel 1979 (festeggia ben 40 anni), risulta tutt’ora supportata e mantenuta anche nel Kernel Linux (indicata come m68k).
Alcuni sviluppatori nostalgici si sono impegnati a reimplementare il backend per usare il nuovo linguaggio, assicurando il supporto anche per il rilascio della versione 11 (e successive) di GCC. Sicuramente l’esistenza di una campagna di bountysource (taglia per il codice sorgente) ha aiutato a trovare volontari: queste campagne ricompensano il programmatore che produce codice usabile direttamente con un compenso in denaro. E, in questo caso, i 30 sviluppatori si sono divisi più di 5500 dollari.
Un elenco di oggetti e tecnologie che hanno avuto a che fare con questo processore, non esaustivo ed in ordine rigorosamente sparso:
- I computer Commodore Amiga
- I pimi SGI (prima di passare a MIPS, architettura che per inciso, è supportata dal Kernel 5.5)
- Le calcolatrici grafiche Texas Instrument, come la TI-89 (che qualunque studente di ingegneria/fisica/matematica ha usato, o qualche clone)
- Il Sega Megadrive (quanti di noi dinosauri che se lo ricordano l’hanno usato, o anche solo desiderato?)
- I computer NeXT, come il Cube, su cui Barners-Lee ha sviluppato HTML e HTTP
- I primi Apple Macintosh (prima di passare a PowerPC)
Come vedete, l’elenco è ampio, pertanto il mantenimento del supporto a questo processore ci fa particolarmente piacere perché è un pezzo di storia che sopravvive ai nostri giorni e che in pochi sanno quanto sia stato importante aver utilizzato.
C’è bisogno di ribadire, per l’ennesima volta, che questo è possibile solo grazie all’open-source ed ai volontari che si sono dedicati ad esso? Crediamo di no, ma… repetita iuvant (le cose ripetute aiutano). Anche se, ammettiamo, essere un piacere puramente sentimentale: non osiamo pensare quanto possa impiegare il boot del Kernel 5.5 su un PowerBook 100 a 16 MHz con 8 MB di RAM…
Ho coltivato la mia passione per l’informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.
Lascia un commento