BitTorrent کلائنٹ ٹرانسمیشن C سے C++ میں سوئچ کرتا ہے۔

libtransmission لائبریری، جو کہ ٹرانسمیشن BitTorrent کلائنٹ کی بنیاد ہے، کا ترجمہ C++ میں کیا گیا ہے۔ ٹرانسمیشن میں ابھی بھی صارف انٹرفیس (GTK انٹرفیس، ڈیمون، CLI) کے نفاذ کے ساتھ پابند ہیں، جو C زبان میں لکھے گئے ہیں، لیکن اسمبلی کو اب C++ کمپائلر کی ضرورت ہے۔ پہلے، صرف Qt پر مبنی انٹرفیس C++ میں لکھا جاتا تھا (macOS کا کلائنٹ Objective-C میں تھا، ویب انٹرفیس JavaScript میں تھا، اور باقی سب کچھ C میں تھا)۔

پورٹنگ چارلس کیر نے کی تھی، جو پروجیکٹ لیڈر اور Qt پر مبنی ٹرانسمیشن انٹرفیس کے مصنف تھے۔ پورے پروجیکٹ کو C++ میں تبدیل کرنے کی سب سے بڑی وجہ یہ احساس ہے کہ libtransmission میں تبدیلی کرتے وقت آپ کو وہیل کو مسلسل دوبارہ ایجاد کرنا پڑتا ہے، حالانکہ معیاری C++ لائبریری میں اسی طرح کے مسائل کے لیے تیار حل موجود ہیں (مثال کے طور پر، یہ ضروری تھا۔ اپنے فنکشنز tr_quickfindFirstK() اور tr_ptrArray() std: :partial_sort() اور std::vector() کی موجودگی میں تخلیق کرنے کے ساتھ ساتھ C++ کو مزید جدید قسم کی جانچ کی سہولیات فراہم کرنا۔

واضح رہے کہ ڈویلپرز خود کو فوری طور پر C++ میں مکمل libtransmission کو دوبارہ لکھنے کا ہدف متعین نہیں کرتے ہیں، لیکن C++ کمپائلر کا استعمال کرتے ہوئے پروجیکٹ کو مرتب کرنے کی منتقلی سے شروع کرتے ہوئے C++ میں منتقلی کو بتدریج نافذ کرنے کا ارادہ رکھتے ہیں۔ اس کی موجودہ شکل میں، C کمپائلر کو مزید اسمبلی کے لیے استعمال نہیں کیا جا سکتا، کیونکہ کوڈ میں کچھ C++-مخصوص کنسٹرکٹس شامل کیے گئے ہیں، جیسے کہ "auto" کلیدی لفظ اور "static_cast" آپریٹر کا استعمال کرتے ہوئے تبادلوں کی قسم۔ پرانے سی فنکشنز کے لیے سپورٹ کو مطابقت کے لیے برقرار رکھنے کا منصوبہ بنایا گیا ہے، لیکن ڈویلپرز کو اب std::sort() کی بجائے qsort() اور std::vector استعمال کرنے کی ترغیب دی جاتی ہے tr_ptrArray کی بجائے۔ tr_strdup() کی بجائے constexpr اور tr_ptrArray کی بجائے std::vector۔

ماخذ: opennet.ru

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