Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
sccache 0.19.0 ağırlıklı olarak correctness ve robustness odaklı bir release. Multi-arch caching artık stale universal object riski oluşturmuyor, remote storage error’ları cache miss olarak gizlenmiyor, multi-level cache kullanılamayan optional level’ları tolere edebiliyor ve distributed compilation tarafında çok sayıda sorun giderildi.
Öne Çıkanlar
Cache-key doğruluğu:SCCACHE_CACHE_MULTIARCH kullanıldığında birden fazla -arch value içeren gcc/clang compilation’ları artık her architecture için ayrı ayrı preprocess ediliyor. Böylece [B]aarch64[/B], [B]SSE2[/B] gibi condition’larla korunan code da hash’e dahil ediliyor. Eski single-pass preprocessor cache entry’leri yeniden kullanılmıyor ve multi-arch compilation’lar artık distributed olarak çalıştırılmıyor. Preprocessor cache içerisindeki include validation da düzeltildi.
Rust:dep-info artık cache’den restore edilmek yerine local olarak yazılıyor. Böylece başka bir checkout veya makinede oluşturulan cache entry’nin Cargo’yu mevcut olmayan path’lere yönlendirmesi engellendi. .rmeta artifact notification’ları, cache miss ve client-side mode dahil olmak üzere compile tamamlanmadan Cargo’ya stream ediliyor ve pipelining’in gecikmesi önleniyor. Rust output’ları ayrıca diğer hashing task’leri çalışırken eş zamanlı olarak hesaplanıyor.
MSVC: clang-cl ile build edilen C++20 named module’lar cache’lenebiliyor. CL ve [I]CL[/I] environment variable’ları destekleniyor. /Tc ve /Tp input argument olarak işleniyor. Bir directory’yi gösteren -Fd argument’ının başarılı bir compilation’ı fatal error’a dönüştürmesi engellendi.
Storage: Credential veya network kaynaklı remote read error’ları artık sessizce cache miss olarak sayılmak yerine cache error olarak raporlanıyor. Write policy tarafından optional kabul edilen bir cache level kullanılamadığında multi-level cache başlatılabiliyor. Client-side raw hit’ler daha hızlı cache level’lara backfill ediliyor ve her level için ayrı statistics tutuluyor. reqwest 0.13 upgrade sonrasında TLS trust root’ları geri getirildi. WebDAV için SCCACHE_WEBDAV_DISABLE_CREATE_DIR seçeneği eklendi.
Distributed compilation: Rust toolchain’leri daha seçici şekilde package ediliyor ve lib64 kullanan distro toolchain’leriyle çalışıyor. Metadata hash’i olmayan crate’ler doğru şekilde package ediliyor, evict edilmiş toolchain archive’ları yeniden oluşturuluyor ve scheduler restart’ları arasında job ID collision oluşması engelleniyor. Rust sysroot weak toolchain key’e dahil edildi ve overlay builder, toolchain ile input path’lerini chroot içerisinden resolve ediyor. Remote compilation failure’ları artık killed by signal yerine gerçek exit code’u bildiriyor.
Statistics:--show-stats artık effective cache mode’u gösteriyor. Cache’lenemeyen Rust compilation’ları crate type’a göre ayrıntılı olarak raporlanıyor.
Özellikler
rustc için .rmeta artifact notification’larının stream edilmesi sağlandı.
rustc output’larının diğer hashing task’leriyle concurrent olarak hesaplanması sağlandı.
WebDAV için SCCACHE_WEBDAV_DISABLE_CREATE_DIR seçeneği eklendi.
Distributed compilation’da SCCACHE_DIST_CLIENT_CACHE_DIR setting’inin dikkate alınması sağlandı.
Cache’lenemeyen Rust crate type’ları statistics içerisinde gösteriliyor.
Effective cache access mode statistics içerisinde gösteriliyor.
Rust toolchain packaging işlemi daha seçici hâle getirildi.
Compiler Desteği
MSVC: clang-cl ile build edilen C++20 named module’ların cache’lenmesi sağlandı.
MSVC:CL ve [I]CL[/I] environment variable’ları için destek eklendi.
MSVC:/Tc ve /Tp artık input file argument olarak işleniyor.
Düzeltmeler
gcc, clang: Multi-arch compilation’ların her -arch için ayrı ayrı preprocess edilmesi sağlandı.
Preprocessor cache include validation düzeltildi.
Rust:dep-info artık cache’den restore edilmek yerine local olarak yazılıyor.
Drive letter ile başlayan glued value’lardaki base directory’lerin doğru şekilde kaldırılması sağlandı.
--debug-preprocessor-cache için configured cache directory’nin kullanılması sağlandı.
MSVC: Bir directory’yi gösteren -Fd için yanında program database bulunmasının beklenmesi engellendi.
NVCC: Subcommand exit code’larının signal yerine gerçek exit code olarak raporlanması sağlandı.
Remote read error’larının cache miss olarak değerlendirilmesi yerine raporlanması sağlandı.
Multi-level cache’in kullanılamayan optional cache level’ları tolere etmesi sağlandı.
Client-side multi-level raw hit’lerin diğer cache level’lara backfill edilmesi sağlandı.
Client-side raw read’ler için per-level statistics tutulması sağlandı.
reqwest 0.13 ile TLS trust root’ları geri getirildi.
Metadata hash’i bulunmayan dependency’ler için Rust distributed packaging düzeltildi.
Allocation sırasında reaped edilen assignment’ların reddedilmesi sağlandı.
dist-status içerisinde expired client state için retry desteği eklendi.
Archive eviction sonrasında toolchain’lerin yeniden package edilmesi sağlandı.
Scheduler restart’ları arasında job ID’lerin namespace edilerek collision oluşturması engellendi.
Rust sysroot, weak toolchain key’e dahil edildi.
Toolchain archive ID format’ının doğrulanması sağlandı.
sccache-dist overlay builder’ın toolchain ve input path’lerini chroot içerisinden resolve etmesi sağlandı.