- 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
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 ..
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.