2 poin oleh GN⁺ 2025-11-03 | Belum ada komentar. | Bagikan ke WhatsApp
  • Fil-C, kompiler C/C++ baru dengan keamanan memori, menunjukkan kompatibilitas tinggi dengan kode yang sudah ada, dan sebagian besar library serta aplikasi berjalan tanpa modifikasi
  • Tersedia prosedur build dan instalasi dari source untuk Fil-C di lingkungan Debian 13, serta skrip instalasi otomatis untuk mengompilasi ulang glibc dan binutils dengan Fil-C
  • Dalam sekitar 9000 mikrobenchmark perangkat lunak kriptografi, Fil-C menggunakan 1–4 kali jumlah siklus dibanding clang
  • Dicoba integrasi ke sistem build paket Debian dengan Fil-C, dengan menambahkan ABI baru (amd64fil0) untuk memungkinkan instalasi paralel paket berbasis Fil-C
  • Fil-C mengejar keamanan memori sekaligus kompatibilitas dengan ekosistem yang ada, dan menunjukkan potensi perluasan ke sistem berbasis Debian

Gambaran Fil-C dan kesan awal

  • Fil-C adalah kompiler C/C++ yang menjamin keamanan memori, dengan kompatibilitas tinggi terhadap kode yang sudah ada
    • Sebagian besar library dan aplikasi berjalan tanpa modifikasi
    • Dalam beberapa kasus pengecualian yang memerlukan perubahan, tingkat kesulitannya juga tidak terlalu berat
  • Penulis menargetkan untuk mengalihkan beberapa sistem yang dikelolanya ke kode yang dikompilasi dengan Fil-C demi perlindungan
  • Lingkungan pengujian adalah Debian 13, AMD Ryzen 5 7640HS (6 core 12 thread), RAM 12GB, memori swap 36GB

Materi terkait dan skrip

  • Dipublikasikan skrip diff untuk audit yang membandingkan perbedaan antara Fil-C dan source hulu (misalnya clang, glibc)
  • Tersedia skrip filian-install-compiler untuk mengunduh, mengompilasi, dan memasang Fil-C, glibc, dan binutils di Debian 13
    • Total waktu eksekusi: waktu nyata 86 menit, waktu user 477 menit, waktu sistem 52 menit
  • Tersedia skrip filian-install-packages untuk membangun paket source Debian dengan Fil-C
    • Beberapa paket (seperti bzip2) dipastikan berhasil dibangun
  • Dipublikasikan grafik performa Fil-C vs. clang
    • Hasil dari sekitar 9000 mikrobenchmark terkait kriptografi
    • Kode yang dikompilasi dengan Fil-C menghabiskan 1–4 kali lebih banyak siklus dibanding clang

Instalasi dan build Fil-C

  • Setelah memasang paket yang diperlukan dengan hak root, proses build dijalankan oleh pengguna nonprivileged filc
  • Source Fil-C mencakup glibc serta berbagai library dan aplikasi tingkat tinggi
  • Perintah build: time ./build_all_fast_glibc.sh
    • musl juga bisa dipilih, tetapi ada ketidakcocokan dengan beberapa paket (attr, elfutils, sed, vim, dll.)
  • Saat terjadi kekurangan memori selama build, masalah diatasi dengan memperluas swap menjadi 36GB
    • Penggunaan puncak sekitar 19GB swap dan 12GB RAM
    • Pada server besar (128 core, RAM 512GB), build Fil-C memakan waktu 8 menit dan build musl 6 menit

Build library dan aplikasi tambahan

  • Fil-C menyertakan build_all_slow.sh untuk membangun berbagai library dan aplikasi
  • Ditulis skrip build-parallel-20251023.py yang memparalelkan proses ini
    • Build tetap dilanjutkan sampai selesai tanpa berhenti saat terjadi error
    • Waktu dapat dipersingkat melalui build paralel
  • Pada sistem phoenix, 60 dari 61 target berhasil (waktu nyata 101 menit)
  • Hanya libcap yang gagal dibangun (error pemuatan liblto_plugin.so)
  • util-linux memerlukan perbaikan terkait syscall
  • Paket utama lainnya (attr, bash, curl, openssl, vim, dll.) berhasil dibangun tanpa masalah

Library dan aplikasi tambahan yang diuji

  • boost 1.89.0: sebagian besar berjalan normal, tetapi beberapa perbaikan terkait vfork diperlukan
  • cdb-20251021: berjalan normal, dengan perbedaan pada pesan error saat uji OOM buatan
  • libcpucycles, libgc (pengganti gshim), libntruprime, lpeg, luv dan lainnya berhasil dibangun dan diuji
  • Aplikasi CLI utama seperti mutt, tig, w3m juga dipastikan berjalan normal

Integrasi Debian (Filian)

  • Memanfaatkan struktur multi-arsitektur Debian dengan menambahkan ABI khusus Fil-C (amd64fil0)
    • Contoh: versi yang dikompilasi dengan Fil-C dapat dipasang lewat apt install bash:amd64fil0
  • Fil-C menggunakan direktori sendiri alih-alih /usr/include, sehingga muncul masalah ketidakcocokan jalur file header
    • Skrip filian-install-compiler menyesuaikan hal ini ke jalur standar Debian
  • Ditambahkan pengenalan arsitektur Fil-C ke alat build Debian (dpdk-buildpackage, sbuild, dll.)
    • Dengan modifikasi pada /usr/share/dpkg/cputable, config.sub, dan lainnya
  • Fil-C dan library standarnya ditempatkan di jalur /usr/libexec/fil/amd64
    • Perintah filcc dan fil++ dapat digunakan secara global di sistem

Contoh build paket Debian

  • Skrip helper fillet menyesuaikan simbol dan jalur instalasi paket source Debian
  • Hasil build paket tinycdb dengan Fil-C menghasilkan 3 paket .deb khusus amd64fil0
    • Setelah instalasi, perintah nm dan ldd digunakan untuk memeriksa simbol Fil-C (pizlonated_) dan jalur library
    • Saat dijalankan, dipastikan fitur perlindungan runtime Fil-C aktif (menampilkan pesan pemblokiran pelanggaran “memory safety”)

Build paket Debian tambahan

  • libc-dev: dibuat paket palsu untuk menyelesaikan dependensi
  • ncurses: dapat dibangun dan dipasang dengan Fil-C
  • libmd: perlu dikompilasi ulang karena ketidakcocokan versi antararsitektur
  • readline: memerlukan symbolic link untuk jalur header
  • lua5.4: berjalan normal setelah dependensi readline diselesaikan

Kesimpulan

  • Fil-C adalah upaya untuk meraih peningkatan keamanan memori sekaligus kompatibilitas dengan ekosistem C/C++ yang ada
  • Kemungkinan build dan integrasi paket di lingkungan Debian telah dibuktikan
  • Meski beberapa skrip build dan penyesuaian jalur header masih diperlukan, kompatibilitas dengan sebagian besar paket open source utama telah tercapai

Belum ada komentar.

Belum ada komentar.