İçeriğe geç
edumintsBlog
Backend4 dk okuma

.NET 11 Çalışma Zamanındaki (Runtime) Yenilikler

Kaynak: Hacker News

Paylaş
BackendEdumints Blog
İçindekiler 4 başlık

Bu makale, Sürüm Adayı 2 (RC 2) itibarıyla güncellenen .NET 11 çalışma zamanı (runtime) içindeki yeni özellikleri ve mimari değişiklikleri ele almaktadır. Yazılım geliştiriciler için çalışma zamanı güncellemelerini takip etmek, uygulamaların dağıtım (deployment) süreçlerinde yaşanabilecek donanım uyumsuzluklarını önceden tespit etmek ve performans kazanımlarını anlamak açısından kritik öneme sahiptir.

Güncellenen Minimum Donanım Gereksinimleri#

.NET 11 ile birlikte hem x86/x64 hem de Arm64 mimarilerinde daha modern komut setlerini (instruction sets) zorunlu kılacak şekilde minimum donanım gereksinimleri güncellenmiştir. Buna ek olarak, ReadyToRun (R2R) derleme hedefleri de yeni nesil donanım yeteneklerinden en üst düzeyde faydalanacak biçimde yükseltilmiştir. Geliştiricilerin sunucu ve istemci hedeflerini planlarken bu yeni temel seviyeleri dikkate alması gerekir.

Arm64 Gereksinimleri#

İşletim sistemlerine göre Arm64 mimarisindeki değişiklikler ve pratik yansımaları şu şekildedir:

  • Apple: Minimum donanım gereksinimlerinde veya ReadyToRun hedefinde herhangi bir değişiklik yapılmamıştır. Apple M1 yongaları yaklaşık olarak armv8.5-a seviyesine denk gelir ve en az AdvSimd (NEON), CRC, DOTPROD, LSE, RCPC, RCPC2 ve RDMA komut setlerini destekler.
  • Linux: Minimum donanım gereksiniminde değişiklik yoktur. .NET, yalnızca AdvSimd komut setini destekleyen Raspberry Pi gibi cihazları desteklemeye devam etmektedir. Ancak ReadyToRun hedefi LSE komut setini içerecek şekilde güncellenmiştir; bu durum, LSE desteği olmayan eski cihazlarda bir uygulama başlatılırken ek JIT derleme yüküne (jitting overhead) yol açabilir.
  • Windows: Temel gereksinim LSE komut setini zorunlu kılacak şekilde güncellenmiştir. Bu durum Windows 11 ve Windows 10 tarafından resmi olarak desteklenen tüm Arm64 işlemcilerle ve Arm SBSA (Server Base System Architecture) gereksinimleriyle uyumludur. ReadyToRun hedefi ise resmi desteklenen donanımların çoğunu kapsayan ve en az AdvSimd, CRC, LSE, RCPC ile RDMA desteği sunan armv8.2-a + RCPC olarak güncellenmiştir.
İşletim SistemiÖnceki JIT/AOT MinimumuYeni JIT/AOT MinimumuÖnceki R2R HedefiYeni R2R Hedefi
AppleApple M1(Değişiklik yok)Apple M1(Değişiklik yok)
Linuxarmv8.0-a(Değişiklik yok)armv8.0-aarmv8.0-a + LSE
Windowsarmv8.0-aarmv8.0-a + LSEarmv8.0-aarmv8.2-a + RCPC

x86/x64 Gereksinimleri#

Üç işletim sisteminin tamamında (Apple, Linux ve Windows) temel donanım seviyesi x86-64-v1 değerinden x86-64-v2 seviyesine yükseltilmiştir:

  • Temel Komut Seti Güvenceleri: Donanım artık yalnızca CMOV, CX8, SSE ve SSE2 komutlarını değil; aynı zamanda CX16, POPCNT, SSE3, SSSE3, SSE4.1 ve SSE4.2 komut setlerini de garanti altına alır. Bu seviye, Windows 11 ve Windows 10 üzerinde resmi olarak desteklenen tüm x86/x64 işlemciler için zaten zorunludur ve yaklaşık 2013 yılından beri desteklenen tüm Intel ve AMD yongalarını kapsar.
  • ReadyToRun (R2R) Hedefleri: Windows ve Linux için R2R hedefi; AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT ve MOVBE komut setlerini içeren x86-64-v3 seviyesine güncellenmiştir. Apple için R2R hedefi ise değişmemiştir.
İşletim SistemiÖnceki JIT/AOT MinimumuYeni JIT/AOT MinimumuÖnceki R2R HedefiYeni R2R Hedefi
Applex86-64-v1x86-64-v2x86-64-v2(Değişiklik yok)
Linuxx86-64-v1x86-64-v2x86-64-v2x86-64-v3
Windowsx86-64-v1x86-64-v2x86-64-v2x86-64-v3

Etki ve Pratik Çıkarımlar#

.NET 11 ile birlikte yeni donanım politikasının üretim ortamlarına etkisi iki temel noktada görülür:

  • Eski Donanımlarda Çalışmama: .NET 11, temel gereksinimleri karşılamayan eski donanımlarda çalışmayı durdurur ve şu hataya benzer bir mesaj üretir: "The current CPU is missing one or more of the baseline instruction sets."
  • Başlangıç (Startup) Maliyeti: ReadyToRun destekli derlemelerde (assemblies), minimum gereksinimi karşılayan ancak R2R hedefindeki tüm komut setlerini desteklemeyen donanımlarda ek başlangıç (startup) yükü oluşabilir. Geliştiricilerin özellikle eski sanal makinelerde veya gömülü Linux cihazlarında konteyner ve uygulama dağıtımı yaparken işlemci bayraklarını kontrol etmesi önerilir.

Kaynak ve atıf

Bu yazı, Hacker News üzerinde yayımlanan içerikten yararlanılarak Edumints tarafından yapay zekâ desteğiyle Türkçe hazırlandı. Ayrıntılar ve yazarların kendi anlatımı için orijinaline bakabilirsin:

  • learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-11/runtime