Con il rilascio di Swift 6.1, aggiornamento incluso in Xcode 16.3, Apple introduce una serie di miglioramenti che arricchiscono il linguaggio e lo Swift Package Manager. Tra le novità principali della nuova release troviamo un maggior controllo sull'inferenza del global actor, i package traits per una gestione condizionale delle funzionalità, miglioramenti per la concorrenza e importanti aggiornamenti per il testing.
Keyword nonisolated in Swift 6.1
Una delle novità più rilevanti di Swift 6.1 riguarda la possibilità di applicare la parola chiave nonisolated
non solo a proprietà e funzioni ma anche a interi tipi ed estensioni. Questo è utile in due scenari:
- quando si implementano protocolli actor-isolated con metodi che non richiedono isolamento;
- quando si vuole disattivare l'isolamento automatico imposto dal compilatore a causa di proprietà difficili da tracciare. Come i property wrapper.
Un aggiornamento minore ma utile riguarda la sintassi che ora consente le virgole finali (trailing commas) in tuple, liste di parametri, generici, closure capture list e interpolazioni di stringhe. Questo semplifica la generazione automatica di codice nei plugin e nelle macro.
Package traits per il Package Manager
I package traits rappresentano un'importante novità dello Swift Package Manager. Essi consentono di esporre delle funzionalità solo in ambienti specifici, come Embedded Swift o WebAssembly. Ciò facilita la compilazione condizionale e la gestione delle dipendenze opzionali.
Per quanto riguarda i test, Swift Testing introduce il protocollo TestScoping
che consente di definire traits personalizzati per modificare lo scope dei test. Questa novità si rivela utile ad esempio per collegare le risorse simulate ai valori locali. Inoltre, le macro #expect(throws:)
e #require(throws:)
sono state aggiornate con lo scopo di restituire un errore eventualmente catturato.
Come anticipato Swift 6.1 è ora disponibile su macOS con Xcode 16.3. Può essere poi installato sulle distribuzioni Linux tramite swiftly e sui sistemi operativi Windows con il package manager WinGet o con l'ausilio di Scoop..