La versione Rust 1.88, distribuita ieri 26 giugno 2025, introduce miglioramenti sia a livello di sintassi che di comportamento del compilatore. Si tratta di un aggiornamento puntuale che rifinisce strumenti già apprezzati, ma con un occhio di riguardo per chi lavora a basso livello.

Tra le novità più rilevanti c’è il supporto per le naked functions, la possibilità di concatenare dichiarazioni let
all’interno di condizioni if
e while
; poi, nuove capacità del linguaggio cfg
con i boolean literals, e una pulizia automatizzata della cache in Cargo. Tutto questo si inserisce in un contesto in cui Rust continua a consolidarsi come alternativa a linguaggi storicamente dominanti come C e C++.
Rust 1.88: naked functions
Una delle caratteristiche più tecniche introdotte in Rust 1.88 è la possibilità di scrivere funzioni naked; ovvero funzioni prive di epilogo e prologo generati dal compilatore. Queste funzioni sono etichettate con #[unsafe(naked)]
e permettono a chi scrive codice di assumere il controllo completo del corpo della funzione tramite un unico blocco naked_asm!
. Questo approccio è pensato per casi specifici in cui la precisione e l’efficienza a livello di istruzioni assembly sono prioritarie.
Un esempio tipico è il codice che manipola registri della CPU o interviene in ambienti embedded, dove ogni ciclo di clock conta. A differenza di global_asm!
, le naked functions risultano più ergonomiche da gestire dato che permettono di isolare singole routine in un contesto leggibile e ben incapsulato. Tuttavia, l’utilizzo richiede cautela: non è previsto alcun supporto implicito per il passaggio dei parametri o il ritorno dei valori. Quindi, devono essere gestiti interamente a mano.
Il supporto a queste funzioni consolida Rust come linguaggio capace di interfacciarsi con gli strati più profondi dell’hardware; offre una porta diretta per lo sviluppo di kernel, driver o microcontrollori con logiche custom.
Let chaining: leggibilità e concisione
Un’altra miglioria è il supporto per i cosiddetti let chains, introdotti nell’edition 2024 del linguaggio. Questa funzione permette di concatenare dichiarazioni let
utilizzando &&
all’interno delle condizioni if
e while
. Quindi, il flusso diventa più naturale della logica condizionale, evitando l’annidamento eccessivo e migliorando la leggibilità.
Un esempio pratico:
if let Channel::Stable(v) = release_info()
&& let Semver { major, minor, .. } = v
&& major == 1
&& minor == 88 {
println!("let_chains attivo!");
}
Questa sintassi riduce la distanza semantica tra if
e if let
; rende più fluido scrivere condizioni complesse senza sacrificare chiarezza. La funzionalità sfrutta un cambiamento nella gestione dello scope temporaneo introdotto nella nuova edizione del linguaggio.
Per sfruttare let_chains
occorre quindi aggiornare l’edizione del proprio crate
a Rust 2024. Chi lavora su codice legacy dovrà valutarne con attenzione l’introduzione per evitare incompatibilità.
Cargo e configurazioni: manutenzione e flessibilità
Rust 1.88 estende anche la capacità espressiva della compilazione condizionale attraverso il supporto ai boolean literals nel linguaggio cfg
. Ora è possibile usare direttamente cfg(true)
e cfg(false)
in modo esplicito, evitando i precedenti costrutti impliciti come cfg(all())
o cfg(any())
, spesso fonte di ambiguità. Questo semplifica la gestione dei flag nei manifesti di Cargo e nelle configurazioni condizionali del codice.
Sempre sul fronte Cargo, il gestore dei pacchetti introduce una raccolta automatica dei file obsoleti in cache. Durante le build, Cargo scarica e memorizza numerosi pacchetti di dipendenze. Fino ad oggi, questa cache tendeva a crescere senza controllo. Con la nuova versione, vengono eliminati i file scaricati da più di tre mesi (se non riutilizzati), e quelli locali dopo un mese di inattività. Questo processo avviene in background; non incide sulle build offline e può essere disattivato tramite configurazione.
La funzione migliora la pulizia del sistema di sviluppo senza intaccare la produttività. Per chi lavora con versioni multiple di Cargo, è possibile personalizzare il comportamento tramite cache.auto-clean-frequency
, mantenendo così la compatibilità con ambienti legacy.
Versione Rust 1.88: conclusione
Rust 1.88 è un aggiornamento che affina e arricchisce il linguaggio con strumenti utili per chi opera in ambiti ad alta complessità. Le naked functions aprono nuove possibilità nel campo dello sviluppo low-level; i let chains offrono leggibilità ed espressività superiori; mentre le migliorie in Cargo e nel sistema di configurazione rendono l’ecosistema più ordinato e prevedibile.
Questo rilascio conferma come il team di Rust mantenga una visione coerente e pragmatica. Le novità sono indirizzate a sviluppatori esperti ma beneficiano anche chi cerca maggiore chiarezza e manutenzione più agile.
Chi ha già installato Rust può passare a questa versione con il comando rustup update stable
. Per gli altri, è disponibile sul sito ufficiale https://www.rust-lang.org/install.html.