Section 2/102 menit

2. Versi Swift yang Diperlukan

2. Versi Swift yang Diperlukan

Minimum Requirements

Swift Macro diperkenalkan secara resmi di Swift 5.9 pada WWDC 2023, bersamaan dengan Xcode 15.

Komponen Versi Minimum
Swift 5.9
Xcode 15.0
iOS deployment target Tidak ada batasan (macro bekerja di compile time)
macOS deployment target Tidak ada batasan
Swift Package Manager Wajib untuk mendefinisikan macro package

Evolusi Fitur per Versi

Swift 5.9 (Xcode 15) — Rilis pertama:

  • Semua jenis attached macro: member, memberAttribute, accessor, conformance, peer, extension
  • Freestanding macro: expression, declaration
  • SwiftSyntax sebagai fondasi resmi
  • #externalMacro untuk bridging ke plugin

Swift 5.10 (Xcode 15.3) — Perbaikan stabilitas:

  • Perbaikan bug pada macro expansion di generic context
  • Peningkatan error message ketika macro gagal expand

Swift 6.0 (Xcode 16) — Lebih matang:

  • Integrasi lebih baik dengan Swift Concurrency (macro bisa generate actor-aware code)
  • Dukungan @attached(extension) lebih stabil
  • Peningkatan performa build time untuk macro yang sering digunakan

Catatan Backward Compatibility

Karena macro bekerja di compile time, deployment target aplikasi tidak terpengaruh. Sebuah macro yang di-expand di Swift 5.9 menghasilkan kode Swift biasa yang kompatibel dengan iOS 13+ misalnya — tergantung kode yang di-generate, bukan macro itu sendiri.

swift
// Package.swift — setup minimum yang benar
// swift-tools-version: 5.9  ← minimum untuk macro support
import PackageDescription

let package = Package(
    name: "MyMacros",
    platforms: [
        .macOS(.v13),  // macro plugin butuh macOS 13+ untuk berjalan saat build
        .iOS(.v13),    // deployment target aplikasi tetap bisa iOS 13
    ],
    // ...
)

Catatan penting: Macro plugin (executable yang menjalankan logika macro) berjalan di mesin developer/CI, bukan di device pengguna. Oleh karena itu platforms di Package.swift untuk target macro mengacu pada mesin build, bukan device target aplikasi.