- Memperluas bahasa, pustaka standar, sistem build, dan dukungan platform sekaligus meningkatkan pengalaman pengembang
- Perubahan utama mencakup interoperabilitas C yang diperkuat, penambahan SDK Android resmi, peningkatan untuk lingkungan embedded, dan perluasan alat dokumentasi DocC
- Swift Package Manager meningkatkan konsistensi build lintas platform melalui mesin build terpadu dan dukungan Swift Syntax yang telah di-prebuild
- Swift Testing menambahkan fitur baru seperti pencatatan isu tingkat peringatan, pembatalan pengujian, dan lampiran gambar untuk meningkatkan fleksibilitas pengujian
- Dengan peluncuran resmi Android SDK, cakupan pengembangan lintas platform Swift meluas dan integrasi dengan aplikasi Kotlin/Java menjadi memungkinkan
Pembaruan utama Swift 6.3
- Swift 6.3 menghadirkan kemampuan yang diperluas di bahasa, pustaka standar, sistem build, dan dukungan platform
- Interoperabilitas C yang diperkuat, penambahan SDK Android resmi, peningkatan untuk embedded, dan perluasan alat dokumentasi DocC menjadi perubahan inti
- Ditujukan untuk meningkatkan pengalaman pengembang dan integrasi pengembangan lintas platform
Bahasa dan pustaka standar
-
Interoperabilitas C
- Atribut baru
@c memungkinkan fungsi atau enum Swift diekspos ke kode C
- Dalam bentuk
@c(MyLibrary_callFromC), nama deklarasi C khusus dapat ditentukan
- Dengan menggunakan
@c bersama @implementation, Swift dapat mengimplementasikan fungsi yang dideklarasikan dalam header C
- Pada kombinasi ini, Swift memverifikasi apakah implementasinya sesuai dengan deklarasi C yang ada
-
Module Name Selectors
- Saat mengimpor API dengan nama yang sama dari beberapa modul, pemanggilan dengan modul yang disebutkan secara eksplisit dimungkinkan dalam bentuk
ModuleA::getValue()
- Melalui sintaks
Swift::Task, akses ke API concurrency dan pemrosesan string dimungkinkan
-
Kontrol performa API pustaka
- @specialize: menyediakan implementasi spesialisasi lebih awal untuk tipe tertentu pada API generik
- @inline(always): memaksa inlining sehingga isi fungsi diperluas di titik pemanggilan
- @export(implementation): mengekspos implementasi fungsi pada pustaka ABI-stable untuk memungkinkan optimasi tambahan
- Proposal terkait dapat dilihat di dashboard Swift Evolution
Peningkatan paket dan build
- Swift Package Manager menyertakan pratinjau integrasi Swift Build, yang menghadirkan pengalaman build yang konsisten di semua platform
- Konsistensi pengembangan lintas platform diperkuat melalui mesin build terpadu
- Pengguna dapat langsung menguji di paket mereka sendiri dan melaporkan masalah
- Peningkatan utama di SwiftPM 6.3
- Dukungan Prebuilt Swift Syntax: pustaka khusus makro dapat menggunakan biner swift-syntax yang sudah di-prebuild
- Kontrol pewarisan dokumentasi yang fleksibel: plugin imperatif yang menghasilkan symbol graph dapat mengatur apakah dokumentasi turunan disertakan
- Fitur eksplorasi trait paket: perintah
swift package show-traits memungkinkan pemeriksaan trait yang didukung paket
- Detail lebih lanjut disertakan dalam catatan rilis SwiftPM 6.3
Pembaruan pustaka inti
-
Swift Testing
- Pencatatan isu tingkat peringatan:
Issue.record(..., severity: .warning) hanya menampilkan peringatan tanpa menyebabkan kegagalan tes
- Fitur pembatalan tes:
try Test.cancel() dapat menghentikan tes yang sedang berjalan beserta subtask-nya
- Dukungan lampiran gambar: lampiran gambar saat pengujian tersedia di platform Apple dan Windows
- Proposal terkait: ST-0012, ST-0013, ST-0014, ST-0015, ST-0016, ST-0017, ST-0020
-
DocC
- Dukungan output Markdown: menghasilkan dokumen Markdown dengan opsi
--enable-experimental-markdown-output
- Konten HTML statis per halaman: penyisipan ringkasan HTML di dalam `` meningkatkan mesin pencari dan aksesibilitas
- Perluasan anotasi code block: menambahkan opsi format baru seperti
nocopy, highlight, showLineNumbers, dan wrap
- Dapat diaktifkan dengan opsi
--enable-experimental-code-block-annotations
Platform dan lingkungan
-
Embedded Swift
- Mencakup berbagai peningkatan seperti interoperabilitas C yang diperkuat, debugging yang ditingkatkan, dan kemajuan menuju penyelesaian model linkage
- Rincian lebih lanjut tersedia di blog “Embedded Swift Improvements coming in Swift 6.3”
-
Android
- Peluncuran pertama Swift SDK for Android resmi
- Memungkinkan pengembangan aplikasi Android native dengan Swift dan dukungan build Android untuk paket Swift
- Integrasi dengan aplikasi Kotlin/Java dimungkinkan melalui Swift Java dan Swift Java JNI Core
- Dinilai sebagai tonggak penting bagi perluasan pengembangan lintas platform Swift
- Panduan memulai tersedia dalam dokumen “Getting Started with the Swift SDK for Android”
Langkah selanjutnya
- Toolchain Swift 6.3 dapat diinstal dari halaman Install Swift
- Pengembang dapat langsung mencoba fitur-fitur baru dan memberikan umpan balik
1 komentar
Komentar Hacker News
Senang melihat Swift mendapat rilis yang keren seperti ini
Saya belum memakainya lagi sejak v3 dulu, tetapi sekitar 2015~17 Swift sempat terlihat bisa menggantikan Python
karena sederhana, cepat, dan cocok dengan ekosistem C/C++. Saat IBM mendorongnya di sisi server, peluang itu benar-benar terasa ada
Namun Apple tidak cukup berhasil merangkul komunitas, dan pada akhirnya Swift tetap menjadi bahasa khusus Apple. Sekarang kompleksitasnya juga sudah naik ke level C++
Saya suka Swift, tetapi di luar ekosistem Apple rasanya masih belum melewati titik kritis. Akhirnya tahun lalu saya pindah ke TypeScript
Yang paling utama, sepertinya hampir tidak ada orang yang ingin secara sukarela memasukkan Apple sebagai gatekeeper ke dalam stack mereka
Proyek TensorFlow Swift
CircuitPython juga berguna untuk prototyping embedded. Swift tidak pernah benar-benar berhasil menguasai area seperti ini
Selain itu, Swift baru hadir di Linux pada 2016, Windows pada 2020, dan FreeBSD baru pada 2025
Di pertengahan 2010-an juga banyak bahasa baru bermunculan seperti Go, Julia, Rust, TypeScript, dan Solidity, sehingga kebanyakan orang hanya sempat mempelajari satu atau dua saja
Saya berharap Swift bisa menjadi bahasa yang mencakup seluruh stack, tetapi kenyataannya tidak begitu
Rasanya Apple menyia-nyiakan peluang
Misalnya, ClearSurgery ditulis sepenuhnya dengan Swift, sampai ke komponen real-time di Linux
Minggu lalu saya mem-port sistem operasi xv6-riscv ke Zig, Nim, LISP, dan Swift
Berkat kemajuan embedded Swift, bahasa ini terasa seperti bahasa yang produktif. Abstraksi yang membungkus akses memori juga rapi
Tetapi kecepatan kompilasinya terlalu lambat, jadi akhirnya saya fokus ke Nim
Sayang sekali peningkatan kecepatan kompilasi Swift tidak disebutkan
Kompilasi yang lebih lambat dari Rust sangat merusak pengalaman developer
Kalau sudah terbiasa dengan build Go yang cepat, Swift benar-benar membuat pengembangan iteratif terasa menyiksa. Bahasanya sendiri bagus, tetapi loop feedback-nya terlalu lambat
Di Swift 6.3, SDK resmi untuk Android disertakan untuk pertama kalinya
Untuk Windows ada posting blog 5 tahun lalu,
untuk Linux ada panduan untuk GNOME
Akan bagus jika seperti OpenSTEP dulu, satu kali pengembangan bisa didistribusikan ke banyak platform
Peningkatan pada tipe noncopyable adalah bagian yang paling diremehkan dari rilis ini
Sekarang pemodelan ownership unik di Swift menjadi jauh lebih realistis
Dengan atribut
@cdi Swift 6.3, fungsi Swift sekarang bisa diekspos ke kode CTapi saya heran kenapa ini baru ditambahkan sekarang. Menambahkan interoperabilitas C++ lebih dulu terasa seperti prioritas yang aneh
Sementara itu, mengekspor Swift ke C bisa menimbulkan spaghetti FFI, dan bug ABI mudah muncul pada enum, ownership, penanganan null, dan sebagainya
Terutama jika closure ikut terlibat, calling convention bisa meleset dan debugging-nya bisa menghabiskan satu hari penuh
Dulu saat membuat dylib dengan Swift untuk program C, saya harus memakai
@cdecl, jadi senang akhirnya ini didukung secara resmiPerubahan nyata di luar pemasaran bisa dilihat di CHANGELOG dan
daftar proposal Swift Evolution
6.3 pada dasarnya adalah rilis yang berfokus pada pekerjaan integrasi — stdlib, interoperabilitas C/C++, swift-java, sistem build, dan lain-lain
SPM makin banyak menyerap fungsi Xcode, dan engine swift-build baru serta modul prebuilt juga sedang diuji secara eksperimental
Tetapi interaksi antara SPM dan Xcode masih belum stabil, dan kompleksitas internalnya terus bertambah
Kemajuan pada bahasanya sendiri memang tidak mencolok, tetapi pekerjaan struktural yang dalam seperti kontrol lifetime dan pewarnaan konkurensi sedang berlangsung
Karena banyak OS, device, dan lingkungan CI yang saling terkait, developer Swift selalu berada dalam situasi menjaga keseimbangan di tengah perubahan
swift-builddijadwalkan menjadi defaultMenurut posting forum resmi,
Xcode sebenarnya sudah memakainya secara internal tetapi masalah performanya serius
Ada juga diskusi terkait.
Jika SPM dan Xcode memakai engine yang sama, mungkin akan membaik, tetapi saya tidak terlalu berharap
Saya penasaran seperti apa toolchain di Swift versi terbaru. Ingin tahu apakah Swift Lint dan Swift Format didukung
Bahasa modern seharusnya punya formatter bawaan dan aturan lint yang direkomendasikan. Bukan cuma bahasanya, seluruh ekosistem juga penting
swift formatdanswift format linttanpa dependensi eksternal