नमस्ते, मेरे एक परिचित ने हाल ही में एक compiler backend विकसित किया है, जो काफ़ी दिलचस्प लगा, इसलिए साझा कर रहा हूँ.

  1. प्रोजेक्ट परिचय

Lamina एक multi-architecture compiler backend है, जो LLVM जैसी भारी dependency के बिना SSA-आधारित IR से सीधे native code जनरेट करता है. यह x86_64, AArch64, RISC-V, WebAssembly को एक ही IR से सपोर्ट करता है.

उन्होंने कहा कि जब भी कोई simple DSL या experimental language बनानी होती थी, LLVM build करना और कई GB की dependencies मैनेज करना बहुत भारी लगता था. इसी सोच से शुरुआत हुई कि "बस IR डालो और assembly निकल आए" जैसा कोई हल्का टूल बनाया जाए.

  1. मुख्य विशेषताएँ

▸ external dependency शून्य
LLVM या Cranelift के बिना IR से सीधे machine code में बदलता है.
build time भी कम है और deployment भी सरल है.

▸ SSA-आधारित IR
Static Single Assignment रूप होने की वजह से optimization pipeline को साफ़-सुथरे तरीके से व्यवस्थित किया जा सकता है.

▸ explicit memory model
stack/heap allocation को IR स्तर पर स्पष्ट रूप से अलग करता है, जिससे memory analysis आसान हो जाता है.

▸ multi-architecture
एक ही IR से कई targets का सपोर्ट:

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

▸ IRBuilder API
यह functional style में IR बनाने के लिए API प्रदान करता है.
कहा गया है कि इससे control flow और memory operations को type-safe तरीके से व्यक्त किया जा सकता है.

  1. वर्तमान स्थिति

basic arithmetic operations, condition/branch/loop जैसे control flow, non-recursive function calls, और simple optimization काम करते हैं.

यह production-ready नहीं है, लेकिन toy language या DSL backend के रूप में प्रयोग करने के लिए काफ़ी पर्याप्त बताया गया है.

  1. उपयोग workflow

इसे लगभग इस तरह इस्तेमाल किया जाता है:

  1. source language को parse करके AST बनाएं
  2. IRBuilder से AST को Lamina IR में बदलें
  3. Lamina optimization करके target के हिसाब से native code जनरेट करे

अगर IR generation वाला हिस्सा सही से लिख दिया जाए, तो बाकी Lamina खुद संभाल लेता है.

  1. अंत में.

व्यक्तिगत रूप से, "compiler backend बनाना" मुझे बहुत दूर की चीज़ लगती थी, लेकिन अपने परिचित को सच में इसे बनाते देखना काफ़ी रोचक लगा.

बेशक यह LLVM जितना mature या optimized नहीं है, लेकिन हल्के प्रयोगों या educational use के लिए यह काफ़ी अच्छा लगता है.

मैंने भी वास्तव में lamina के ज़रिए Eom Jun-sik language compiler विकसित करके देखा है.

जिन्हें रुचि हो, वे एक बार इसे ज़रूर देख सकते हैं!

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.