Hepimiz Linux’un C dilinde yazıldığını biliyoruz. Bununla birlikte, Linux’un çok eski bir C lehçesiyle yazıldığını bilmiyor olabilirsiniz: C dil standardı C89’un 1989 versiyonu ve aynı zamanda ANSI X3 olarak da bilinir. 159-1989 veya ANSI C. Linux kurucusu Linus Torvalds için, çekirdeğin resmi C dilini 2011 yılına kadar uzanan C11 standardına yükseltme zamanı.

Yine de, C89 her zaman neredeyse evrensel destekten faydalanacaktır. Herhangi bir C derleyicisi önceki sürümlerle geriye dönük olarak uyumlu olduğundan, bir C89 programını derlerken veya çalıştırırken sorun yaşamayacaksınız. Bu nedenle, C11 uyumlu bir derleyicinin eski C89 koduyla hiçbir sorunu olmayacaktır. Öyleyse neden endişeleniyorsun? Özellikle yapılan değişiklik, daha yeni sürümlerde görünen kullanışlı özellikleri içermediğinden.

Bu durum, çekirdeğin bağlantılı liste spekülatif yürütme ilkel işlevleriyle ilgili olası bir güvenlik sorununu düzeltmek için yamada başka bir sorun ortaya çıktığında Linus Torvalds’ın dikkatine sunuldu. Bu sorunu çözen Linus Torvalds, C99’da liste geçiş makrolarına iletilen yineleyicinin döngünün kendisinin dışında bir kapsamda bildirilmesi gerektiğini fark etti.

C99 veya C11?

Linux çekirdeğinin kurucusu için, “bu tür spekülatif olmayan hataların ortaya çıkmasının nedeni, tarihsel olarak C99 stilinde “değişkenleri döngülerde bildirmememiz”dir. Yani list_for_each_entry() – ve diğerleri – temelde her zaman döngünün son HEAD girişinden kaçar, çünkü döngünün içinde yineleyici değişkeni bildiremedik. Cevap ? Sonunda C89’dan daha yeni bir standart C’ye geçmek, bu tür bir problemin olmamasını sağlar.

Bu nedenle, bilgisayar bilimcisi, “C99 standardına geçişi düşünmenin zamanı gelmişti – hala 20 yıldan daha eski, ancak en azından blok düzeyinde değişken bildirimlerine izin verecek kadar yeni” diyor.

Linux çekirdek geliştiricisi Arnd Bergmann, bunun yapılabileceğini kabul ediyor. Ve 2011’den itibaren C11 standardına yükseltmenin bile mümkün olduğunu eklemek gerekirse. C99 hiçbir zaman çok popüler olmadığından ve C11 çoklu kullanım için standartlaştırılmış destek sunduğundan ve dili biraz daha güvenli hale getirdiğinden, bu iyi bir fikir gibi görünüyor.

bir birikim

Ayrıca kolay bir karar olacaktır. Minimum Linux çekirdeği C derleyicisi, GCC sürüm 5.1, zaten C11’i desteklemektedir. Linus Torvalds’ta çalışıyor. “Bunun yıllardır üretildiğini göz önünde bulundurarak, nihayet bu konuda ilerlemek istiyorum. »

Ardından, yeni C standardının çekirdekte sorunsuz bir şekilde çalışması gerektiğinden emin olduktan sonra, Linus Torvalds tetiği çekmeye karar verdi. “Sadece 5.18 birleştirme penceresinin başında deneyelim. 5.18 birleştirme penceresi neredeyse burada olduğundan, çekirdekte Mart ayı gibi erken bir tarihte C11 koduna sahip olabiliriz.

Ya da değil. Linux çekirdeği geliştiricisi ve gazetecisi Jonathan Corbet için, “ancak, birleştirme penceresi ile sürüm 5.18 arasında çok şey olabileceğini akılda tutmalısınız. Dil standardının yeni bir versiyonuna geçmek, çekirdeğin karanlık yerlerinde bir takım sürprizleri ortaya çıkarabilir; değişikliğin şu anda geri alınması fazla zaman almaz. Ancak her şey yolunda giderse, bir sonraki çekirdek sürümünde C11’e geçiş gerçekleşecek.”

Kaynak: ZDNet.com



genel-15

Bir yanıt yazın