Novità della lingua Swift 4.2 di Apple

In vista del rilascio previsto per il 2019 di Swift 5, Apple ha rilasciato la versione intermedia di Swift 4.2.

Versione attuale: novità di Swift 4.2 di Apple

La versione 4.2 del linguaggio di programmazione Swift di Apple avvicina il linguaggio a un'interfaccia binaria dell'applicazione (ABI) stabilizzata e consente la compatibilità binaria per le versioni future. La stabilità ABI consente la compatibilità binaria tra le librerie e le applicazioni compilate con diverse versioni del linguaggio.

Sebbene l'obiettivo di Apple sia la stabilità, Swift 4.2 non è compatibile a livello binario con le versioni precedenti. Tuttavia, viene fornita la compatibilità della sorgente. La maggior parte del codice sorgente creato con il compilatore Swift 4.0 dovrebbe essere compilato con entrambi i compilatori Swift 4.2 e Swift 4.1.

Altre nuove funzionalità in Swift 4.2 sono:

  • Miglioramenti generici, ancorati dal completamento del supporto per la conformità condizionale, riducendo la quantità di codice boilerplate e rendendo più codice riutilizzabile.
  • Le funzionalità della libreria standard includono miglioramenti al protocollo Hashable e un set unificato di funzioni e protocolli di randomizzazione.
  • Supporto della compilazione in modalità batch, che migliora i tempi di compilazione.
  • Una modifica nella convenzione di chiamata per il ciclo di conservazione / rilascio, per ridurre la dimensione del codice e migliorare le prestazioni.
  • Supporto per metadati ricorsivi.
  • Metadati di riflessione più compatti.
  • Argomenti di deviazione inseriti nei siti di chiamata.
  • Varie correzioni di bug, come l'ereditarietà di inizializzatori generici.
  • La compilerdirettiva che è sintatticamente equivalente al #if swiftcontrollo della versione ma controlla la versione del compilatore, indipendentemente dalla modalità di compatibilità in esecuzione.
  • Nuove funzionalità di gestione dei pacchetti Swift, incluso il supporto per la modalità batch, con obiettivi ora compilati utilizzando questa modalità; logica di generazione dello schema migliorata; e generazione automatica del progetto Xcode.

Dove scaricare Swift 4.2

Puoi scaricare Swift 4.2 scaricando l'IDE Xcode 10.0 da Apple.

Altri piani per Swift 4.2 includono:

  • Miglioramenti alle prestazioni in fase di compilazione.
  • Le stringhe ora sono 16 byte invece di 24 byte. Apple vede questo come un buon compromesso tra l'utilizzo della memoria e le prestazioni, pur essendo abbastanza grande da eseguire piccole ottimizzazioni di stringhe.
  • Vengono offerte API per una generazione più semplice di numeri casuali.
  • La has importdirettiva di configurazione della build esprime meglio l'intento quando si condivide il codice tra iOS e MacOS.

Versione precedente: novità di Swift 4.1

Rilasciato alla fine di marzo 2018, Swift 4.1 aggiunge più generici al linguaggio e miglioramenti alla build. La versione 4.1 è compatibile con il codice sorgente con Swift 4.0.

Le proposte relative ai generici implementate nella versione 4.1 includono la conformità condizionale, che esprime l'idea che un tipo generico sarà conforme a un particolare protocollo solo quando gli argomenti del tipo soddisfano requisiti specifici. Questa funzionalità dovrebbe avere un grande impatto sulla libreria standard di Swift. Altri miglioramenti dei generici includono:

  • Avere il compilatore sintetizzare Equatablee Hashableconformarsi, per ridurre boilerplate e complessità.
  • Creazione di tipi di indice di libreria standard Hashable.
  • Eliminando il tipo associato, IndexDistance, da Collection e modificare usi al tipo di cemento, Intinvece.

In Swift 4.1 sono presenti anche più modi per configurare le build, come l'ottimizzazione della dimensione del codice e meccanismi più semplici per indirizzare il supporto della piattaforma e dell'ambiente.

Modifiche nascoste nella versione 4.1 sono state apportate come parte di un piano per stabilizzare l'ABI (application binary interace) in Swift 5, che è previsto alla fine di quest'anno. Queste modifiche nascoste includono l'uso di un campo delle dimensioni di una parola nell'intestazione dell'oggetto nativo per il conteggio dei riferimenti e i controlli delle funzioni di runtime. Inoltre, vari wrapper di raccolta vengono compressi tramite l'uso della conformità condizionale.

Swift 4.1 migliora Swift Package Manager. Ora risolve le dipendenze nei grafici dei pacchetti che utilizzano schemi URL come sshe http. Inoltre, le prestazioni sono state migliorate per i grafici dei pacchetti con dipendenze condivise.

