Rust nel kernel Linux e Kids Mode in Microsoft Edge: due notizie lontanissime. La prima riguarda come si sviluppa il software di sistema, la seconda come si prova a guidare la navigazione dei bambini.

Le tiene insieme una domanda: quali problemi si possono prevenire progettando, invece di rincorrerli quando si sono già manifestati?

Rust: prestazioni e gestione della memoria

Rust è un linguaggio compilato nato dal lavoro di Graydon Hoare e sviluppato inizialmente con il sostegno di Mozilla. Quello che mi interessa è la combinazione fra controllo delle risorse e prevenzione di alcune classi di errore.

Usa regole di proprietà e prestito dei valori per verificare molti aspetti della gestione della memoria già in compilazione. Sposta cioè sul compilatore controlli che altrove restano affidati all'attenzione di chi scrive — e l'attenzione, alle tre di notte, cala.

Questo non rende un programma Rust privo di bug. Errori logici, interazioni con componenti esterni e uso di codice unsafe richiedono comunque analisi e verifiche.

Concorrenza non significa accesso senza regole

Nel software concorrente più attività procedono sovrapponendosi. Il problema non è farle partire insieme: è coordinare l'accesso alle risorse.

Rust offre strumenti e vincoli che prevengono alcune condizioni errate di condivisione. Non elimina stalli, errori di progettazione o qualsiasi comportamento indesiderato — quelli restano mestiere di chi progetta.

Il suo interesse per il software di sistema nasce proprio da qui: esprimere controlli utili senza rinunciare alle prestazioni.

Perché parlarne nel kernel Linux

Il kernel Linux è scritto prevalentemente in C, con una lunga storia di strumenti, convenzioni e architetture supportate. Aggiungere un linguaggio porta possibilità e insieme costi di integrazione e manutenzione.

La proposta è legata al lavoro di Miguel Ojeda e di altri sviluppatori. Non si tratta di riscrivere Linux in Rust, ma di esplorare un uso circoscritto.

Il supporto iniziale è poi entrato in Linux 6.1, come ricorda la documentazione del kernel. Questa evoluzione va tenuta distinta dalla fase di proposta di cui sto parlando qui.

Compilatori e architetture fanno parte della scelta

C'è poi la catena di compilazione, con il rapporto fra LLVM e GCC. Un linguaggio adatto in astratto deve poter entrare nei processi reali con cui il kernel viene costruito e mantenuto.

La compatibilità dipende dalle versioni degli strumenti, dalle piattaforme e dalle funzionalità disponibili. Aggiungere Rust non significa abbandonare GCC per tutto il codice C, né cancellare le architetture che non supportano i componenti Rust.

Il vantaggio si valuta insieme ai compromessi, senza trasformare la scelta di un compilatore in una battaglia fra buoni e cattivi.

Il mio entusiasmo e i suoi limiti

Mi piace l'idea di prevenire certi errori attraverso il linguaggio stesso, e immagino benefici importanti per il kernel e per tutto quello che ci sta sopra.

Da qui però non discende nessun collegamento magico fra alto e basso livello, né la scomparsa delle macchine virtuali. Astrazioni, compilazione e virtualizzazione rispondono a problemi diversi e continueranno a esistere.

La direzione che trovo promettente è più modesta e più concreta: dare a chi sviluppa strumenti migliori per costruire componenti affidabili e verificabili.

Edge Kids Mode

La seconda notizia è una modalità di Edge per una navigazione guidata dei bambini: profili per fasce d'età, siti consentiti, ricerca filtrata, aspetto grafico dedicato.

Quello che apprezzo è rendere disponibili alcune impostazioni senza chiedere ai genitori di costruirsi tutto con estensioni separate. Le credenziali dell'adulto per uscire dalla modalità fanno parte di quel tentativo.

Non è però la garanzia che ogni contenuto raggiungibile sia adatto. E nessun filtro sostituisce la presenza di un adulto: è un aiuto, non una delega.

Una funzione che oggi non c'è più

Kids Mode è stata deprecata con Edge 117, come indicano le note di rilascio archiviate di Microsoft.

Questa pagina conserva il commento alla sua introduzione, non una procedura per attivarla oggi. E l'ipotesi che facevo su una futura integrazione nelle console era una mia previsione, non un annuncio.

Il principio però resta: gli strumenti di navigazione per i più piccoli devono essere comprensibili, mantenuti e adattati alla situazione — senza promettere un web sicuro al cento per cento, che non esiste.

Progettare meglio significa dichiarare i limiti

Rust e Kids Mode affrontano problemi diversi e non sono soluzioni confrontabili. Mi portano però a guardare la stessa cosa: come le scelte iniziali riducono errori e difficoltà.

Il valore di una tecnologia non cresce quando la descriviamo come infallibile. Cresce quando sappiamo quali problemi affronta, in quali condizioni funziona e che cosa resta in carico a chi la sviluppa e a chi la usa.