4 puan yazan GN⁺ 2025-04-07 | 1 yorum | WhatsApp'ta paylaş
  • Swift topluluğu, WebAssembly(Wasm) desteğini istikrarlı biçimde geliştirmeyi sürdürüyordu ve buna dayanarak uzun vadeli bir vizyon öneriyor
  • WebAssembly, taşınabilirlik, güvenlik ve performansa odaklanan bir sanal makine komut kümesi olup çeşitli platformlarda çalışabiliyor
  • Swift'te Wasm desteği, Swift'in tarayıcı dahil yeni ortamlarda kullanılmasını mümkün kılıyor ve istemci/sunucu uygulamaları dahil her iki tarafta da kullanım alanını genişletiyor

Güvenlik ve sistem arayüzü özellikleri

  • Wasm, doğrudan sistem erişimi olmadan yalnızca açıkça içe aktarılan işlevleri çalıştırabildiği için güvenlik açısından avantaj sağlıyor
  • WASI(WebAssembly System Interface), Wasm'ın ana işletim sistemiyle etkileşime girebilmesi için standart API sunuyor
  • Swift, wasm32-unknown-wasi hedefinde WASI libc temelinde çalışıyor ve C birlikte çalışabilirliği sayesinde zaten kullanılabiliyor
  • W3C, Component Model aracılığıyla Wasm'ın tür sistemi ve modül entegrasyonunu birleşik biçimde yönetiyor
    • wit-tool ile Swift bildirimlerinden .wit üretilebiliyor; tersi yön de destekleniyor

Başlıca kullanım senaryoları

  • Swift macro'ları Wasm'a derlenerek her yerde çalışabilen ikili dosyalar olarak dağıtılabiliyor
  • SwiftPM eklentileri, manifestler ve macro'ların çalıştırılması sanallaştırılarak güvenlik artırılabiliyor
  • Wasm, JIT veya AOT derleme ile optimize edilmiş ikili dosyalar üretebildiğinden performans kaybını en aza indiriyor
  • Wasm ile sanallaştırılmış Swift bileşenleri ayrı bir süreç olmadan çalıştırılabiliyor, böylece IPC ek yükü ortadan kalkıyor

Önerilen hedefler

  1. Swift standart kütüphanesinde WASI destekli API kapsamının genişletilmesi
    • Test otomasyonu için CI ortamı kurulması gerekiyor
  2. Çapraz derleme araçlarının iyileştirilmesi
    • Swift SDK sürüm yönetiminin ve kurulumunun sadeleştirilmesi
  3. Component Model entegrasyonu
    • En güncel WASI spesifikasyonlarının Swift'te de kullanılabilmesi için destek sağlanması
  4. Diğer Wasm bileşenleriyle birlikte çalışabilirliğin geliştirilmesi
    • Amaç, Swift'te Wasm bileşenlerini kullanma deneyimini C/C++ ile eşdeğer hale getirmek
  5. Wasm üzerinde Swift için hata ayıklama ortamının iyileştirilmesi

Hata ayıklamayla ilgili noktalar

  • Wasm'da hata ayıklama sınırlı; kendi başına introspection özelliği bulunmuyor
  • İki ana yaklaşım bulunuyor
    1. LLDB ve GDB protokollerini destekleyen Wasm runtime'ı
    2. Wasm motoruna gömülü hata ayıklayıcı
  • Tarayıcı ve tarayıcı dışı ortamlar için farklı hata ayıklama yaklaşımları gerekiyor
  • Chrome DevTools gibi araçlarda DWARF bilgisi kullanılabiliyor, ancak Swift metadata'sı ve JIT ifade değerlendirme işlevi için ek entegrasyon gerekiyor

Çoklu iş parçacığı ve eşzamanlılık

  • Wasm'da şu anda yalnızca sıralı tutarlılığı destekleyen atomik işlemler bulunuyor
  • İş parçacığı oluşturma ana ortama bağlı
  • İki iş parçacığı önerisi bulunuyor:
    • wasi-threads (mevcut yaklaşım, bazı araçlar ve runtime'lar tarafından destekleniyor)
    • shared-everything-threads (yeni öneri, gelecekte standart haline gelme ihtimali var)
  • Swift, wasm32-unknown-wasi (tek iş parçacığı), wasm32-unknown-wasip1-threads (çok iş parçacığı) desteği sunuyor
  • Şu anda libdispatch wasi-threads'i desteklemediği için tek iş parçacıklı Swift Concurrency yürütücüsü kullanılıyor

64 bit adres alanı

  • Wasm, varsayılan olarak 32 bit adres alanı kullanıyor
  • 64 bit bellek önerisi (memory64) uygulama aşamasında bulunuyor
  • Swift'in bunu destekleyebilmesi için WebAssembly araç zincirinin iş birliği veya Swift metadata yapısında değişiklik gerekiyor

Paylaşılan kütüphaneler

  • İki yaklaşım bulunuyor
    1. Emscripten tarzı dinamik bağlama: Standart dışı ve runtime özelliklerine bağımlı
    2. Component Model tabanlı statik bağlama: Runtime'a özgü özel özellikler olmadan kullanılabiliyor ancak çalışma zamanında yükleme yapılamıyor
  • Swift'te paylaşılan kütüphaneleri kullanmak için PIC(Position-Independent Code) modunda derlemek ve belirlenmiş bağlama kurallarına uymak gerekiyor

1 yorum

 
kandk 2025-04-07

Swift güzel ama, terk edilmiş Swift yeniden canlanabilir mi..