
Vi è mai capitato di aggiornare una libreria con la velocità di un centrista che cerca consenso, solo per scoprire mezz’ora dopo che la nuova versione è stata rimossa perché conteneva del codice malevolo? Nel mondo della programmazione, la velocità è tutto, ma quando si parla di sicurezza, andare troppo veloci può trasformare il vostro progetto in un cavallo di Troia senza nemmeno accorgervene.
Con l’uscita della versione 1.100, Rust introduce una funzione che definirei molto ‘zen’: il min-publish-age. In pratica, Cargo ora permette di impostare un periodo di quarantena (o ‘cooldown’) per le nuove versioni dei pacchetti. Se impostate una regola come «3 days», Cargo ignorerà qualsiasi versione pubblicata meno di tre giorni fa. L’idea è semplice: lasciamo che la community e gli scanner automatici facciano il loro lavoro sporco. Se un pacchetto è tossico, di solito viene scoperto e rimosso entro poche ore. Aspettare tre giorni significa evitare di essere i primi ‘beta-tester’ non pagati di un attacco alla supply chain.
Per chi lavora in contesti dove la velocità di rilascio è vitale, non è un blocco invalicabile. Se sapete esattamente cosa state facendo e avete un motivo valido per saltare la quarantena, potete usare una variabile d’ambiente per forzare l’aggiornamento. È quel classico compromesso tra ‘voglio l’ultimo feature’ e ‘non voglio che il mio server diventi un botnet’.
Ma non è solo una questione di sicurezza. Il team di Rust ha lavorato pesantemente anche sotto il cofano, rivoluzionando il modo in cui la directory di build viene gestita. Se avete mai combattuto con i disastri causati dal condividere la stessa cartella di build tra diversi worktree di Git, preparatevi: il nuovo layout basato su hash della configurazione punta a eliminare quelle situazioni assurde in cui non si capisce più quale binario stia girando. È un cambiamento interno che potrebbe rompere qualche script un po’ troppo ‘creativo’ o basato su workaround vecchi, ma è un passo necessario verso sistemi di caching molto più intelligenti e performanti.
Infine, come sempre, abbiamo una lista di API stabilizzate che rendono la gestione della memoria e delle allocazioni ancora più fluida. Molte nuove implementazioni per `Allocator` e metodi come `Box::new_in` promettono di rendere la gestione custom della memoria meno traumatica.
In breve, Rust 1.100 non cerca di darti nuove superpoteri, ma cerca di darti un sistema più solido e meno incline al caos. Un po’ meno ‘frenesia da aggiornamento’, un po’ più ‘controllo della situazione’. E, onestamente, ne avevamo proprio bisogno.
Source: Rust 1.100
