6 poin oleh GN⁺ 2024-06-13 | 2 komentar | Bagikan ke WhatsApp
  • Swift mendukung Linux dan Windows selain platform Apple
  • Dengan Swift Static Linux SDK, Anda dapat membangun file eksekusi yang sepenuhnya ditautkan secara statis tanpa dependensi eksternal
    • Ini dapat dijalankan di semua distribusi Linux
    • Anda dapat mengembangkan dan menguji di macOS lalu menerapkannya ke server berbasis Linux
  • Linking adalah proses mengambil bagian lain dari program komputer dan menghubungkan referensinya
    • Static linking terjadi saat build, sedangkan dynamic linking terjadi saat runtime
    • Library statis adalah kumpulan file objek individual, sedangkan library dinamis bersifat monolitik
  • Kelebihan dan kekurangan static linking:
    • Kelebihan: tidak ada overhead runtime, hanya menyertakan kode library yang diperlukan, tidak memerlukan library dinamis terpasang terpisah, tidak ada masalah versi saat runtime
    • Kekurangan: tidak bisa berbagi kode (penggunaan memori meningkat), tidak bisa memperbarui dependensi tanpa membangun ulang program, ukuran file eksekusi membesar
  • Dengan menggunakan static linking di Linux, Anda dapat sepenuhnya menghilangkan dependensi library sistem yang berbeda antar distribusi
  • Anda harus menginstal toolchain Open Source dari swift.org (toolchain bawaan Xcode tidak dapat digunakan)
  • Anda dapat menginstal Static Linux SDK dengan perintah swift sdk install
  • Dengan perintah swift build --swift-sdk x86_64-swift-linux-musl Anda dapat membangun biner Linux x86-64, dan dengan perintah swift build --swift-sdk aarch64-swift-linux-musl Anda dapat membangun biner Linux ARM64
  • Paket Swift yang menggunakan Foundation atau Swift NIO akan tetap berfungsi
  • Paket yang menggunakan library C harus dimodifikasi agar mengimpor Musl alih-alih Glibc
    • Musl mendukung static linking dengan baik dan memiliki lisensi permisif yang memudahkan distribusi file eksekusi
  • Anda dapat memodifikasi dependensi paket dengan perintah swift package edit

2 komentar

 
cichol 2024-06-14

Sekarang rasanya dengan ini bakal muncul sesuatu yang bisa mendukung pengembangan Android dan iOS secara bersamaan dengan Swift dengan lebih seamless..

 
GN⁺ 2024-06-13
Opini Hacker News
  • Dukungan platform kustom baru Swift: Swift kini mendukung sistem embedded dan WASM, dan kepindahannya ke organisasi GitHub non-Apple merupakan kemajuan besar untuk memperluas Swift ke platform lain. Kemungkinan penggunaannya untuk verifikasi keamanan AI OS juga menarik.

  • Biner Swift dapat dijalankan di container Alpine: Senang karena biner Swift kini bisa dijalankan di container Alpine. Pengerjaan dukungan musl berjalan lebih cepat dari yang diperkirakan. Cross-compilation juga sangat berguna.

  • Harapan untuk dukungan Debian: Senang melihat paket Swift ditambahkan di Debian. Sepertinya saya akan lebih sering memakai Debian sebagai VM pengembangan.

  • Harapan memakai Swift di sistem embedded: Saya sudah banyak menangani sistem embedded dengan C, tetapi ingin mencoba Swift di board pengembangan STM.

  • Kekurangan static linking: ASLR mungkin tidak bekerja dengan semestinya atau hanya satu objek yang diacak. Dalam bahasa yang aman terhadap memori, ini mungkin bukan kelemahan besar. Berbagi objek umum juga bisa mengurangi I/O.

  • Masalah kompatibilitas antar-distribusi: Program yang dibangun di distribusi atau versi tertentu mungkin tidak berjalan di distribusi lain. Penyediaan static linking oleh Swift itu bagus, tetapi yang terbaik adalah distribusi dapat memilih cara mendistribusikan paket.

  • Potensi bersaing dengan Golang: Swift tampaknya bisa bersaing dengan Golang dalam hal kemudahan deployment. Kompleksitas didorong menjauh dari pengguna akhir.

  • Aplikasi GUI lintas platform: Saya penasaran bagaimana jika membuat aplikasi GUI lintas platform dengan Swift. SwiftUI sepertinya tidak bisa dipakai, tetapi saya berencana menggunakan Swift untuk menulis skrip sederhana.

  • Peringatan penggunaan image CentOS 7: Rasanya gila masih menyediakan image CentOS 7. Ada peringatan untuk tidak menggunakannya.

  • Meningkatnya kompleksitas Swift: Swift tadinya bisa dengan mudah menggantikan Python, tetapi bahasanya makin kompleks dan sekarang menjadi semacam tiruan C++.

  • Alasan memakai Swift alih-alih Rust: Pertanyaan tentang mengapa harus memakai Swift, bukan Rust.

  • Alasan memakai Swift tanpa iOS/SwiftUI: Pertanyaan apakah ada alasan memakai Swift tanpa iOS/SwiftUI. Tampaknya tidak ada alasan selain ketika pengembang Swift ingin memakai bahasa yang sudah familier untuk proyek kecil.