منصوبے کے بارے میں
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.