Episode ini membedah cara kerja Swift di balik layar: alur kompilasi dari source code menjadi executable lewat SIL dan LLVM, peran Swift runtime dan ARC, serta REPL dan playground. Kalian juga mempelajari struktur project Swift, tipe dasar, module, package, dan komponen Standard Library.

Di episode 1 kalian memahami mengapa Swift ada. Sekarang kita membuka kap mesin: bagaimana Swift bekerja di balik layar. Episode 2 membahas arsitektur utama Swift — alur kompilasi, runtime, manajemen memori, dan struktur project — agar setiap kode yang kalian tulis bisa dimaknai dengan benar.
Pemahaman arsitektur bukan sekadar teori. Saat build error muncul, saat app crash misterius, atau saat binary jadi membengkak, pengetahuan tentang apa yang terjadi di bawah kode akan menjadi alat diagnostik pertama kalian.
Compiler Swift tidak langsung mengubah source menjadi machine code. Alurnya berlapis:
Kalian bisa melihat langsung hasil SIL dengan flag kompilasi:
swiftc -emit-sil main.swift -o main.sil
head -40 main.silPerintah swiftc -emit-sil main.swift menampilkan representasi menengah yang sudah dioptimasi sebagian. Membaca SIL tidak wajib setiap hari, tetapi memahami keberadaannya menjelaskan kenapa compiler Swift bisa melakukan optimasi yang sangat spesifik.
Satu file Swift bukan satu unit kompilasi yang berdiri sendiri — unit-nya adalah module. Sebuah module adalah kumpulan kode dengan batas akses publik yang jelas, diimpor dengan perintah import. Saat kalian menulis import Foundation, compiler memuat modul Foundation lengkap dengan informasi tipe-nya, bukan sekadar menggabungkan file.
Runtime Swift adalah library yang menyediakan layanan inti saat program berjalan: pengalokasian objek, ARC, kesetaraan nilai, protocol witness tables, dan dukungan dynamic cast. Runtime ini tertanam dalam setiap binary Swift dan menjadi alasan kenapa binary Swift cukup besar — tetapi juga mandiri dan stabil berkat ABI stability di Swift 5.
Automatic Reference Counting (ARC) melacak berapa banyak referensi kuat yang menunjuk ke setiap class instance. Saat hitungan mencapai nol, instance langsung dibebaskan:
class Pengguna {
var nama: String
init(nama: String) {
self.nama = nama
}
}
var referensi1: Pengguna? = Pengguna(nama: "Arman")
var referensi2 = referensi1
referensi1 = nil
print(referensi2?.nama)Kode di atas menunjukkan dua variabel yang mereferensikan instance yang sama; instance baru dibebaskan setelah referensi2 juga melepaskannya. Episode 14 akan membahas retain cycle dan cara menghindarinya dengan weak dan unowned.
Swift menyediakan dua sarana eksperimen cepat. REPL (Read-Eval-Print Loop) tersedia lewat perintah swift di terminal — kalian mengetik kode dan langsung melihat hasilnya tanpa kompilasi terpisah:
swift -e 'let angka = 42; print(angka * 2)'swift -e '...' mengeksekusi ekspresi tanpa membuat file. Untuk eksplorasi visual dan bertahap di macOS, Playground di Xcode menampilkan hasil setiap baris secara langsung — sangat berguna untuk mempelajari API baru sebelum dipindah ke project.
Project Swift modern dibangun dengan Swift Package Manager. Struktur standarnya:
MyLibrary/
├── Package.swift
├── Sources/
│ └── MyLibrary/
│ └── MyLibrary.swift
└── Tests/
└── MyLibraryTests/
└── MyLibraryTests.swiftPackage.swift adalah manifes yang mendeskripsikan nama package, platform target, dan dependency. Semua source berada di Sources/ dan test di Tests/. Ini layout yang dipakai Xcode, server-side Swift, dan library open source modern.
Dependency dikelola lewat manifes dengan sintaks yang mirip semantik versi SemVer:
.package(url: "https://github.com/vapor/vapor.git", from: "4.0.0")Baris package(url:from:) di Package.swift memberi tahu SPM versi minimum yang boleh dipakai. Episode 10 membahas SPM secara menyeluruh.
Swift sudah menyertakan tipe dasar seperti Int, Double, String, Bool, Array, Dictionary, dan Set langsung di bahasa. Yang menarik: tipe-tipe ini bukan keyword magis — mereka didefinisikan di Swift Standard Library yang ditulis dalam Swift sendiri dan diimpor otomatis tanpa perintah import.
Di atas Standard Library ada core libraries lintas platform:
import Foundation.Di platform Apple, overlay Swift menambahkan API Swift-native di atasnya. Di Linux, ketiga library ini juga tersedia sehingga kode server-side Swift tetap konsisten.
Tip
Kalian bisa melihat seluruh konten Standard Library lewat documentation browser di Xcode atau di situs developer.apple.com. Membaca signature fungsi bawaan adalah cara terbaik mempelajari idiom Swift yang benar.
Inti yang harus dibawa pulang:
import.Package.swift, Sources/, dan Tests/.Di episode 3 selanjutnya kita akan membahas sintaks dasar dan struktur kode Swift — deklarasi variabel dan konstanta dengan var dan let, tipe dasar, struktur kontrol seperti if, switch, dan loop, serta fungsi dan closures. Saatnya mulai menulis kode Swift dengan benar!