4 poin oleh miniex 2025-11-11 | Belum ada komentar. | Bagikan ke WhatsApp

Halo, baru-baru ini kenalan saya mengembangkan backend kompilator, dan menurut saya cukup menarik jadi saya bagikan.

  1. Pengenalan proyek

Lamina adalah backend kompilator multi-arsitektur yang menghasilkan kode native langsung dari IR berbasis SSA tanpa dependensi berat seperti LLVM. x86_64, AArch64, RISC-V, dan WebAssembly didukung dengan satu IR.

Katanya, setiap kali membuat DSL sederhana atau bahasa eksperimental, harus membangun LLVM dan mengelola dependensi berukuran beberapa GB terasa terlalu berat. Jadi proyek ini dimulai dari ide, "bagaimana kalau bikin sesuatu yang ringan, cukup masukkan IR lalu keluar assembly."

  1. Fitur utama

▸ Tanpa dependensi eksternal
Mengubah IR langsung menjadi machine code tanpa LLVM atau Cranelift.
Waktu build lebih singkat dan distribusinya juga sederhana.

▸ IR berbasis SSA
Karena berbentuk Static Single Assignment, penyusunan pipeline optimisasi menjadi rapi.

▸ Model memori eksplisit
Alokasi stack/heap dibedakan dengan jelas di level IR, sehingga analisis memori lebih mudah.

▸ Multi-arsitektur
Mendukung berbagai target dengan satu IR:

  • x86_64 (Linux, macOS, Windows)
  • AArch64/ARM64 (Linux, macOS, Windows)
  • RISC-V (RV32/64/128)
  • WebAssembly (32/64-bit)

▸ API IRBuilder
Menyediakan API untuk menyusun IR dalam gaya fungsional.
Katanya, alur kontrol maupun operasi memori bisa diekspresikan dengan aman secara tipe.

  1. Status saat ini

Operasi aritmetika dasar, alur kontrol seperti kondisi/cabang/loop, pemanggilan fungsi non-rekursif, dan optimisasi sederhana sudah berjalan.

Belum production-ready, tetapi katanya sudah cukup untuk bereksperimen sebagai backend untuk toy language atau DSL.

  1. Alur penggunaan

Kurang lebih digunakan seperti ini:

  1. Parsing bahasa sumber untuk membuat AST
  2. Mengubah AST menjadi Lamina IR dengan IRBuilder
  3. Lamina melakukan optimisasi dan menghasilkan kode native sesuai target

Kalau bagian pembangkitan IR ditulis dengan baik, sisanya ditangani oleh Lamina.

  1. Penutup.

Secara pribadi, saya selalu merasa bahwa "membuat backend kompilator" adalah sesuatu yang sangat jauh, tapi melihat kenalan saya benar-benar membuatnya terasa menakjubkan.

Tentu belum sematang LLVM atau setingkat itu dalam optimisasi, tetapi untuk eksperimen ringan atau penggunaan edukasi, ini terlihat cukup bagus.

Saya sendiri juga benar-benar sudah mencoba mengembangkan compiler untuk bahasa Eom Jun-sik dengan lamina.

Kalau tertarik, sepertinya layak untuk dicoba lihat!

Belum ada komentar.

Belum ada komentar.