Swift 6.4 Yenilikleri: Swift Build Varsayılan, Subprocess 1.0, async defer ve 40x Hızlı WebAssembly

Alesta WEB

Swift 6.4 Yenilikleri: Swift Build Varsayılan, Subprocess 1.0, async defer ve 40x Hızlı WebAssembly

Kısa cevap: Swift 6.4, 15 Eylül 2026'da yayımlandı. Öne çıkanlar şunlar: Swift Package Manager'da Swift Build artık varsayılan, yani Linux, macOS ve Windows'ta aynı derleme davranışı. Dış programları çalıştırmak için Subprocess 1.0 kararlı hale geldi. (some Rocket)? yerine artık some Rocket? yazılabiliyor. Async kodda defer içinde await kullanılabiliyor. WebAssembly köprüsü 40 kata kadar hızlandı, Android desteği de güçlendi. Bu yazıda iOS ve sunucu tarafı geliştiricileri için önemli değişiklikleri örneklerle anlatıyoruz (Swift 6.4 new features, what's new in Swift).

Elde iPhone uygulaması ve arkada Mac (iOS app development)
Swift 6.4, iOS uygulamalarının yanı sıra Linux, Windows, Android ve WebAssembly hedeflerini de güçlendiriyor. Fotoğraf: Balázs Kétyi / Unsplash

Swift Build varsayılan oldu (Swift Build is now the default)

Swift Package Manager (SwiftPM) artık paketleri Apple'ın açık kaynak yaptığı Swift Build motoruyla derliyor. Bu, Xcode'un kullandığı motorla aynı. Pratikteki anlamı şu: bir paket macOS'ta derleniyor ama Linux CI'da başka davranıyorsa, bu farkların büyük kısmı ortadan kalkıyor. Projeleriniz Linux, macOS ve Windows'ta aynı şekilde derleniyor.

Aynı sürümle SwiftPM, yazılım malzeme listesi (SBOM) üretebiliyor (SE-0509). Çıktı SPDX ya da CycloneDX biçiminde olabiliyor. Kurumsal müşterilerin ve kamu ihalelerinin giderek daha sık istediği bir belge bu; artık ek araç gerekmeden oluşturulabiliyor.

Subprocess 1.0: süreç çalıştırmanın kararlı yolu

Swift'te başka bir programı çalıştırmak için uzun süre Foundation'daki Process sınıfı kullanılıyordu. Bu sınıf platformlar arasında tutarsızdı ve async/await ile uyumsuzdu. Subprocess paketi 1.0'a ulaşarak kararlı hale geldi:

import Subprocess

let sonuc = try await Subprocess.run(
  .name("ls"),
  arguments: ["-la"],
  output: .string(limit: 4096)
)
print(sonuc.standardOutput)

Çıktıyı sınırlamak (limit: 4096) bilinçli bir tasarım: kontrolsüz büyüyen bir çıktının belleği doldurmasını engelliyor. Sunucu tarafında Swift kullananlar ve komut satırı aracı yazanlar için en çok işe yarayacak yeniliklerden biri.

Dil değişiklikleri: some T?, async defer, iptal kalkanı

Opsiyonel some/any yazımı (SE-0521)

Opak ya da varoluşsal bir tipi opsiyonel yapmak için parantez gerekiyordu. Artık gerekmiyor:

// Swift 6.3 ve öncesi
func bul() -> (some Rocket)?

// Swift 6.4
func bul() -> some Rocket?

Async defer (SE-0493)

defer blokları, fonksiyondan nasıl çıkılırsa çıkılsın çalışan temizlik kodunu yazmanın yolu. Şimdiye kadar bu blokların içinde await kullanılamıyordu. Örneğin bir veritabanı bağlantısını async olarak kapatmak için dolambaçlı çözümler gerekiyordu. 6.4 ile bu kısıtlama kalktı:

func raporUret() async throws {
  let baglanti = try await havuz.al()
  defer { await havuz.birak(baglanti) }
  try await baglanti.sorgula("SELECT ...")
}

İptal kalkanı (SE-0504)

Swift'in yapılandırılmış eşzamanlılığında bir görev iptal edildiğinde, içindeki async çağrılar da iptal sinyali alır. Bu çoğu zaman istenen davranıştır, ama temizlik kodunun yarıda kesilmesine yol açabilir. withTaskCancellationShield, içindeki kodun iptalden etkilenmeden tamamlanmasını garanti ediyor.

Diğer dil özellikleri

  • Modül seçicileri (SE-0491): İki modülde aynı adlı API olduğunda :: ile hangisini kastettiğinizi belirtebiliyorsunuz.
  • @diagnose (SE-0522): Derleyici uyarılarını kaynak kod seviyesinde açıp kapatmak için.

Bellek güvenliği ve performans

