17 puan yazan baeba 2025-05-12 | Henüz yorum yok. | WhatsApp'ta paylaş

1. Proje özeti ve amacı

Eta Labs, Linux için C/POSIX standart kütüphane uygulamalarını işlevsellik ve hafiflik ("bloat") odağında karşılaştırdı. Karşılaştırmaya musl, uClibc, dietlibc ve glibc dahil edildi; ileride bionic ve BSD libc'lerin de eklenmesi planlanıyor.

2. Bellek kullanımı ve hafiflik karşılaştırması (Bloat)

  • musl ve dietlibc çok hafiftir ve çok küçük çalıştırılabilir dosyalar üretebilir (static hello: 13k, glibc'de ise 662k).
  • glibc, toplam .so boyutunun 7.9M'ye ulaşmasıyla en ağır seçenektir, ancak iconv gibi çok sayıda özellik içerir.
  • uClibc, çok sayıda isteğe bağlı özellik etkin durumdayken test edildi.

3. Kaynak yetersizliği durumlarına tepki

  • musl, hataları açık biçimde bildirir ve çoğu durumda anormal sonlanma olmadan durumu işler.
  • glibc ve uClibc, bellek yetersizliğinde abort edebilir veya istisnaları doğru şekilde işleyemeyebilir.
  • dietlibc'de bazı işlevler hiç uygulanmamıştır ya da işleme düzeyi çok zayıftır.

4. Performans karşılaştırması

  • glibc, bellek işlemlerinde (strchr, memset vb.) ve I/O'da (putc/getc) en iyi performansı gösterir.
  • musl, dengeli performans ve düşük overhead sunarak rekabetçi bir yapı sergiler.
  • dietlibc, strstr, putc/getc ve thread ile ilgili işlemlerde ezici biçimde yavaştır.

5. ABI kararlılığı ve sürüm uyumluluğu

  • musl ve glibc, ABI kararlılığı ve uyumluluğu sağlar; ancak sembol sürümlemeyi yalnızca glibc destekler.
  • dietlibc ve uClibc, genel olarak ABI uyumluluğu ve sürüm uyumluluğu açısından yetersizdir ya da bunu gayriresmî biçimde sunar.

6. Algoritmalar ve iç uygulama

  • musl ve glibc, gelişmiş substring arama (twoway), DFA tabanlı düzenli ifadeler ve performans odaklı malloc kullanır.
  • dietlibc, naive quicksort ve backtracking regex gibi yaklaşımlar nedeniyle performans ve kararlılık açısından zayıftır.
  • Sıralama ve bellek ayırma algoritmaları tarafında glibc, introsort, ptmalloc gibi daha gelişmiş teknikler kullanır.

7. Özellik/standart destek kapsamı

  • glibc, neredeyse tüm C99/C11 ve POSIX özelliklerini destekler; locale, iconv ve hata ayıklama işlevlerine kadar geniş bir kapsama sahiptir.
  • musl, gerekli işlevlere uyarken bunu küçük boyutlu bir uygulamayla gerçekleştirir.
  • dietlibc'de çoğu özellik eksik, yarım kalmış ya da yetersizdir; POSIX uyumluluğu da düşüktür.

8. Mimari ve build ortamı desteği

  • musl, başlıca mimarilerin çoğunu (x86, ARM, MIPS vb.) geniş biçimde destekler ve non-MMU ortamlarını da dikkate alır.
  • glibc, geleneksel olarak en geniş desteği sunar ve dağıtımı yaygındır.
  • dietlibc, yalnızca asgari sayıda mimariyi destekler; taşınabilirlik ve build esnekliği düşüktür.

Henüz yorum yok.

Henüz yorum yok.