L'aggiornamento 4.1 presenta anche proposte di evoluzione rapida, inclusa la rimozione delle parole chiave di proprietà weake unowned, per le dichiarazioni di proprietà in un protocollo. Questo viene fatto per chiarezza. Inoltre, gli inizializzatori di strutture tra moduli vengono limitati. Ciò corrisponde a una restrizione esistente per le classi.

Dove scaricare Swift 4.1

Puoi scaricare l'aggiornamento a Swift 4.1 dalla pagina web di download di Swift. Inoltre, Swift 4.1 è disponibile con l'IDE Xcode 9.3, che presenta un migratore di codice per gestire molte modifiche al codice sorgente.

Versione precedente: novità di Swift 4.0

Swift 4.0 è un importante aggiornamento di Swift di Apple, il successore di tre anni del linguaggio Objective-C utilizzato per lo sviluppo di applicazioni MacOS e iOS.

L'aggiornamento di Swift 4 migliora Swift Package Manager e fornisce nuove modalità di compatibilità per gli sviluppatori. Apple ha affermato che Swift 4 rende Swift più stabile e migliora la sua libreria standard. Swift 4 è ampiamente compatibile con la sorgente con Swift 3 e viene fornito come parte dell'IDE Xcode 9 di Apple.

Novità del gestore di pacchetti di Swift 4

Swift Package Manager, che ha debuttato in Swift 3, è uno strumento per la distribuzione del codice. È integrato con il sistema di compilazione Swift per automatizzare i processi tra cui il download, la compilazione e il collegamento delle dipendenze. I miglioramenti nel gestore di pacchetti di Swift 4 includono:

  • Un'API di pacchetto più pulita che consente ai pacchetti di specificare nuove impostazioni. Queste impostazioni offrono agli sviluppatori un maggiore controllo sulla creazione di pacchetti e sull'organizzazione delle origini su disco.
  • Lo sviluppo di più pacchetti in tandem è stato semplificato.
  • Formalizzazione dei prodotti del pacchetto, consentendo il controllo su quali librerie un pacchetto pubblica per i client.
  • Le build dei pacchetti su MacOS ora si verificano in una sandbox, impedendo l'accesso alla rete e la modifica del file system, per ridurre la portata di manifest dannosi.

Le nuove modalità di compatibilità in Swift 4 aiutano la migrazione

Le nuove modalità di compatibilità di Swift 4 potrebbero evitarti di dover modificare il codice per poter utilizzare la nuova versione del compilatore. Sono supportate due modalità, inclusa la modalità Swift 3.2, che accetta la maggior parte dei file sorgente creati con i compilatori Swift 3.x, e la modalità Swift 4.0, che include Swift 4 e modifiche alle API.

Apple ha affermato che per molti progetti sarà necessaria una certa migrazione del codice sorgente, ma il numero di modifiche al codice sorgente è "abbastanza modesto" rispetto a molti dei precedenti importanti cambiamenti tra le versioni di Swift. L'introduzione delle modalità di compatibilità in Swift 4 offre agli sviluppatori un maggiore controllo sul ritmo della migrazione.

I miglioramenti linguistici abbondano in Swift 4

Swift 4 introduce diversi miglioramenti del linguaggio, tra cui:

  • StringUn'implementazione più veloce e più facile da usare che mantiene la correttezza Unicode e supporta lo sviluppo e l'uso di sottostringhe.
  • Uso e gestione migliorati dei tipi di raccolta.
  • Applicazione dell'accesso esclusivo alla memoria, in cui le potenziali modifiche delle variabili devono essere esclusive con qualsiasi altro accesso a quella variabile.
  • Capacità di archiviazione structe enumtipologie.
  • Serializzazione indipendente dai tipi in formati esterni come JSON.
  • Intero orientato al protocollo, che pulisce le API Integer e le rende più utili per la programmazione generica.
  • Supporto di whereclausole per limitare i tipi associati. In precedenza, i tipi associati potevano esprimere solo vincoli di ereditarietà semplici e non vincoli più sofisticati disponibili per i tipi generici con la where clausola.
  • Inclusione del swift runcomando per creare ed eseguire un eseguibile definito nel pacchetto corrente.
  • Rimozione del final supporto delle parole chiave durante la dichiarazione delle funzioni nelle estensioni del protocollo.
  • Interazione migliorata tra privatedichiarazioni ed estensioni, con privatecontrollo dell'accesso esteso in modo che i membri definiti in un'estensione di un tipo abbiano lo stesso accesso dei membri definiti nel tipo stesso, purché il tipo e l'estensione si trovino nello stesso file di origine.