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