- Penulis mengambil tantangan sulit untuk menulis kompiler C hanya dengan 500 baris kode Python
- Kompiler ini menggunakan single-pass; berbeda dari kompiler dua fase pada umumnya yang lebih dulu membangun pohon sintaks lalu mengubahnya menjadi kode mesin, kompiler ini menghasilkan kode saat proses parsing berlangsung
- Kompiler menargetkan WebAssembly, keputusan yang lahir lebih dari rasa ingin tahu daripada kepraktisan. Tantangan unik WebAssembly, seperti tidak adanya register dan penggunaan mesin stack, turut disorot
- Karena batasan 500 baris, kompiler ini tidak mendukung fitur-fitur C tertentu seperti struct, enum, union, direktif preprocessor, floating-point, dan tipe 8-byte
- Kompiler ini lulus 34 dari 220 kasus uji di c-testsuite, serta berhasil mengompilasi dan menjalankan program yang menghitung deret Fibonacci
- Artikel ini memberikan analisis mendetail atas kode kompiler tersebut, menjelaskan bagaimana berbagai aspek sintaks C ditangani dan kesulitan apa yang muncul saat bekerja dengan WebAssembly
- Meski kompiler itu kompleks, artikel ini menunjukkan bahwa dengan mengorbankan kualitas kode dan melakukan semuanya dalam satu fase, hasilnya bisa sangat ringkas
- Artikel ini juga mengusulkan bahwa kompiler single-pass semacam ini dapat menjadi stage0 yang sangat baik untuk bahasa yang melakukan self-hosting karena keringkasannya
- Jumlah baris kode diukur menggunakan alat sloccount, dengan komentar, docstring, dan baris kosong dikecualikan
1 komentar
Opini Hacker News