ينتقل عميل BitTorrent Transmission من C إلى C ++

تمت ترجمة مكتبة libtransmission، التي تعد أساس عميل Transmission BitTorrent، إلى لغة C++. لا يزال الإرسال يحتوي على روابط مع تنفيذ واجهات المستخدم (واجهة GTK، البرنامج الخفي، CLI)، مكتوبة بلغة C، ولكن التجميع يتطلب الآن مترجم C++. في السابق، كانت الواجهة المستندة إلى Qt فقط مكتوبة بلغة C++ (كان عميل macOS في Objective-C، وكانت واجهة الويب في JavaScript، وكل شيء آخر كان في C).

تم تنفيذ عملية النقل بواسطة تشارلز كير، قائد المشروع ومؤلف واجهة الإرسال المستندة إلى كيو تي. السبب الرئيسي لتحويل المشروع بأكمله إلى C++ هو الشعور بأنه عند إجراء تغييرات على libtransmission، يتعين عليك باستمرار إعادة اختراع العجلة، على الرغم من وجود حلول جاهزة لمشاكل مماثلة في مكتبة C++ القياسية (على سبيل المثال، كان ذلك ضروريًا) لإنشاء وظائفك الخاصة tr_quickfindFirstK() وtr_ptrArray() في وجود std: :partial_sort() وstd::vector())، بالإضافة إلى توفير C++ مع تسهيلات أكثر تقدمًا للتحقق من النوع.

تجدر الإشارة إلى أن المطورين لم يحددوا لأنفسهم هدف إعادة كتابة كامل عملية النقل lib على الفور في C++، ولكنهم يعتزمون تنفيذ الانتقال إلى C++ تدريجيًا، بدءًا من الانتقال إلى تجميع المشروع باستخدام مترجم C++. في شكله الحالي، لم يعد من الممكن استخدام مترجم C للتجميع، حيث تمت إضافة بعض التركيبات الخاصة بـ C++ إلى التعليمات البرمجية، مثل الكلمة الأساسية "auto" وتحويلات النوع باستخدام عامل التشغيل "static_cast". من المخطط أن يظل دعم وظائف C الأقدم من أجل التوافق، ولكن يتم تشجيع المطورين الآن على استخدام std::sort() بدلاً من qsort() وstd::vector بدلاً من tr_ptrArray. constexpr بدلاً من tr_strdup() وstd::vector بدلاً من tr_ptrArray.

المصدر: opennet.ru

إضافة تعليق