منصوبے کے بارے میں
V ایک جامد طور پر ٹائپ شدہ، کمپائل شدہ پروگرامنگ زبان ہے جو قابلِ برقرار رکھنے والے سافٹ ویئر بنانے کے لیے ڈیزائن کی گئی ہے۔ اس کے بیان کردہ اہداف سادگی، تیز کمپائلیشن، C کے مقابلے کی کارکردگی، اور حفاظت ہیں۔ کمپائلر خود V میں لکھا گیا ہے اور عام ہارڈویئر پر ایک سیکنڈ سے بھی کم عرصے میں بوٹسٹریپ کر سکتا ہے۔
پروجیکٹ کے بیان کردہ اہم خصوصیات:
- سادگی: زبان کا مقصد یہ ہے کہ اسے مختصر وقت میں سیکھا جا سکے۔
- تیز کمپائلیشن: README میں ایک مخصوص ٹیسٹ مشین پر Clang بیک اینڈ کے ساتھ تقریباً 110k لائنیں/سیکنڈ اور نیٹیو اور tcc بیک اینڈز کے ساتھ تقریباً 500k لائنیں/سیکنڈ کا حوالہ دیا گیا ہے۔
- خود میزبان: V خود کو تیزی سے کمپائل کرتا ہے، اور مرکزی بیک اینڈ انسانی-readable C تیار کرتا ہے۔
- حفاظتی خصوصیات: کوئی null نہیں، کوئی گلوبلز نہیں، ڈیفالٹ طور پر ناقابلِ تبدیلی، اور غیر متعین رویے کو ختم کرنے کی کوشش۔
- میموری مینجمنٹ کے اختیارات: ڈیفالٹ طور پر گاربیج کولیکشن، نیز مینوئل (-gc none)، ایرینا ایلوکیشن (-prealloc)، اور آٹو فری (-autofree) موڈز۔
- C-to-V ترجمہ، جس کا مظاہرہ DOOM ترجمہ ڈیمو کے ساتھ کیا گیا ہے۔
- ہاٹ کوڈ ری لوڈنگ۔
- بلٹ ان ORM اور ایک بلٹ ان ویب فریم ورک (veb)۔
- C اور JavaScript بیک اینڈز، نیز ایک REPL۔
- کراس پلیٹ فارم UI لائبریری اور ایک بلٹ ان گرافکس لائبریری۔
- آسان کراس کمپائلیشن، بشمول Alpine/musl ڈوکر امیجز کے ذریعے اسٹیٹک بائنریز۔
انسٹالیشن بنیادی طور پر سورس سے ہوتی ہے: ریپوزٹری کلون کریں اور make چلائیں (یا ونڈوز پر makev.bat، BSD/Solaris پر gmake)۔ جب کوئی مطابقت رکھنے والا ورژن موجود ہوتا ہے تو بلڈ ایک بنڈل ٹنی سی کمپائلر ڈاؤن لوڈ کرتا ہے۔ ڈوکر اور الپائن ڈوکر فائلیں بھی فراہم کی جاتی ہیں۔ v up کمپائلر کو اپ ڈیٹ کرتا ہے، اور v symlink اسے PATH میں شامل کرتا ہے۔
ایٹم، CodeLite، Emacs، JetBrains، Sublime Text، Vim/Neovim، VS Code اور Zed کے لیے ایڈیٹر اور IDE سپورٹ دستیاب ہے، جس میں لینگویج سرور کی صلاحیتیں v-analyzer فراہم کرتا ہے۔
مثالوں میں ہیلو ورلڈ، ورڈ کاؤنٹر، نیوز فیچر، Tetris اور 2048 شامل ہیں۔ sokol یا gg ماڈیولز استعمال کرنے والی GUI اور گیم کی مثالوں کے لیے اضافی سسٹم ڈیولپمنٹ لائبریریوں کی ضرورت ہوتی ہے۔ نیٹ ورکنگ ماڈیولز (net.http, net.websocket) اور v install بنڈل Mbed-TLS یا سسٹم OpenSSL کو -d use_openssl کے ذریعے استعمال کر سکتے ہیں۔ sync ماڈیول libatomic پر انحصار کرتا ہے۔
README نوٹ کرتا ہے کہ زبان pre-1.0 ہے اور اب بھی تبدیل ہو سکتی ہے، نحوی تبدیلیاں زیادہ تر vfmt کے ذریعے سنبھالی جاتی ہیں۔ 1.0 کے بعد، پروجیکٹ Go کی طرح فیچر فریز کا منصوبہ رکھتا ہے، صرف بگ فکسز اور کارکردگی میں بہتری کے ساتھ۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.