2 poin oleh GN⁺ 25 hari lalu | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 25 hari lalu
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++

    • Saat kuliah saya pernah kerja freelance dan membuat web backend dengan Swift. Deployment-nya pakai buildpack Heroku dan itu masa yang cukup menyenangkan
      Saya suka Swift, tetapi di luar ekosistem Apple rasanya masih belum melewati titik kritis. Akhirnya tahun lalu saya pindah ke TypeScript
    • Bahkan dengan Swift 6.3 terbaru pun, pengembangan di luar platform Apple masih terasa menyakitkan
      Yang paling utama, sepertinya hampir tidak ada orang yang ingin secara sukarela memasukkan Apple sebagai gatekeeper ke dalam stack mereka
    • Google juga pernah mencoba memindahkan TensorFlow dari Python ke Swift
      Proyek TensorFlow Swift
    • Bahkan Python 3 sendiri butuh waktu lama untuk menggantikan Python
    • Python kuat untuk pengembangan iteratif dan Jupyter Notebook berkat interpreter interaktifnya
      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

    • Saya justru benar-benar memakai Swift untuk seluruh stack
      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

    • Sudah lama sekali saya tidak mendengar nama Nim, jadi penasaran kenapa Anda memilihnya
    • Ada yang bertanya apakah yang dimaksud adalah McCarthy LISP
  • Sayang sekali peningkatan kecepatan kompilasi Swift tidak disebutkan
    Kompilasi yang lebih lambat dari Rust sangat merusak pengalaman developer

    • Saya juga baru-baru ini mengerjakan proyek Swift, dan saya kaget karena makin banyak dependensi, kompilasinya jadi sangat lambat
      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

    • Penasaran apakah ada juga untuk Windows dan Linux
      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
    • Sepertinya ini akan dipakai bahkan lebih sedikit daripada Swift untuk server
  • Peningkatan pada tipe noncopyable adalah bagian yang paling diremehkan dari rilis ini
    Sekarang pemodelan ownership unik di Swift menjadi jauh lebih realistis

  • Dengan atribut @c di Swift 6.3, fungsi Swift sekarang bisa diekspos ke kode C
    Tapi saya heran kenapa ini baru ditambahkan sekarang. Menambahkan interoperabilitas C++ lebih dulu terasa seperti prioritas yang aneh

    • Sebenarnya dulu ini sudah ada lewat atribut dengan underscore
    • Interoperabilitas C++ penting bagi Apple untuk menyerap codebase level rendah yang sudah ada
      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
    • Karena sudah ada kemampuan untuk mengekspor ke ObjC, prioritasnya jadi lebih rendah
    • Saya sudah mencobanya secara eksperimental sejak dulu, sekarang hanya diresmikan saja
  • Dulu saat membuat dylib dengan Swift untuk program C, saya harus memakai @cdecl, jadi senang akhirnya ini didukung secara resmi

  • Perubahan 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

    • Di Swift 6.4, swift-build dijadwalkan menjadi default
      Menurut 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

    • Sekarang keduanya sudah disertakan secara default. Bisa langsung dipakai lewat swift format dan swift format lint tanpa dependensi eksternal