In questo articolo Indice dei contenuti 2 sezioni
Il kernel Linux si prepara a voltare pagina su uno dei meccanismi più delicati di Android. Con l’integrazione delle modifiche al sottosistema char/misc, Linus Torvalds ha dato il via libera alla rimozione del vecchio driver Binder scritto in linguaggio C, che lascia così campo libero alla sua versione sviluppata in Rust. Non si tratta di un ritocco marginale né di un dettaglio per addetti ai lavori, perché tocca il cuore delle comunicazioni interne della piattaforma mobile di Google.
Binder è infatti il componente che consente ai processi di Android di dialogare tra loro attraverso un sistema di comunicazione tra processi, noto con la sigla IPC. Parliamo quindi di un tassello essenziale dell’architettura software che fa funzionare smartphone e tutti gli altri dispositivi basati sul sistema operativo del robottino verde. Sostituirlo significa mettere mano a una delle fondamenta, non a una funzione accessoria.
Perché Google ha puntato su Binder in Rust
La versione originale del driver, nata in C, è cresciuta parecchio nel tempo seguendo l’evoluzione di Android. Anno dopo anno il codice è diventato sempre più intricato e la sua manutenzione si è trasformata in un lavoro decisamente oneroso, al punto da rendere complicato qualsiasi intervento sull’implementazione esistente. Da qui la scelta di riscriverlo da capo in Rust, con l’obiettivo di ottenere una base più semplice da gestire.
Il punto di forza del linguaggio sta soprattutto nella gestione della memoria. Rust integra meccanismi pensati proprio per prevenire molti degli errori legati all’accesso alla memoria, una famiglia di problemi che può minare la stabilità e la sicurezza dei componenti che girano con privilegi elevati, come appunto un driver del kernel. Va detto con onestà che queste garanzie non cancellano ogni possibile vulnerabilità. Permettono però di ridurre in modo concreto alcune categorie di difetti già durante la fase di sviluppo, e non è poco.
C’è poi un aspetto pratico che pesa molto nella decisione. Il nuovo Binder ha raggiunto la piena parità funzionale con il predecessore e, stando ai test tecnici, in determinate condizioni ha mostrato perfino prestazioni superiori. Eliminare del tutto l’implementazione in C è quindi un segnale chiaro: per Google l’alternativa in Rust è ormai matura e ha smesso di essere un semplice esperimento.
Un cambiamento destinato a miliardi di dispositivi
La portata della novità emerge bene dalle parole di uno dei principali manutentori del kernel Linux, che nel resoconto della richiesta di integrazione ha sottolineato come la versione in Rust sia stabile e destinata a essere usata in futuro su miliardi di dispositivi. In pratica il nuovo driver diventerà il punto di riferimento per tutto lo sviluppo futuro del sistema di comunicazione tra processi di Android.
La modifica fa parte del lavoro su Linux 7.4, ma questo non vuol dire che ogni smartphone riceverà subito un aggiornamento. L’arrivo effettivo sui telefoni dipenderà dai cicli di sviluppo di Android, dalle decisioni dei singoli produttori e dalle tempistiche di aggiornamento previste per ciascun modello. Insomma i tempi saranno inevitabilmente diversi da dispositivo a dispositivo.
Lo stesso pacchetto di modifiche char/misc non si limita al solo Binder. Al suo interno trovano spazio anche aggiornamenti ai driver IIO, quelli utilizzati per gestire sensori e dispositivi di input e output in ambito industriale, oltre a una serie di correzioni minori dedicate ad altri componenti del sistema.
Fonte: TecnoAndroid


