Apple ha rilasciato Swift 6.3. Sono disponibili versioni ufficiali per Linux, Windows e macOS. Il codice sorgente è distribuito sotto licenza Apache 2.0.
Swift combina i migliori elementi di C e Objective-C e fornisce un modello a oggetti compatibile con Objective-C (il codice Swift può essere mescolato con il codice C e Objective-C), ma differisce nell'uso dell'allocazione automatica della memoria e del controllo dell'overflow variabile e array, protezione contro l'uso di variabili non inizializzate e blocco dell'accesso alla memoria dopo che è stata liberata, il che aumenta significativamente l'affidabilità e la sicurezza del codice. Swift offre anche molte tecniche di programmazione moderne, come chiusure, programmazione generica, espressioni lambda, tuple e tipi di dizionario, operazioni di raccolta veloci ed elementi di programmazione funzionale.
L'implementazione di Swift è realizzata utilizzando le tecnologie del progetto LLVM gratuito. Per garantire prestazioni elevate, i programmi Swift vengono compilati in codice macchina, che nei test dimostra prestazioni più veloci del 30% rispetto al codice Objective-C. Invece di un garbage collector, Swift utilizza il conteggio dei riferimenti agli oggetti. Il pacchetto include Swift Package Manager, che fornisce strumenti per la distribuzione di moduli e pacchetti con librerie e applicazioni nel linguaggio Swift, gestione delle dipendenze, download automatizzato, assemblaggio e collegamento di componenti.
Principali modifiche nella nuova versione:
- È stata rilasciata la prima versione ufficiale dell'SDK Swift per la piattaforma Android, che consente di utilizzare il linguaggio Swift per sviluppare applicazioni Android, nonché di integrare singoli componenti Swift in applicazioni Android esistenti scritte in Java e Kotlin.
- È stato aggiunto l'attributo "@c", che consente di esportare funzioni ed enumerazioni scritte in Swift per utilizzarle nel codice C (viene generato un file di intestazione con le corrispondenti definizioni C).
- Implementati selettori di modulo che consentono di specificare esplicitamente quale modulo utilizzare un'API quando più moduli importati forniscono un'API con lo stesso nome. import ModuleA import ModuleB let x = ModuleA::getValue() // chiama 'getValue' da ModuleA let y = ModuleB::getValue() // chiama 'getValue' da ModuleB
- Sono stati aggiunti nuovi attributi per controllare le ottimizzazioni del compilatore: @specialize — specializza le API generiche per i tipi utilizzati di frequente; @inline — espansione inline della funzione nel punto di chiamata; @export(implementation) — esporta l'implementazione della funzione nell'ABI stabile della libreria.
- Si propone un'implementazione preliminare del sistema di build Swift Build, integrato in SwiftPM (Swift Package Manager).
Fonte: opennet.ru
