Ana Sayfa

Chromium'da Yasaklı C++ Özellikleri ve Stil Rehberi

1 dk okuma

Chromium projesi, genel C++ stil rehberinin bir parçası olarak, yeni C++ standartlarındaki ve Abseil kütüphanesindeki belirli dil ve kütüphane özelliklerinin kullanım durumunu özetleyen bir belge yayınlamıştır. Bu rehber, hem Chromium'un kendisine hem de alt projelerine uygulanmakta olup, alt projeler araç zinciri desteği gibi nedenlerle daha kısıtlayıcı kurallar benimseyebilir. C++ dili her üç yılda bir yeni bir standart (C++11, C++14 vb.) yayınlasa da, Chromium bu yeni özellikleri standart yayınlanır yayınlanmaz hemen kullanıma açmamaktadır. Bunun yerine, araç zinciri desteği (örneğin, derleme desteği) belirli bir düzeye ulaştığında, bir standart "başlangıçta destekleniyor" olarak ilan edilir; ancak yeni dil/kütüphane özellikleri, tartışmalar sonuçlanana kadar yasaklı kalır.

Bir özelliğin durumunu değiştirmek için cxx@chromium.org adresine e-posta göndererek bir öneride bulunulabilir. E-postada özelliğin ne olduğu, neden izin verilmesi veya yasaklanması gerektiği ve ilgili önceki tartışmalara bağlantılar yer almalıdır. Eğer bir konsensüs sağlanırsa, bu dosyanın güncellenmesi için bir kod incelemesi (codereview) gönderilir. Başlangıçtaki desteğin eklenmesinden iki yıl sonra hala "TBD" (belirlenecek) listesinde kalan maddeler, stil hakemleri tarafından açıkça izin verilenler veya yasaklananlar listesine taşınır; yasaklamak için belirgin bir neden yoksa izin verilir. Üçüncü taraf kütüphaneler genellikle dahili olarak yasaklı özellikleri kullanabilir, ancak derleyici desteği zayıf veya güvenlik özellikleri kötü olan özellikler kütüphaneyi Chromium ile uyumsuz hale getirebilir.

Chromium kod tabanında C++11'den itibaren bazı dil ve kütüphane özellikleri yasaklanmıştır. Örneğin, inline namespace (daha iyi sürümleme için), long long (en az 64 bitlik tam sayı; yerine <stdint.h> türlerinin kullanılması önerilir) ve kullanıcı tanımlı literals gibi dil özellikleri yasaklıdır. Kütüphane tarafında ise <cctype> (ASCII karakter yardımcıları; yerine absl/strings/ascii.h içindeki benzer işlevler), <cfenv> (kayan nokta durum bayrakları) ve <chrono> (standart tarih ve saat kütüphanesi; yerine base/time kullanılması önerilir) gibi özellikler yasaklıdır. Bu yasaklar, kod tabanının tutarlılığını, güvenliğini ve derleyici uyumluluğunu sağlamayı amaçlar.

İçgörü

Chromium'un C++ stil rehberi, yeni C++ standart özelliklerini projenin özel ihtiyaçları ve araç zinciri uyumluluğu doğrultusunda dikkatli bir şekilde benimseyerek kod tabanının kalitesini ve sürdürülebilirliğini korumayı hedefliyor.

Kaynak