इस प्रोजेक्ट के बारे में
Daslang (पूर्व में daScript) एक उच्च-प्रदर्शन, स्थिर रूप से टाइप की गई प्रोग्रामिंग भाषा है जो गेम और रीयल-टाइम अनुप्रयोगों के लिए बनाई गई है। इसे Gaijin Entertainment में स्क्रिप्टिंग भाषाओं और उनके ECS गेम इंजन में C++ के बीच इंटरऑप ओवरहेड को हल करने के लिए बनाया गया था, जहाँ डेटा मार्शलिंग फ्रेम बजट खा रही थी। Daslang का डेटा लेआउट C++ से मेल खाता है, इसलिए स्क्रिप्ट-से-C++ कॉल को लगभग शून्य लागत बताया गया है, जिसमें कोई मार्शलिंग, बॉक्सिंग या रूपांतरण नहीं होता।
README में बताए गए मुख्य सिद्धांतों में तेज़ पुनरावृत्ति (एक पूर्ण प्रोडक्शन गेम लगभग पाँच सेकंड में पुनः संकलित होता है, अंतर्निहित हॉट रीलोड के साथ), स्पष्टता (कोई छिपा प्रकार रूपांतरण या मौन आवंटन नहीं; एक `options log` फ़्लैग कंपाइलर आउटपुट दिखाता है), एक व्यावहारिक सुरक्षा रुख, GC दबाव कम करने के लिए मैनुअल `delete`, मूल गति के लिए C++ में AOT, और एक कंपाइल-टाइम मैक्रो सिस्टम जो पुस्तकालयों को किसी डोमेन के लिए सिंटैक्स को नया आकार देने देता है, शामिल हैं।
तीन निष्पादन स्तरों की योजना है: एक तेज़ ट्री-आधारित इंटरप्रेटर, C++ में AOT संकलन (कंसोल के लिए आवश्यक), और LLVM के माध्यम से JIT। एक हाइब्रिड मोड सेमांटिक हैशिंग का उपयोग करता है ताकि अपरिवर्तित फ़ंक्शन AOT रहें जबकि बदले हुए इंटरप्रेटर पर वापस आ जाएँ, जिससे पूर्ण पुनर्निर्माण के बिना हॉटफिक्स संभव होता है।
इंस्टॉलेशन रिकर्सिव सबमॉड्यूल अपडेट के साथ git clone के माध्यम से होता है। बिल्डिंग CMake का उपयोग Release कॉन्फ़िगरेशन और `daslang` लक्ष्य के साथ करती है। AOT उपयोग एक `.das` फ़ाइल से C++ स्टब उत्पन्न करता है, जिसे फिर होस्ट एप्लिकेशन के साथ संकलित और लिंक किया जाता है। JIT उपयोग के लिए एक निश्चित पथ (`lib/LLVM.dll`) पर LLVM 16.0.6 साझा लाइब्रेरी की आवश्यकता होती है, क्योंकि डायनामिक बाइंडिंग्स होती हैं, जिसके बाद स्क्रिप्ट `-jit` के साथ चलती हैं। CMake अनुप्रयोगों में एम्बेडिंग `find_package(DAS)` के माध्यम से की जाती है, जो `libDaScript` और `libDaScriptDyn` लक्ष्य प्रदान करता है।
एक अंतर्निहित पैकेज मैनेजर, daspkg, daslang पैकेजों को इंस्टॉल, अपडेट और बिल्ड करने का काम करता है, जिसमें शुद्ध-daslang और C++ नेटिव मॉड्यूल शामिल हैं, किसी इंडेक्स या git URL से, खोज समर्थन के साथ। VS Code एक्सटेंशन सिंटैक्स हाइलाइटिंग और लैंग्वेज-सर्वर सुविधाएँ जैसे लिंटिंग, डिबगिंग और स्निपेट प्रदान करते हैं। एक MCP सर्वर AI कोडिंग सहायकों के लिए 29 कंपाइलर-समर्थित टूल उजागर करता है, जिसमें संकलन निदान, प्रकार निरीक्षण, go-to-definition, find-references, AST डंप, AOT जनरेशन, अभिव्यक्ति मूल्यांकन, पार्स-जागरूक grep और पैकेज प्रबंधन शामिल हैं, जो stdio ट्रांसपोर्ट का उपयोग करता है और किसी अतिरिक्त बिल्ड निर्भरता की आवश्यकता नहीं होती। एक tree-sitter व्याकरण कोडबेस को पार्स करता है और सिंटैक्स हाइलाइटिंग, ast-grep के माध्यम से पार्स-जागरूक खोज, और Zed एक्सटेंशन सहित एडिटर एक्सटेंशन का समर्थन करता है।
यह परियोजना BSD 3-Clause के अंतर्गत लाइसेंस प्राप्त है, जिसमें वेंडर किए गए तृतीय-पक्ष घटक अपने स्वयं के लाइसेंस बनाए रखते हैं।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.