Apple ha ufficialmente rilasciato Swift 5

Tra i tanti annunci di ieri da parte di Apple, uno è importante per gli sviluppatori: il rilascio ufficiale di Swift 5 con l’ABI Stability e altre novità.

Oltre a Apple TV+ (nuova piattaforma con programmi originali creati da talenti del cinema e della televisione), Apple News+ (servizio per l’abbonamento a riviste e giornali) e la nuova carta di credito Apple Card, ieri Apple ha anche annunciato ufficialmente annunciato Swift 5.

Ted Kremenek, manager di Apple responsabile dei team che si occupano di linguaggi e runtime, ha annunciato la nuova versione del linguaggio per r iOS, macOS, watchOS, tvOS, Linux, z/OS e altre piattaforme.

Swift 5 è compatibile a livello di sorgenti con Swift 4, Swift 4.1 e Swift 4.2; Xcode 10.2 integra uno strumento per la migrazione del codice che si occupa di gestire alcuni cambiamenti necessari al codice sorgente. È disponibile il codice binario ufficiale per Ubuntu 18.04, Ubuntu 16.04 e Ubuntu 14.04, così come altri strumenti e la versione aggiornata della Swift Programming Language guide.

Swift, come sempre, è pensato per essere sfruttato con i framework Cocoa e Cocoa Touch di Apple, così come esistente codice Objective-C scritto per prodotti come iPhone, Apple TV e iPad. Integra il compilatore LLVM, è stato presentato la prima volta con Xcode 6 nel 2014 (qui la storia di come nacque) e può sfruttare librerie runtime Objective-C permettendo di sfruttare C, Objective-C e C++ in un unico programma.

Tra le peculiarità di Swift 5, l’ABI Stability. Quest’ultimo è l’acronimo di Application Binary Interface; dal punto di vista tecnico nell’esecuzione del runtime i programmi binari in Swift interagiscono con altre librerie mediante ABI. Questa si occupa di molti dettagli di basso livello legati alle entità binarie, come ad esempio in che modo chiamare determinate funzioni, come rappresentare i dati in memoria, tenere conto di dove si trovano i metadati e come accedere a questi ultimi. Stabilizzazione dell’ABI significa bloccare l’ABI al punto che future versioni possono produrre binari conformi all’ABI stabile; la stabilizzazione consente la compatibilità a livello binario tra applicazioni e librerie con le differenti versioni di Swift. Finora l’ABI non era stabile ed era necessario integrare specifiche versioni di bundle binari della Swift Dynamic Library.

Swift Playgrounds

L’ABI Stability offre la compatibilità a livello binario tra app e librerie compilate con versioni diverse di Swift, anche quando è stata usata la modalità compatibilità con vecchi linguaggi (ad esempio, un’app creata con Swift 5 potrà essere eseguita su sistemi con installata una libreria standard Swift 5, così come una ipotetica Swift 6). Inoltre, lo Swift runtime e la standard library ora “viaggiano” con il sistema operativo, evitando la necessità per le app di integrare la Swift library standard e librerie overlay nel bundle dell’app.

Da questo momento Swift ha definito l’ABI Stability per macOS, iOS, watchOS, e tvOS. Una funzionalità relativamente nuova è il modulo stabilità che consente ai client di sfruttare librerie senza preoccuparsi del compilatore con il quale sono state create, e la library evolution, che consente di distribuire nuove versioni di una libreria senza bisogno di ricompiliare i rispettivi client. Le app create in Swift che girano su iOS 12.2, watchOS 5.2 e tvOS 12.2 non devono più includere le dynamically linked libraries, la standard library e gli overlay Swift SDK, permettendo di distribuire pacchetti più piccoli e più veloci da eseguire.

La standard library di Swift 5 integra il supporto migliorato per il testo grezzo (RAW) nei valori letterali stringa (utilizzati per rappresentare una sequenza di caratteri che insieme formano una stringa a terminazione null), per le funzioni SIMD, nella gestione dell’interpolazione delle stringhe e sul versante delle performance per dizionari e set. Swift 5 sfrutta per l’encoding ASCII e Unicode le codifiche UTF-16 e UTF-8 che, a detta di Apple, offrono una riduzione fino al 50% nell’uso della memoria.

Per default, Swift 5 impone l’accesso alla memoria in modo esclusivo anche in fase di debug, supporta chiamate dinamiche che a detta dei Apple dovrebbero migliorare la interoperabilità con linguaggi dinamici quali Python, JavaScript e Ruby. Trovate la lista complete delle novità a questo indirizzo.