La quarta milestone del linguaggio introduce diverse novità per la creazione, l'utilizzo e la gestione delle Collections, viene inoltre corretto un problema che fino ad ora influenzava negativamente le performance nell'uso dei dizionari grazie all'implementazione di Collections specifiche per le Dictionary keys e Dictionary values. Interessante anche il lavoro eseguito a carico dei Subscripts, classi e strutture per l'accesso agli elementi delle Collections, ora resi maggiormente generici grazie ai Generic Subscripts.

Sempre per quanto riguarda le nuove feature, Archives & Serialization forniscono ora uno strumento per la conversione di oggetti e valori da liste o notazioni JSON e rappresentazioni binarie; le API precedentemente utilizzate erano un retaggio di Objective-C, non essendo ottimizzare per Swift gli sviluppatori hanno optato per una soluzione alternativa con cui gestire i tipi nativi struct ed enum nonché per la serializzazione di formati esterni.

Da segnalare anche gli interventi effettuati per l'implementazione di String, stringhe Unicode locale insensitive che rappresentano una collezione di caratteri, grazie alla quale è possibile generare e manipolare sottostringhe. Supportati ora anche i Multi-line literals, costrutti già disponibili in diversi altri linguaggi che offrono un semplice sistema per la rappresentazione dei testi senza la necessità di concatenare manualmente le stringhe; tale procedura infatti non portava semplicemente ad una cattiva pratica (obbligata), ma produceva anche dei rallentamenti in fase di compilazione.

Una citazione merita anche la nuova Package API che consente ai pacchetti di specificare nuove impostazioni per garantire agli autori un maggior controllo sul building dei package e sull'organizzazione del sorgente. Ciascun package potrà dichiarare in un file una versione del linguaggio ("Swift tools version") che rappresenterà la release minima richiesta per il building

Per quanto riguarda le migrazioni, il compilatore supporta oggi due modalità: Swift 3.2 e Swift 4.0. La prima supporta parzialmente le nuove feature del linguaggio e i cambiamenti apportati alle API, la seconda potrebbe richiedere delle modifiche a carico dei sorgenti, ma in generale tale lavoro dovrebbe essere nettamente inferiore rispetto a quello previsto in passato a causa dell'avvicendamento delle release di Swift.

Via Swift

CommentaDi' la tua

Il tuo indirizzo email non sarà mostrato pubblicamente. I campi obbligatori sono contrassegnati da *