MSVC Build Tools Preview Temmuz 2026: v14.52 Notları
MSVC Build Tools Preview, Microsoft’un C++ derleyicisini geliştiren ekibin en güncel eklemelerini ve düzeltmelerini paylaştığı düzenli bir akışla ilerliyor. Eric Brumer imzalı Temmuz 2026 güncelleme özeti, v14.52 sürümünü hedefleyen değişiklikleri; derleyici ön yüzü, arka uç, bağlayıcı (linker), standart kütüphane ve ilgili araçlar üzerinde topluyor. Bu yazıda, kaynaktaki değişiklikleri Türkçe olarak derli toplu bir şekilde bulacaksınız.
Önizleme sürümünü Visual Studio 2026 Kararlı Kanal veya Insiders Kanalı üzerinden edinmek mümkün; ancak MSVC Preview güncellemeleri Insiders tarafında daha sık (yaklaşık haftalık) yayınlanıyor. Yükleyicide MSVC Build Tools for x64/x86 (Preview) ya da MSVC Build Tools for ARM64/ARM64EC (Preview) bileşenlerinden birinin veya ikisinin işaretli olduğundan emin olmak yeterli. Kurulumdan sonra IDE ve komut istemlerini önizleme araç zincirini kullanacak şekilde yapılandırmak için Microsoft’un yönlendirdiği aka.ms/msvc/preview adresi rehber görevi görüyor. cl.exe ve link.exe tarafından basılan sürüm numarası en az 19.52.36520 / 14.52.36520 olarak görünmeli.
C++ Uyumluluk ve Ön Yüz
Bu turda ön yüz tarafındaki değişiklikler, dil uyumluluğunu ve derleyici sağlamlığını doğrudan etkileyen bir dizi düzeltmeden oluşuyor:
- Designated initialization (atanmış başlatma) kuralları gevşetilerek daha fazla geçerli C++ kodu kabul ediliyor.
- Modüller içinde
constexpr new[](dizi tahsisi) desteği eklendi. - Non-type template argümanlarının karşılaştırması düzeltildi; artık kavramlar (concepts) sınıf dışı üye fonksiyon tanımlarının derlenmesini engellemiyor.
- Tip çıkarımı düzeltildi: iç içe lambda’larda ve mutable olmayan bir lambda içinde yakalanmış bir varlığın
decltypeifadesinde doğru tip yayılıyor. __is_constructibletip özelliğinin hatalı sonuç ürettiği bir durum düzeltildi.- İç içe struct’lar içeren yapılar üzerinde
std::is_layout_compatible‘ın hatalı negatif sonuç verdiği durum giderildi. _Pragmaişlenmesi iyileştirildi: makrolarla karışık kullanımda daha iyi destek,/Ealtında tam destek ve fonksiyon benzeri makronun_Pragmaiçinde genişlemesi sırasındaki önişlemci çökmeleri düzeltildi.- Derin iç içe başlatıcılar için derleyici limiti ve eski önişlemci makro tamponlarının maksimum boyutu artırıldı.
- Caret (
^) tanılama çıktısı etkin olduğunda bellek kullanımı azaltıldı. - Sınıf şablonlarında
autodönüş tipine sahip aşırı yüklenmiş üye fonksiyonunstatic_castile seçilmesi düzeltildi. - Daha önce sahte
C2641üreten sınıf şablonu argüman çıkarımı düzeltildi. requiresyan tümcesi ile parametre paketinden önceki varsayılan şablon argümanı, aggregate initialization ile coroutine’ler ve öz-yinelemeli variadic şablon varsayılan üye başlatıcıları içeren birkaç iç derleyici hatası giderildi.- Eski Windows sürümlerinde
MultiByteToWideCharkullanımının sağlamlığı artırıldı.
C++ Modülleri
- Üçüncü taraf başlıklarını dahil ettikten sonra
import std;ile derlenen bölümlenmiş bir C++23 modülü içe aktarıldığında oluşanC1001veC1116gerilemesi düzeltildi. - Bir modülden aşırı yükleme setinin dışa aktarılmasında ortaya çıkan iç derleyici hatası giderildi.
- Header-unit çözümlemesi iyileştirildi: çözümlenen giriş daha önce tüketilmişse, tırnaklı include artık açılı ayraç aramasına doğru biçimde geri düşüyor.
- Bir içe aktarma kitaplığında yinelenen C++ modül dışa aktarımlarını raporlayan yeni bir
LNK4321uyarısı eklendi.
Kod Üretimi ve Optimizasyon
Bu sürümde en yoğun değişikliklerin gerçekleştiği alan kod üretimi tarafı. Hem ARM64 hem de x64 mimarilerinde belirgin iyileştirmeler ve düzeltmeler var.
ARM64
floor,ceil,truncveroundiçin vektörleştirme desteği eklendi.- NEON kod üretimi iyileştirildi: gereksiz duplicate dizileri katlanıyor, maske girişlerinde sıfıra karşı gereksiz karşılaştırmalar eleniyor ve NEON vektör aritmetiği boyunca canlı bitler takip edilerek ölü komutlar kaldırılıyor.
- Hesaplanan indeks üzerinden erişilen bitişik global tablo aramalarında load-pair / store-pair birleşimi etkinleştirildi.
- Yoğun kullanılan değerler için register spill ve rematerialization maliyet modellemesi iyileştirildi.
- Eşleşmiş tam sayıdan kayan noktaya SIMD dönüşümlerinde işaret uyumsuzluğu düzeltildi.
x64
- Yeni x64 komut kümesi (APX) için kod üretimi genişletildi: yeni hedef biçim düşürme, koşullu taşıma (conditional-move) optimizasyon deseni ve LTCG altında çağrılar arası çağıran tarafından kaydedilen (caller-saved) register’ların gereksiz yere canlı tutulmasıyla ilgili düzeltme.
- Yüksek numaralı vektör indeks register’ı kullanan geçersiz bir AVX-512 gather komutu üretimi düzeltildi.
- Population-count (
popcount) desenleri için kod üretimi iyileştirildi. - 32-bit x86
floorgenişletmesinde negatif sıfırın işareti korunuyor. - Sondaki sıfırları sayan (trailing-zero counting) azalan bit-arama döngülerinde ortaya çıkan miscompile sorunu giderildi.
- Fused multiply-add içeren konuşma tanıma iş yükündeki performans gerilemesi ele alındı.
Optimize Edici
- Taşabilen indüksiyon değişkenleri için strength reduction etkinleştirildi ve optimize edicinin güvenli şekilde işleyebildiği taşma senaryoları genişletildi.
- Loop-invariant code motion daha erken devreye giriyor.
- Yeni bir ifade yeniden ilişkilendirme (expression-reassociation) geçişi etkinleştirildi.
- PGO ile birlikte tip tabanlı devirtualization etkinleştirildi ve speculative devirtualization inlining iyileştirildi.
- Büyük fonksiyonlarda common-subexpression elimination için sezgisel modeller geliştirildi.
- Optimize edici tarafında birkaç iç derleyici hatası ve miscompile düzeltildi: jump-threading çökmesi, LTCG altında loop unswitching, döngü optimize edicide overflow semantiğinin korunması, string-compare sadeleştirmede takılma ve based pointer üzerinden dolaylı erişimde hatalı kod üretimi bunların arasında.
/fp:strictaltında fence korunumu sorunu düzeltildi.
Diğer Kod Üretimi
/LTCG:incremental‘ın gereksiz yere tam derlemeye geri düşme sorunu düzeltildi.- Karışık
/Od+/O2LTCG derlemelerinde profil verisi okunamadığında zarif bir vazgeçme (graceful bailout) davranışı eklendi. - LTCG altında
externtip uyumsuzlukları içinC4744yayınlanıyor.
Linker, Statik Analiz ve AddressSanitizer
- Linker: Incremental pointer hesaplaması sırasında yaşanan bir linker çökmesi düzeltildi.
/NOEXPseçeneği kullanıldığında incremental linking sorunu giderildi. Incremental link senaryolarında PDB dosya büyümesi azaltıldı. PE hash hesaplamasında PDB “age” değerinin maskelenmesiyle deterministik davranış iyileştirildi. - Statik Analiz: Code Analysis için ortam değişkenlerini yapılandırmaya olanak veren komut satırı seçenekleri eklendi. Ternary operatör içindeki
throwgibi durumlarda görülen birkaç Code Analysis çökmesi giderildi. - AddressSanitizer:
RtlReAllocateHeapmüdahalesindeki bir düzeltme sayesinde işlem sonlandırma sırasında ASan’ın sahip olduğu belleğin yeniden tahsis edilmesi durumundaki çökmeler önlendi.
STL
Standart kütüphane tarafındaki değişiklikler bu güncellemede ayrı bir başlıkla ayrıntılı ele alınmıyor; kaynak, STL iyileştirmeleri için Microsoft’un GitHub üzerindeki STL değişiklik günlüğünü referans olarak veriyor.
Developer Community Üzerinden Kapatılan Biletler
Bu güncellemede Visual Studio Developer Community üzerinden bildirilen çok sayıda bilet çözüldü. Aşağıda kaynakta ismen belirtilen ve bağlantısı verilen bazı örnekler yer alıyor:
- /LTCG:incremental’ın hiçbir değişiklik olmadığında her seferinde tam derlemeye düşmesi
- APX LTCG kod üretiminin caller-saved register’ları çağrılar arasında canlı tutması
- ARM64 kod üretiminin
noexceptişaretli fonksiyonlarda function-scope try/catch’i bozması - ARM64 eşleşmiş int→double SIMD dönüşümünün USHLL+UCVTF üretmesi ve negatif değerlerin bozulması
- ARM64 LTCG c2 “Illegal reg field” iç derleyici hatası ve LNK1257
- ARM64 MSVC’nin iki ldr’yi ldp olarak birleştirmemesi
- ARM64EC linker’ın
__imp_PtInRecticall thunk uyuşmazlığı için LNK4279 üretmesi - AVX optimize edici / kod üretimi hatası
Kaynak metin ayrıca; C++/WinRT 3.0 modülleriyle FileTypeChoices::Insert çağrısındaki istisna, C++ Modules derleyicisinin .ixx dosyalarında C1001 vermesi, consteval kaynaklı derinlik limiti hatası, ternary’de throw‘da analiz aracının çökmesi, ARM64EC üzerinde std::filesystem::path ve std::chrono::tzdb ile LNK4279 uyarısı, std::generator‘ın /guard:cf altında 32-bit x86 için C4737 ile derlenememesi ve Unreal Engine 5 kaynak dosyalarında MSVC cl.exe’nin takılması gibi çok sayıda başka ilgili biletin de bu sürümde kapatıldığını belirtiyor.
MSVC Build Tools Preview’u Denemek
Sık güncelleme almak için Visual Studio 2026 Insiders, daha yavaş bir kadans tercih ediliyorsa Visual Studio 2026 kararlı sürümü indirilebilir. “Desktop development with C++” iş yükünü kurduktan sonra hedef mimariye göre MSVC Build Tools for x64/x86 (Preview) veya MSVC Build Tools for ARM64/ARM64EC (Preview) bileşenlerinden gerekli olanları işaretlemek yeterli. Konfigürasyon adımları aka.ms/msvc/preview üzerinde açıklanıyor. Karşılaşılan sorunların önizleme aşaması sona ermeden ele alınabilmesi için geri bildirimlerin Visual Studio Developer Community üzerinden iletilmesi öneriliyor.
Kaynaklar ve İleri Okuma
- MSVC Build Tools Preview updates – July 2026 (Eric Brumer, C++ Team Blog)
- Visual Studio 2026 indirme sayfası
- Visual Studio Insiders
- MSVC Build Tools Preview yapılandırma rehberi
- Visual Studio Developer Community
- MSVC Build Tools Haziran 2026 Önizleme: Sessiz Ama Derin İyileştirmeler
- MSVC Build Tools Preview Mayıs 2026: Derleyicide Sessiz Ama Kritik Güncellemeler
- MSVC Build Tools 14.51 GA: Derleyici Tarafında Yeni Bir Sayfa
- Pure Virtual C++ 2026: Hızlı Build, Hızlı Çalışan Kod Zamanı







Yorum gönder