انتقال مشتری BitTorrent از C به C++ تغییر می کند

کتابخانه libtransmission که اساس کلاینت Transmission BitTorrent است، به C++ ترجمه شده است. انتقال هنوز با اجرای رابط های کاربری (رابط GTK، دیمون، CLI) که به زبان C نوشته شده اند، پیوند دارد، اما اسمبلی اکنون به یک کامپایلر C++ نیاز دارد. قبلاً فقط رابط مبتنی بر Qt به زبان C ++ نوشته می شد (کلاینت برای macOS در Objective-C، رابط وب در جاوا اسکریپت و بقیه موارد به زبان C بود).

انتقال توسط چارلز کر، رهبر پروژه و نویسنده رابط انتقال مبتنی بر Qt انجام شد. دلیل اصلی تغییر کل پروژه به C++ این احساس است که هنگام ایجاد تغییرات در libtransmission، شما باید دائماً چرخ را دوباره اختراع کنید، حتی اگر راه حل های آماده ای برای مشکلات مشابه در کتابخانه استاندارد C++ وجود داشته باشد (به عنوان مثال، لازم بود. برای ایجاد توابع tr_quickfindFirstK() و tr_ptrArray() در حضور std: :partial_sort() و std::vector())، و همچنین ارائه C++ با امکانات پیشرفته تری برای بررسی نوع.

خاطرنشان می‌شود که توسعه‌دهندگان هدف خود را بازنویسی فوری کل libtransmission در 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

اضافه کردن نظر