Tutti sappiamo che il kernel Linux è scritto in C. Quello che potreste non sapere è che è scritto in un C ormai obsoleto da tempo. Linux è scritto nello standard C89 che risale al 1989, anche noto come ANSI X3.159-1989 o ANSI C. Linus Torvalds ha deciso che è giunto il momento di tenersi al passo con i tempi e di passare ufficialmente allo standard del 2011, noto come standard C11.
Questa è una transizione molto importante anche se bisogna sottolineare che C89 ha ancora oggi un supporto pressoché universale. Poiché qualsiasi compilatore C è compatibile con le versioni precedenti, non avrete problemi a compilare o a eseguire un programma C89. Quindi, un compilatore conforme a C11 non avrà alcun problema con software scritto in C89.
Linux: il motivo della transizione da C89 a C11
Se non c’era alcuna urgenza come mai Linus ha deciso di avviare questa transizione?
La situazione è giunta all’attenzione di Torvalds quando, al fine di correggere un potenziale problema di sicurezza, è emerso un problema nella patch. Mentre risolveva questo problema, Torvalds si è reso conto che lo standard C in uso non consente di dichiarare le variabili di iterazione all’interno dei loop.
Questa caratteristica è disponibile a partire da C99, versione che non ha riscosso particolare successo. Per questo lo sviluppatore Arnd Bergmann ha suggerito di saltare il passaggio a C99 e passare direttamente al più recente C11. Quest’idea è piaciuta a Linus il quale non ha ravvisato problemi e anzi ha deciso di testare il passaggio al nuovo standard a partire dalla merge window di Linux 5.18 (attesa per questo mese).
La transizione dovrebbe essere molto semplice considerando che la versione meno recente del compilatore necessaria per compilare il kernel, ovvero GCC 5.1, supporta già C11.
Mi piacerebbe davvero fare un passo avanti su questo fronte.
così il padre del pinguino.
Chiaramente l’avvicendamento potrebbe richiedere più tempo del previsto, alcuni temono che questa svolta potrebbe dar luogo a sorprese sgradite difficilmente individuabili a priori. Una lunga sessione di test di non regressione è in arrivo.
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.