Swift'in son birkaç sürümdür sürdürdüğü "kopyalanamayan tipler" (non-copyable, ~Copyable) çalışması bu sürümde de devam ediyor. Bu özellikler daha çok kütüphane yazarlarını ve performans kritik kod yazanları ilgilendiriyor:

  • UniqueArray (SE-0527): Kopyalanamayan elemanları copy-on-write maliyeti olmadan tutan dizi.
  • UniqueBox (SE-0517): Referans sayımı olmadan tekil sahiplik sağlayan akıllı işaretçi.
  • Iterable protokolü (SE-0516): Koleksiyonu kopyalamadan döngüyle gezmek.
  • Kopyalanamayan tiplerin opsiyonelleri (SE-0532) artık sorunsuz çalışıyor.
  • C++20 köprüsü: Swift'in Span tipi, C++'ın std::span'i ile doğrudan eşleşiyor. C++ kütüphanesi kullanan projelerde kopyasız veri aktarımı mümkün.

WebAssembly, Android ve Embedded Swift

WebAssembly: Swift'i tarayıcıda çalıştırmak için kullanılan JavaScriptKit köprüsü önceki sürümlere göre 40 kata kadar hızlı. Wasm SDK'sı artık doğrudan Swift.org kurulum sayfasından indirilebiliyor. Tarayıcıda yüksek performanslı kod çalıştırmayla ilgileniyorsanız WebGPU rehberimiz de ilginizi çekebilir.

Android: Toolchain, uzun süreli destekli NDK 30 ile derleniyor. Swift Build sayesinde SwiftPM, Android hedefini kurulum sonrası betik gerekmeden destekliyor. Swift'i Android'de iş mantığı katmanı olarak paylaşma fikri giderek daha gerçekçi hale geliyor. Kotlin tarafındaki benzer yaklaşımı Kotlin Multiplatform yazımızda karşılaştırmıştık.

Embedded Swift: Mikrodenetleyici sınıfı hedeflerde artık any Protokol gibi varoluşsal tipler kullanılabiliyor ve hata yönetimi zenginleşti.

Test ve hata ayıklama (Testing and debugging)

  • XCTest ve Swift Testing birlikte (ST-0021): Aynı projede iki test stilini karıştırmak ve geçişi aşamalı yapmak kolaylaştı.
  • Test başına tekrar (ST-0024): Ara sıra başarısız olan (flaky) bir testi tek başına defalarca çalıştırabiliyorsunuz.
  • LLDB: Modülleri belirsiz aramalar yerine bağımlılık takibiyle içe aktarıyor. Hata ayıklayıcıda "modül bulunamadı" sorunları azalıyor.
  • Daha küçük debug çıktıları: Linux ve Windows debug derlemelerine ikili Swift modülleri artık gömülmüyor.
  • VS Code eklentisi Open VSX Registry'de yayında; VS Code tabanlı diğer editörlerde de kurulabiliyor.

Kurulum ve geçiş önerileri (Installation)

macOS'ta Swift 6.4, Xcode'un ilgili sürümüyle geliyor. Linux ve Windows'ta resmî sürüm yöneticisi swiftly ile kurmak en kolayı:

swiftly install 6.4
swiftly use 6.4
swift --version

Geçiş önerilerimiz:

  1. CI'da önce paralel çalıştırın: Swift Build'e geçiş nedeniyle eski derleme sistemine özgü varsayımlara dayanan paketler farklı davranabilir.
  2. Process kullanan kodu Subprocess'e taşıyın, özellikle Linux'ta çalışan araçlarda.
  3. Parantezli (some T)? yazımları çalışmaya devam ediyor, acele etmeden temizleyebilirsiniz.
  4. Swift 6 dil modu (katı eşzamanlılık denetimi) hâlâ açmadıysanız, 6.4'ün daha iyi tanılama mesajları geçişi kolaylaştırıyor.

Alesta WEB olarak Android ve iOS uygulamalarını mağaza yayını dahil geliştiriyoruz. Bir uygulama fikriniz varsa mobil uygulama geliştirme sayfamıza göz atabilirsiniz.

Sık sorulan sorular

Swift 6.4 ne zaman çıktı?

15 Eylül 2026'da yayımlandı.

Swift 6.4 ile gelen en önemli değişiklik nedir?

Swift Package Manager'ın varsayılan olarak Swift Build motorunu kullanması. Böylece projeler bütün platformlarda aynı şekilde derleniyor.

Subprocess nedir?

Swift'ten başka programları çalıştırmak için platformlar arası, async/await uyumlu bir kütüphane. 6.4 ile birlikte 1.0 sürümüne ulaşarak kararlı hale geldi.

Mevcut iOS projem 6.4 ile derlenir mi?

Genellikle evet. Dil değişiklikleri geriye uyumlu. Yine de güncellemeden önce testlerinizi yeni sürümle çalıştırın.

Swift'i Windows'ta kullanabilir miyim?

Evet. Swift 6.4 Windows'u resmî olarak destekliyor ve Swift Build sayesinde derleme davranışı macOS ve Linux ile aynı.

Kapak fotoğrafı: James Harrison / Unsplash

Hazır mısınız?

Projenizi birlikte planlayalım

Haber sitesi, adisyon, QR menü ya da kurumsal web sitesi — ihtiyacınızı dinleyelim, demo hesabı açalım ve yazılı teklifimizi iletelim. Görüşme ücretsizdir.

WhatsApp