Lamina - คอมไพเลอร์แบ็กเอนด์ที่พัฒนาขึ้นเองโดยไม่พึ่งพาไลบรารีภายนอก
(github.com/SkuldNorniern)Lamina เป็นโปรเจ็กต์คอมไพเลอร์แบ็กเอนด์ที่รับ Intermediate Representation code (IR code) เป็นอินพุตแล้วสร้าง machine code/ไบนารีออกมา
โปรเจ็กต์นี้เริ่มต้นจากการศึกษาและโปรเจ็กต์ด้านภาษา/คอมไพเลอร์ตลอด 4~5 ปีที่ผ่านมาของผม และหวังว่าจะเป็นเอกสารอ้างอิงที่เรียบง่ายซึ่งผู้ที่สนใจคอมไพเลอร์สามารถทำความเข้าใจได้อย่างเป็นธรรมชาติ
แพลตฟอร์มที่รองรับในปัจจุบัน
- macOS (aarch64)
- Linux (x86_64)
- WebAssembly (wasm32/64)
แพลตฟอร์มที่มีแผนรองรับ
- Windows (x86_64)
- macOS (Intel)
- Linux (aarch64)
- Risc-V
สำหรับ Windows aarch64 ผู้เขียนไม่มีอุปกรณ์ จึงมีลำดับความสำคัญต่ำและยังไม่ได้รวมไว้
สถานะปัจจุบัน
ขณะนี้ยังไม่มี compiler optimization pass ดังนั้นความเร็วจึงช้ากว่า C# เล็กน้อย
ในการอัปเดตถัดไปมีแผนจะพัฒนาเลเยอร์ Machine IR และพร้อมกันนั้นก็มีแผนนำ optimization pass เข้ามาใช้
นอกจากนี้ ก่อนการออกเวอร์ชัน 0.1 ยังมีแผนจะลบและเขียนใหม่เกือบทั้งหมดในส่วน Testcode และ codegen ที่สร้างด้วย AI
ตัวอย่างคอมไพเลอร์ฟรอนต์เอนด์
Brainfuck-Lamina Repo - คอมไพเลอร์ Brainfuck แบบเรียบง่าย
ฟีเจอร์ที่มีแผนพัฒนาต่อไป
- รองรับการสร้างโค้ดสำหรับ GPU (ภายหลังจะนำไปใช้เป็นแบ็กเอนด์ของไลบรารี ML ที่พัฒนาขึ้นเอง)
- รองรับ JIT compilation
- มีชุดเครื่องมือ เช่น ดีบักเกอร์
- มี assembler และ linker ที่พัฒนาขึ้นเอง (ยังคงรองรับยูทิลิตีเดิมต่อไป)
2 ความคิดเห็น
สุดยอดมากครับ สุดๆ
ยังเป็นโปรเจ็กต์ที่ยังขาดอีกมาก
แต่ขอบคุณที่มองมันในแง่ดีนะครับ!
ผมหวังว่าจะได้พัฒนาโปรเจ็กต์นี้ต่อไปเรื่อย ๆ เพื่อให้มันกลายเป็นแหล่งข้อมูลที่ดีสำหรับคนที่กำลังศึกษาเรื่องคอมไพเลอร์