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 SwiftSyntaxsebagai fondasi resmi#externalMacrountuk 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
platformsdi Package.swift untuk targetmacromengacu pada mesin build, bukan device target aplikasi.