9 คะแนน โดย skuldnorniern 2025-10-13 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

บล็อกโพสต์ Releasing Lamina

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 ความคิดเห็น

 
cgl00 2025-10-13

สุดยอดมากครับ สุดๆ

 
skuldnorniern 2025-10-14

ยังเป็นโปรเจ็กต์ที่ยังขาดอีกมาก
แต่ขอบคุณที่มองมันในแง่ดีนะครับ!
ผมหวังว่าจะได้พัฒนาโปรเจ็กต์นี้ต่อไปเรื่อย ๆ เพื่อให้มันกลายเป็นแหล่งข้อมูลที่ดีสำหรับคนที่กำลังศึกษาเรื่องคอมไพเลอร์