Seorang pembangun solo telah mengeluarkan Kefir , sebuah pengkompil C17/C23 bebas yang menunjukkan keupayaan teknikal yang mengagumkan tetapi menghadapi halangan prestasi yang ketara. Projek ini mewakili pencapaian yang jarang berlaku dalam pembangunan pengkompil, di mana seseorang telah membina rantaian alat yang lengkap dari awal tanpa rangka kerja luaran atau sokongan institusi.
Spesifikasi Pengkompil Kefir:
- Sokongan Piawaian: C17/C23 dengan sambungan GNU C
- Platform Sasaran: Linux (glibc & musl), FreeBSD, OpenBSD, NetBSD
- Seni Bina: x86_64 dengan System-V ABI
- Saiz Kod: 144k baris (260k termasuk ujian)
- Lesen: GNU GPLv3 untuk pengkompil, BSD-3 untuk runtime
- Sokongan Nyahpepijat: Maklumat nyahpepijat DWARF-5
- Ciri Pengoptimuman: IR berasaskan SSA, mem2reg, pelipatan pemalar, penyingkiran kod mati, sebaris fungsi
Pencapaian Teknikal Bertemu Pemeriksaan Realiti
Pengkompil ini melaksanakan piawaian C moden dengan ciri-ciri seperti pengoptimuman berasaskan SSA , sokongan nyahpepijat DWARF-5 , dan penjanaan kod bebas kedudukan. Ia berjaya mengkompil projek sumber terbuka utama termasuk GNU coreutils , Git , Nginx , dan PostgreSQL . Walau bagaimanapun, pembangun secara terbuka mengakui isu kelajuan kompilasi yang serius yang menjadikannya tidak praktikal untuk banyak kegunaan dunia sebenar.
Masalah prestasi berpunca daripada keputusan seni bina yang dibuat semasa pembangunan. Pengkompil mengekalkan perwakilan perantaraan berasaskan tindanan warisan yang diterjemahkan kepada bentuk SSA , mewujudkan overhed yang tidak perlu. Selain itu, pangkalan kod mengandungi algoritma yang tidak dioptimumkan dan abstraksi yang terlalu direka bentuk yang mengutamakan halaju pembangunan berbanding kecekapan masa jalan.
SSA (Static Single Assignment) adalah bentuk perwakilan perantaraan yang digunakan dalam pengkompil di mana setiap pembolehubah diberikan tepat sekali, menjadikan pengoptimuman lebih mudah untuk dilaksanakan.
Isu Prestasi Yang Diketahui:
- Kelajuan Kompilasi: Digambarkan sebagai "sangat teruk" oleh pembangun
- Seni Bina: Tumpukan warisan berasaskan IR yang diterjemahkan kepada SSA mewujudkan overhed
- Penggunaan Memori: Bergelut dengan tatasusunan besar (ranap pada tatasusunan 10 juta elemen)
- Penjanaan Kod: Lebih baik daripada TCC tetapi jauh lebih perlahan berbanding GCC/Clang
- Pengoptimuman: Mengandungi algoritma O(n²) dan laluan kod yang tidak dioptimumkan
Respons Komuniti dan Potensi Pasaran
Walaupun terdapat batasan prestasi, pembangun dalam komuniti melihat nilai dalam projek ini. Ada yang mencadangkan ia boleh menarik minat organisasi yang fokus kepada keselamatan yang mahukan kawalan ke atas keseluruhan rantaian bekalan perisian mereka, atau pembangun yang mencari alternatif pengkompil yang lebih boleh diramal dan difahami berbanding rantaian alat yang dominan.
Mungkin terdapat minat sebenar dalam pengkompil ini daripada orang/syarikat yang sangat menghargai kebolehramalan dan kestabilan, mahu mengawal keseluruhan rantaian bekalan perisian mereka, atau hanya mahukan pengkompil yang lebih pantas untuk binaan nyahpepijat mereka.
Projek ini juga menghadapi cabaran penggunaan praktikal. Pengguna melaporkan isu pemasangan dan masalah keserasian dengan konfigurasi sistem yang berbeza, menonjolkan kerumitan menyokong persekitaran Linux dan BSD yang pelbagai.
Projek Sumber Terbuka yang Disahkan:
- GNU coreutils dan binutils
- Pelayan web: Nginx
- Kawalan versi: Git
- Rangkaian: Curl, OpenSSL, OpenSSH, Wget
- Pangkalan data: PostgreSQL
- Bahasa pengaturcaraan: OCaml, Perl, Tcl
- Berjaya bootstrap daripada pengkompil hos pada semua platform yang disokong
Falsafah Pembangunan dan Pandangan Masa Depan
Pembangun menganggap Kefir lebih sebagai projek seni daripada alat pengeluaran, mengakui bahawa pembangunan sepenuh masa memerlukan pembiayaan khusus. Sebanyak 144,000 baris kod (tidak termasuk ujian) mewakili usaha solo bertahun-tahun, tetapi penyelenggara kekal realistik tentang batasan semasa pengkompil dan kedudukan pasaran.
Walaupun Kefir mungkin tidak mencabar pengkompil yang mantap seperti GCC atau Clang dalam prestasi, ia menunjukkan bahawa pembangunan pengkompil bebas masih mungkin. Projek ini berfungsi sebagai pencapaian teknikal dan peringatan tentang kerumitan yang besar yang terlibat dalam mencipta alat pembangunan yang sedia untuk pengeluaran.
Rujukan: Kefir: solo-developed full C17/C23 compiler with extensive validation