17 poin oleh baeba 2025-05-12 | Belum ada komentar. | Bagikan ke WhatsApp

1. Ringkasan proyek dan tujuan

Eta Labs membandingkan implementasi pustaka standar C/POSIX untuk Linux dengan fokus pada fungsionalitas dan keringanan ("bloat"). Objek perbandingan adalah musl, uClibc, dietlibc, dan glibc, serta ke depannya bionic dan BSD libc juga akan ditambahkan.

2. Perbandingan penggunaan memori dan keringanan (Bloat)

  • musl dan dietlibc sangat ringan dan dapat menghasilkan berkas eksekusi yang kecil (static hello: 13k vs 662k pada glibc).
  • glibc adalah yang paling berat dengan ukuran total .so mencapai 7.9M, tetapi mencakup banyak fitur seperti iconv.
  • uClibc diuji dalam keadaan menyertakan banyak fitur opsional.

3. Respons terhadap kondisi kekurangan sumber daya

  • musl sering kali melaporkan kegagalan dengan jelas dan menanganinya tanpa penghentian abnormal.
  • glibc dan uClibc dalam beberapa kasus melakukan abort saat memori habis atau gagal menangani pengecualian dengan baik.
  • dietlibc memiliki beberapa fitur yang sama sekali belum diimplementasikan, atau hanya memiliki tingkat penanganan yang sangat minim.

4. Perbandingan performa

  • glibc menunjukkan performa terbaik pada operasi memori (strchr, memset, dll.) dan I/O (putc/getc).
  • musl menawarkan performa yang seimbang dengan overhead rendah sehingga tetap kompetitif.
  • dietlibc sangat lambat pada operasi terkait strstr, putc/getc, dan thread.

5. Stabilitas ABI dan kompatibilitas versi

  • musl dan glibc menyediakan stabilitas dan kompatibilitas ABI, tetapi hanya glibc yang mendukung pengelolaan versi simbol.
  • dietlibc dan uClibc secara umum kurang memadai atau tidak resmi dalam hal kompatibilitas ABI dan kompatibilitas versi.

6. Algoritma dan implementasi internal

  • musl dan glibc menggunakan pencarian substring tingkat lanjut (twoway), regular expression berbasis DFA, dan malloc yang berfokus pada performa.
  • dietlibc rentan dari sisi performa dan stabilitas karena memakai quicksort naif dan regex backtracking.
  • Algoritma pengurutan dan alokasi memori pada glibc lebih canggih, dengan introsort, ptmalloc, dan lainnya.

7. Cakupan dukungan fitur/standar

  • glibc mendukung hampir semua fitur C99/C11 dan POSIX, serta memiliki cakupan luas hingga locale, iconv, dan fitur debugging.
  • musl diimplementasikan dalam ukuran kecil sambil tetap mematuhi fitur-fitur esensial.
  • dietlibc sebagian besar fiturnya tidak lengkap atau kurang memadai, dan kompatibilitas POSIX-nya juga rendah.

8. Dukungan arsitektur dan lingkungan build

  • musl mendukung secara luas sebagian besar arsitektur utama (x86, ARM, MIPS, dll.), serta mempertimbangkan hingga lingkungan non-MMU.
  • glibc secara tradisional memiliki dukungan paling luas dan telah didistribusikan secara luas.
  • dietlibc hanya mendukung arsitektur minimal, serta kurang dalam portabilitas dan fleksibilitas build.

Belum ada komentar.

Belum ada komentar.