Section 1/101 menit

1. Konsep Dasar: Language Version vs Compiler Version

1. Konsep Dasar: Language Version vs Compiler Version

Sebelum masuk ke konfigurasi, pahami dua hal yang sering tertukar:

Language Version ≠ Compiler Version

swift
Xcode 16 (Swift 6 Compiler)
│
├── Target A → SWIFT_VERSION = 6  ← Swift 6 language mode
│             strict concurrency, typed throws, dll aktif sebagai ERROR
│
├── Target B → SWIFT_VERSION = 5  ← Swift 5 language mode
│             Swift 6 compiler, tapi bahasa tetap Swift 5
│             Fitur Swift 6 TIDAK aktif secara default
│
└── Target C → SWIFT_VERSION = 5 + upcoming features
              Swift 5 mode + beberapa fitur Swift 6 di-opt-in satu per satu

Artinya: Kamu bisa upgrade ke Xcode 16 tanpa satu baris kode pun berubah, selama SWIFT_VERSION tetap 5. Compiler Swift 6 sepenuhnya backward-compatible dengan kode Swift 5.

Tiga Kondisi Runtime Compilation

swift
Kondisi 1: Swift 5 compiler + Swift 5 mode
           → semua #if swift(<6.0) aktif, #if swift(>=6.0) di-skip

Kondisi 2: Swift 6 compiler + Swift 5 mode (SWIFT_VERSION=5)
           → sama seperti kondisi 1 dari sisi bahasa
           → #if compiler(>=6.0) aktif

Kondisi 3: Swift 6 compiler + Swift 6 mode (SWIFT_VERSION=6)
           → semua #if swift(>=6.0) aktif
           → strict concurrency sebagai error