منصوبے کے بارے میں

Nolang ایک نئی زبان ہے جو سسٹم پروگرامنگ کے لیے ڈیزائن کی گئی ہے، اس کا بنیادی ڈیزائن مقصد میموری محفوظ ہونا ہے اور اسے گاربیج کلیکشن (GC) کی ضرورت نہیں۔ ## زبان کی خصوصیات ** میموری محفوظ**: Nolang GC پر انحصار نہیں کرتا، خودکار میموری مینجمنٹ کے ذریعے حفاظت کو یقینی بناتا ہے۔ متغیر فنکشن اسکوپ کے اختتام پر خودکار طور پر تباہ ہو جاتا ہے، لٹکنے والے ریفیرنسز سے بچنے کے لیے دستی طور پر آزاد کرنے پر پابندی ہے۔ Arrays اور slices جیسے کنٹینرز ویلی کاپی semantics استعمال کرتے ہیں، جو اصل متغیر کے لائف ٹائم سے الگ ہوتے ہیں۔ ** ہم آہنگ ریفیرنس پاس ماڈل**: تمام فنکشن پیرامیٹرز پہلے سے ہی ریفیرنس کے ذریعے پاس ہوتے ہیں، فنکشن کے اندر پیرامیٹرز میں کی گئی ترمیم براہ راست کال کرنے والے کی اصل ڈیٹا پر اثر انداز ہوتی ہے، لیکن پیرامیٹر خود کو تباہ نہیں کیا جا سکتا۔ ** اسکوپ متغیر کوریج**: ایک ہی فنکشن اسکوپ میں ایک ہی نام کے متغیر کو دوبارہ استعمال کرتے وقت، Nolang اسے نئے متغیر بنانے کے بجائے دوبارہ تفویض کرنا سمجھتا ہے۔ نوع مختلف ہونے کی صورت میں نحو کی سطح پر ہی اسے اجازت نہیں دی جاتی، جو متغیر کی چھپانے کو ختم کر دیتی ہے۔ ** زبان کی سطح پر کبھی کراش نہیں ہوتا**: خفیہ کراش پاتھز کو ختم کر دیتا ہے، کوئی پوشیدہ ابہام نہیں ہوتا۔ ** پہلے سے ہی بیچ ہی ڈھیر ہیپ تعین اور بیچ ہی ڈھیر آزاد کرنا**: پہلے سے بیچ ہی ڈھیر تعین کرنے کی سہولت فراہم کرتا ہے، اسکوپ چھوڑنے پر بیچ ہی ڈھیر آزاد کر دیتا ہے، کوئی پوشیدہ تعین کی لاگت نہیں ہوتی۔ ## ٹول چین مکمل کمانڈ لائن ٹولز (`no` کمانڈ) فراہم کرتا ہے، درج ذیل آپریشنز کی سہولت دیتا ہے: - `no init` / `no new`: ورک سپیس کو initialize کرنا اور نیا پروجیکٹ پیکج بنانا - `no fmt`: کوڈ فارمیٹ کرنا - `no build` / `no run` / `no test`: بنانا، چلانا اور ٹیسٹ کرنا - `no add` / `no remove` / `no update` / `no sync` / `no list`: ڈیپینڈنسی مینجمنٹ - `no install` / `no uninstall`: بائنری انسٹال مینجمنٹ - `no pub`: پیکج رجسٹری میں شائع کرنا - کراس کمپائل (ٹارگٹ مخصوص کرنے کے ساتھ) اور مختلف بیک اینڈ کمپائلرز (جیسے Zig) کی سہولت دیتا ہے انٹری کنونشن: `main.no` پروگرام کی انٹری ہے، `lib.no` لائبریری کی انٹری ہے، اور `tests/` ڈائریکٹری میں تمام `.no` فائلیں ٹیسٹ فائلیں ہیں۔ ## ایڈیٹر سپورٹ - VSCode پلگ ان (LSP server کے ساتھ) - `make lsp` کے ذریعے سورس کوڈ سے بنایا جا سکتا ہے ## سورس کوڈ سے بنانا `make` کمانڈ استعمال کرتے ہوئے: `make no` CLI بناتا ہے، `make lsp` زبان کا سرور بناتا ہے، `make package` VSCode ایکسٹینشن کو پیک کرتا ہے، `make playground` WebAssembly آن لائن Playground بناتا ہے۔ ## متعلقہ پروجیکٹس - notools: Nolang کے استعمال سے بنایا گیا Unix کمانڈ لائن ٹولز سیٹ (cat، ls، grep، wc وغیرہ)، جو زبان کے سسٹم پروگرامنگ شعبے میں عملی استعمال کو دکھاتا ہے۔ پروجیکٹ Apache-2.0 لائسنس کے تحت ہے، سرکاری دستاویزات کا پتہ: https://lizongying.github.io/nolang/