6 puan yazan GN⁺ 2024-06-13 | 2 yorum | WhatsApp'ta paylaş
  • Swift, Apple platformlarının yanı sıra Linux ve Windows gibi sistemleri de destekler
  • Swift Static Linux SDK kullanıldığında, harici bağımlılıklar olmadan tamamen statik olarak linklenmiş çalıştırılabilir dosyalar oluşturulabilir
    • Bu dosyalar tüm Linux dağıtımlarında çalışabilir
    • macOS üzerinde geliştirip test ettikten sonra Linux tabanlı sunuculara dağıtım yapılabilir
  • Linkleme, bir bilgisayar programının farklı parçalarını alıp başvuruları birbirine bağlama sürecidir
    • Statik linkleme derleme anında, dinamik linkleme ise çalışma zamanında gerçekleşir
    • Statik kütüphaneler tek tek nesne dosyalarının bir koleksiyonudur; dinamik kütüphaneler ise monolitiktir
  • Statik linklemenin artıları ve eksileri:
    • Artılar: çalışma zamanı ek yükü yoktur, yalnızca gerekli kütüphane kodu dahil edilir, ayrıca kurulu dinamik kütüphaneler gerekmez, çalışma zamanında sürüm uyumsuzluğu sorunu olmaz
    • Eksiler: kod paylaşılamaz (bellek kullanımı artar), program yeniden derlenmeden bağımlılıklar güncellenemez, çalıştırılabilir dosya boyutu artar
  • Linux'ta statik linkleme kullanıldığında, dağıtıma göre değişen sistem kütüphanesi bağımlılıkları tamamen ortadan kaldırılabilir
  • swift.org üzerinden açık kaynak araç zincirinin kurulması gerekir (Xcode ile gelen araç zinciri kullanılamaz)
  • swift sdk install komutuyla Static Linux SDK kurulabilir
  • swift build --swift-sdk x86_64-swift-linux-musl komutuyla x86-64 Linux ikili dosyası, swift build --swift-sdk aarch64-swift-linux-musl komutuyla ise ARM64 Linux ikili dosyası derlenebilir
  • Foundation veya Swift NIO kullanan Swift paketleri olduğu gibi çalışır
  • C kütüphaneleri kullanan paketlerde, Glibc yerine Musl import edecek şekilde değişiklik yapılması gerekir
    • Musl, statik linklemeyi iyi destekler ve çalıştırılabilir dosya dağıtımını kolaylaştıran izin verici bir lisansa sahiptir
  • swift package edit komutuyla paket bağımlılıkları değiştirilebilir

2 yorum

 
cichol 2024-06-14

Artık bunu kullanarak Swift ile Android ve iOS için eşzamanlı geliştirmeyi daha sorunsuz destekleyen bir şeylerin ortaya çıkacakmış gibi bir his var ..

 
GN⁺ 2024-06-13
Hacker News görüşleri
  • Swift'in yeni özel platform desteği: Swift'in gömülü sistemleri ve WASM'i desteklemesi ve Apple dışı bir GitHub organizasyonuna taşınması, Swift'i diğer platformlara genişletmede büyük bir ilerleme. Yapay zeka OS güvenlik doğrulamasında da kullanılabilme ihtimali ilginç.

  • Swift ikililerini Alpine konteynerinde çalıştırabilme: Swift ikililerini Alpine konteynerinde çalıştırabilmek sevindirici. musl desteği beklenenden daha hızlı ilerliyor. Çapraz derleme de çok kullanışlı.

  • Debian desteğine dair beklenti: Swift paketlerinin Debian'a eklendiğini görmek sevindirici. Geliştirme VM'i olarak Debian'ı daha fazla kullanacakmışım gibi görünüyor.

  • Gömülü sistemlerde Swift kullanma beklentisi: Gömülü sistemlerde çokça C kullandım ama Swift'i bir STM geliştirme kartında denemek istiyorum.

  • Statik bağlamanın dezavantajları: ASLR ya düzgün çalışmıyor ya da yalnızca tek bir nesne rastgeleleştiriliyor. Bellek güvenli dillerde bu büyük bir dezavantaj olmayabilir. Ortak nesneleri paylaşmak I/O'yu azaltma etkisi sağlayabilir.

  • Dağıtımlar arası uyumluluk sorunu: Belirli bir dağıtım veya sürümde derlenen programlar başka bir dağıtımda çalışmayabilir. Swift'in statik bağlama sunması iyi, ancak en iyisi dağıtımların paketlerin nasıl dağıtılacağını seçebilmesi.

  • Golang ile rekabet potansiyeli: Swift'in dağıtım kolaylığı açısından Golang ile rekabet edebileceği düşünülüyor. Karmaşıklığı son kullanıcıdan uzaklaştırıyor.

  • Çapraz platform GUI uygulamaları: Swift ile çapraz platform GUI uygulamaları yapmanın nasıl olacağı merak ediliyor. SwiftUI kullanılamayacak gibi görünüyor ama Swift'i basit script yazımı için kullanmayı planlıyorum.

  • CentOS 7 imajı kullanımına uyarı: Hâlâ CentOS 7 imajı sunuluyor olması çılgınlık gibi. Kullanmayın uyarısı var.

  • Swift'in artan karmaşıklığı: Swift kolayca Python'un yerini alabilirdi, ancak dil karmaşıklaştı ve artık C++'ın bir taklidine dönüştü.

  • Rust yerine neden Swift kullanılmalı?: Neden Rust yerine Swift kullanılması gerektiğine dair soru.

  • iOS/SwiftUI olmadan neden Swift kullanılmalı?: iOS/SwiftUI olmadan Swift kullanmak için bir sebep olup olmadığına dair soru. Swift geliştiricilerinin küçük projelerde alışık oldukları dili kullanmak istemesi dışında pek bir neden yok gibi görünüyor.