> For the complete documentation index, see [llms.txt](https://swift.unicorndonkeys.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://swift.unicorndonkeys.com/benvenuto-in-swift/compatibilita-delle-versioni.md).

# Compatibilità delle versioni (Version Compatibility)

Scopri quali funzionalità sono disponibili nelle modalità del linguaggio meno recenti.

Questo libro descrive Swift 6.4, la versione predefinita di Swift inclusa in Xcode 27. Puoi usare il compilatore di Swift 6.4 per compilare codice scritto in Swift 6.4, Swift 5, Swift 4.2 o Swift 4.

Quando usi il compilatore di Swift 6.4 per compilare codice che usa la modalità del linguaggio Swift 5, puoi usare le nuove funzionalità di Swift 6.4 — sono abilitate per impostazione predefinita oppure tramite un flag di funzionalità futura (upcoming feature). Tuttavia, per abilitare il controllo rigoroso della concorrenza, devi passare alla modalità del linguaggio Swift 6.4.

Inoltre, quando usi Xcode 15.3 per compilare codice Swift 4 e Swift 4.2, la maggior parte delle funzionalità di Swift 5 è comunque disponibile. Detto questo, le modifiche seguenti sono disponibili solo per il codice che usa la modalità del linguaggio Swift 5 o successiva:

* Le funzioni che restituiscono un tipo opaco richiedono il runtime di Swift 5.1.
* L'espressione `try?` non introduce un livello aggiuntivo di opzionalità nelle espressioni che restituiscono già degli opzionali.
* Le espressioni di inizializzazione con letterali interi di grandi dimensioni vengono inferite come appartenenti al tipo intero corretto. Per esempio, `UInt64(0xffff_ffff_ffff_ffff)` restituisce il valore corretto invece di andare in overflow.

La concorrenza richiede la modalità del linguaggio Swift 5 e una versione della libreria standard di Swift che fornisca i tipi di concorrenza corrispondenti. Sulle piattaforme Apple, imposta un deployment target di almeno iOS 13, macOS 10.15, tvOS 13, watchOS 6 o visionOS 1.

Un target scritto in Swift 6.4 può dipendere da un target scritto in Swift 5, Swift 4.2 o Swift 4, e viceversa. Ciò significa che, se hai un progetto di grandi dimensioni suddiviso in più framework, puoi migrare il tuo codice a una versione più recente del linguaggio un framework alla volta.
