Neovim 0.7.0 کی ریلیز، Vim ایڈیٹر کا جدید ورژن

Neovim 0.7.0 جاری کیا گیا ہے، Vim ایڈیٹر کا ایک فورک توسیع پذیری اور لچک بڑھانے پر مرکوز ہے۔ پروجیکٹ سات سالوں سے زیادہ عرصے سے ویم کوڈ بیس پر دوبارہ کام کر رہا ہے، جس کے نتیجے میں ایسی تبدیلیاں کی گئی ہیں جو کوڈ کی دیکھ بھال کو آسان بناتی ہیں، کئی مینٹینرز کے درمیان لیبر کو تقسیم کرنے کا ذریعہ فراہم کرتی ہیں، انٹرفیس کو بنیادی حصے سے الگ کرتی ہیں (انٹرفیس ہو سکتا ہے۔ انٹرنلز کو چھوئے بغیر تبدیل کیا گیا) اور پلگ انز کی بنیاد پر ایک نیا قابل توسیع فن تعمیر نافذ کریں۔ پروجیکٹ کی اصل پیش رفت اپاچی 2.0 لائسنس کے تحت تقسیم کی جاتی ہے، اور بنیادی حصہ Vim لائسنس کے تحت تقسیم کیا جاتا ہے۔ لینکس (appimage)، ونڈوز اور macOS کے لیے تیار کردہ اسمبلیاں تیار کی جاتی ہیں۔

Vim کے ساتھ ایک مسئلہ جس نے Neovim کی تخلیق پر اکسایا وہ اس کا پھولا ہوا، یک سنگی کوڈ بیس تھا، جو C (C300) کوڈ کی 89 ہزار سے زیادہ لائنوں پر مشتمل تھا۔ صرف چند لوگ ہی ویم کوڈبیس کی تمام باریکیوں کو سمجھتے ہیں، اور تمام تبدیلیوں کو ایک مینٹینر کے ذریعے کنٹرول کیا جاتا ہے، جس کی وجہ سے ایڈیٹر کو برقرار رکھنا اور اسے بہتر بنانا مشکل ہو جاتا ہے۔ GUI کو سپورٹ کرنے کے لیے Vim کور میں بنائے گئے کوڈ کے بجائے، Neovim ایک عالمگیر پرت استعمال کرنے کی تجویز پیش کرتا ہے جو آپ کو مختلف ٹول کٹس کا استعمال کرتے ہوئے انٹرفیس بنانے کی اجازت دیتا ہے۔

Neovim کے لیے پلگ انز کو علیحدہ عمل کے طور پر شروع کیا جاتا ہے، اس بات چیت کے لیے جس کے ساتھ MessagePack فارمیٹ استعمال کیا جاتا ہے۔ ایڈیٹر کے بنیادی اجزاء کو بلاک کیے بغیر، پلگ ان کے ساتھ تعامل متضاد طور پر کیا جاتا ہے۔ پلگ ان تک رسائی کے لیے، ایک TCP ساکٹ استعمال کیا جا سکتا ہے، یعنی پلگ ان کو بیرونی نظام پر چلایا جا سکتا ہے۔ اسی وقت، Neovim Vim کے ساتھ پیچھے کی طرف مطابقت رکھتا ہے، Vimscript کو سپورٹ کرتا رہتا ہے (Lua کو متبادل کے طور پر پیش کیا جاتا ہے) اور زیادہ تر معیاری Vim پلگ ان کے کنکشن کو سپورٹ کرتا ہے۔ Neovim کی جدید خصوصیات کو Neovim-specific APIs کا استعمال کرتے ہوئے بنائے گئے پلگ انز میں استعمال کیا جا سکتا ہے۔

فی الحال، تقریباً 130 مخصوص پلگ انز پہلے ہی تیار کیے جا چکے ہیں، مختلف پروگرامنگ زبانوں (C++، Clojure، Perl، Python، Go, Java, Lisp, Lua, Ruby) اور فریم ورکس (Qt, ncurses, Node .js, Electron, GTK)۔ یوزر انٹرفیس کے کئی آپشنز تیار کیے جا رہے ہیں۔ GUI ایڈ آنز بہت زیادہ پلگ انز کی طرح ہوتے ہیں، لیکن پلگ انز کے برعکس، وہ Neovim فنکشنز پر کال شروع کرتے ہیں، جبکہ پلگ انز کو Neovim کے اندر سے بلایا جاتا ہے۔

نیا ورژن ریموٹ کام کے لیے ابتدائی معاونت پیش کرتا ہے، جس سے آپ سرور پر نیوویم کو چلا سکتے ہیں اور ایک علیحدہ ui_client کا استعمال کرتے ہوئے کلائنٹ سسٹم سے اس سے جڑ سکتے ہیں۔ دیگر تبدیلیوں میں شامل ہیں: Python 2 کے لیے سپورٹ کو بند کر دیا گیا ہے، کی میپ میں Lua فنکشنز کے استعمال کی اجازت دے دی گئی ہے، API میں نئے کمانڈز شامل کیے گئے ہیں، Lua زبان کو پلگ ان اور کنفیگریشن مینجمنٹ کو تیار کرنے کے لیے استعمال کرنے کی صلاحیت کو نمایاں طور پر بڑھا دیا گیا ہے، کوڈ میں مسائل کی تشخیص کے لیے ٹولز کو بہتر بنایا گیا ہے، عالمی اسٹیٹس بار کے لیے سپورٹ شامل کیا گیا ہے، کارکردگی کی اصلاح کی گئی ہے۔ بلٹ ان LSP کلائنٹ (Language Server Protocol) کی صلاحیتوں کو بڑھا دیا گیا ہے، جو تجزیہ منطق اور کوڈ کی تکمیل کو بیرونی سرورز پر منتقل کرنے کے لیے استعمال کیا جا سکتا ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں