Dev.to Security 🔐 Cybersecurity 👁 0 📖 4 min read

.NET 11 çıkıyor, .NET 8 ve 9 bitiyor

10 Kasım 2026 Salı, .NET tarafında üç şey aynı gün oluyor: .NET 8 ve .NET 9'un desteği bitiyor, .NET Conf 2026 açılıyor ve .NET 11 çıkıyor. O gün ayrıca ayın ikinci salısı, yani Microsoft'un aylık yama günü (Patch Tuesda

10 Kasım 2026 Salı, .NET tarafında üç şey aynı gün oluyor: .NET 8 ve .NET 9'un desteği bitiyor, .NET Conf 2026 açılıyor ve .NET 11 çıkıyor. O gün ayrıca ayın ikinci salısı, yani Microsoft'un aylık yama günü (Patch Tuesday).

Desteğin bitmesi uygulamanın durması demek değil. net8.0 hedefleyen bir servis 11 Kasım sabahı da çalışır. Değişen şey, o günden sonra bulunan bir açık için .NET 8 ve 9'a artık yama çıkmayacak olması. Microsoft'un destek politikasına göre 10 Kasım bu iki sürümün son yama günü.

Neden 8 ve 9 aynı gün bitiyor?

.NET 8 bir LTS (Long Term Support), .NET 9 ise bir STS (Standard Term Support) sürümü. İkisinin farkı yalnızca destek süresinde: sürüm politikası LTS'ye üç, STS'ye iki yıl veriyor.

STS eskiden 18 ay desteklenirdi. Microsoft 16 Eylül 2025'te bu süreyi .NET 9'dan başlayarak 24 aya çıkardı. Gerekçe şuydu: .NET 9'un desteği 12 Mayıs 2026'da, kendisinden bir yıl önce çıkan .NET 8'den altı ay önce bitecekti. Yeni kuralla .NET 8 (Kasım 2023 + üç yıl) ve .NET 9 (Kasım 2024 + iki yıl) aynı güne denk geldi.

LTS üç yıl, STS iki yıl destekleniyor. .NET 8 ve .NET 9 aynı gün, 10 Kasım 2026'da bitiyor. .NET 11 (STS) 9 Kasım 2028'e, .NET 10 (LTS) 14 Kasım 2028'e kadar destekleniyor: aradaki fark beş gün. Kaynak: Microsoft .NET destek politikası.

.NET 11'de neler var?

Microsoft'un .NET 11 yenilikleri listesi uzun. Backend tarafında öne çıkanlar:

  • Runtime Async: async/await için derleyicinin ürettiği durum makinesi yerine işi runtime'ın kendisi yürütüyor. Sonuç daha temiz stack trace ve daha az yük. net11.0 hedefleyen projelerde artık önizleme bayrağı istemiyor ve .NET'in kendi kütüphaneleri bununla derleniyor.
  • C# 15: union tipleri ve kapalı sınıf hiyerarşileri (closed hierarchies). Bir metodun "başarılı sonuç ya da şu üç hatadan biri" döndürdüğünü tip sistemiyle anlatmak kolaylaşıyor. Etiketli break/continue ve extension indexer da geliyor.
  • Decimal32, Decimal64, Decimal128: IEEE 754 standardındaki ondalık kayan nokta tipleri. Mevcut decimal'ın yerini almıyor; başka sistemlerle bu standartta veri alışverişi yapanlar için.
  • LINQ'te FullJoin: İki listeyi eşleştirip iki taraftan da eşi olmayanları getiren join artık hazır. İki kaynaktaki kayıtları karşılaştıran mutabakat kodu bunun tipik kullanım yeri.
  • Asenkron doğrulama: DataAnnotations'a AsyncValidationAttribute geldi. Doğrulama sırasında veritabanına ya da bir servise gitmek gerekiyorsa senkron beklemek zorunda değilsin.
  • HTTP ve sıkıştırma: Zstandard desteği, istek gövdesini sıkıştırma ve havuzdaki HTTP bağlantılarını kendi kuralınla kapatabilme.
  • İzleme: Activity izlemesini ActivityListener yazmadan, kurallarla açıp kapatabiliyorsun; MemoryCache için hazır OpenTelemetry metrikleri var.
  • SDK: dotnet nuget add source komutuna --min-publish-age-hours geldi. Yeni yayımlanan bir paketin, belirlediğin süre dolmadan projeye girmesini engelliyor; zehirli sürümlere karşı basit bir tampon.

Yükseltmeden önce: işlemci şartı

.NET 11'in en düşük donanım gereksinimi yükseldi. x64'te taban x86-64-v1'den x86-64-v2'ye çıktı; işlemcinin SSE4.2 ve POPCNT gibi komut setlerini desteklemesi gerekiyor. Intel ve AMD'nin hâlâ desteklediği bütün işlemciler bu şartı karşılıyor.

Takılabileceğin yer eski sunucular ya da işlemci özelliklerini misafir makineye kısıtlı gösteren sanallaştırma ortamları. Şart karşılanmazsa uygulama hiç açılmıyor ve "The current CPU is missing one or more of the baseline instruction sets" benzeri bir hata veriyor.

.NET 11 için neden RC3 çıktı?

.NET'te alışılmış sıra iki sürüm adayı (RC1, RC2), ardından Kasım'da genel sürümdür. Bu yıl 25 Ekim'de bir de RC3 çıktı. Sebep yeni bir özellik değil, takvim dışı bir güvenlik yaması: Brotli sıkıştırma kütüphanesindeki CVE-2026-111497. Aynı gün .NET 8, 9 ve 10'a da yama geldi.

Bu yama, desteği biten sürümde ne kaybettiğini de iyi gösteriyor: aynı açık 11 Kasım'da bulunsaydı .NET 8 ve 9 için düzeltme çıkmayacaktı.

LTS mi, STS mi? Hesap değişti

"Canlıda yalnızca LTS kullanılır" kuralı, STS'nin 18 ay desteklendiği dönemden kalma. Bugün .NET 10 (LTS) 14 Kasım 2028'e, .NET 11 (STS) 9 Kasım 2028'e kadar destekleniyor. 10 Kasım'da .NET 11'e geçen bir ekip, .NET 10'da kalan bir ekipten yalnızca beş gün önce yeniden yükseltme yapmak zorunda kalacak.

Yani seçim artık destek süresine değil, başka sorulara bağlı: .NET 11'in getirdiklerine ihtiyacın var mı, kullandığın kütüphaneler .NET 11'i destekliyor mu, ekibin her yıl sürüm yükseltebiliyor mu?

Kendi sisteminde nasıl kontrol edersin?

Dört yere bakman yeterli: projelerin hedef sürümü, sunucudaki runtime'lar, container imajları ve .NET 11'e geçeceksen işlemci.

# Projelerin hedeflediği sürüm
grep -rE "<TargetFrameworks?>" --include=*.csproj .

# Makinede kurulu runtime'lar
dotnet --list-runtimes

# Dockerfile'lardaki taban imajlar
grep -rn "mcr.microsoft.com/dotnet" --include="Dockerfile*" .

# Linux sunucuda x86-64-v2 için gereken komut setleri (ikisi de görünmeli)
grep -owE "sse4_2|popcnt" /proc/cpuinfo | sort -u

net8.0, net9.0 ya da aspnet:8.0 gibi bir sonuç görürsen o servis 10 Kasım'dan sonra yama almayacak. Self-contained yayımlanan uygulamalar runtime'ı kendi içinde taşıdığı için sunucuyu güncellemek onları kurtarmaz; onları yeniden derleyip yayımlaman gerekir.

Politikaya göre Visual Studio bu sürümleri bir ay sonra "desteği bitmiş" olarak işaretleyecek, altı ay sonra da yeni SDK'lar bu sürümleri hedefleyen projelerde NETSDK1138 uyarısı vermeye başlayacak. Uyarıyı beklemeden listeyi şimdi çıkarmak daha ucuz.

Bu yazı ilk olarak huseyinbozdemir.com'da yayımlandı.

📰 Read the original article on Dev.to Security

Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.