Il team di Rust ha annunciato il rilascio della versione stabile 1.84.0. Un aggiornamento che introduce diversi miglioramenti tra cui l'implementazione del nuovo risolutore di trait e un controllo più rigoroso sulle versioni delle dipendenze. È però da segnalare anche una modifica nella denominazione del target WASI (WebAssembly System Interface) che potrebbe causare delle interruzioni per le toolchain di chi non ha ancora aggiornato le proprie configurazioni.
Le novità di Rust 1.84.0
Una delle principali novità di questa release riguarda il gestore di pacchetti Cargo, ora in grado di riconoscere la versione minima supportata di Rust. Questa funzionalità non è stata abilitata di default ma consente a Cargo di ignorare automaticamente i pacchetti che richiedono una versione di Rust più recente rispetto a quella in uso. Ciò è possibile grazie al campo opzionale rust-version
nel manifesto di un package.
Sono stati poi compiuti dei progressi per il nuovo risolutore di trait, parte integrante del sistema di tipi di Rust. Questo componente determina se e come un tipo implementa un trait, analogamente a quanto avviene con le interfacce in altri linguaggi. Secondo il Rust Types Team, il nuovo risolutore dovrebbe correggere numerosi bug di lunga data, migliorare i tempi di compilazione e aprire la strada a futuri miglioramenti nel sistema di tipi.
Esso verrà utilizzato per il controllo di coerenza assicurando che esista al massimo un'implementazione di un trait per ogni tipo specifico. Parliamo però di una feature non ancora completa.
Le API per il controllo della provenienza dei puntatori sono un'altra novità dell'aggiornamento. Si riveleranno utili soprattutto nelle conversioni tra puntatori e interi. Queste interfacce puntano a risolvere delle ambiguità intrinseche e beneficiano di strumenti come Miri per la verifica formale della correttezza del codice.
La nuova denominazione del target WASI
È importante notare che il target wasm32-wasi
non è più disponibile essendo stato rinominato in wasm32-wasip1
nella versione 1.71 di Rust. Gli sviluppatori che non hanno ancora effettuato la migrazione potrebbero riscontrare errori durante l'aggiornamento. Per risolvere il problema è consigliabile rimuovere il vecchio target con il comando:
rustup target remove wasm32-wasi
prima di procedere all'aggiornamento.
La denominazione originale wasm32-wasi
per una versione preliminare è stata riconosciuta come un errore. Essa infatti non evidenziava adeguatamente lo stato di sviluppo dell'interfaccia.