BitTorrent mijozi uzatish C dan C ++ ga o'tadi

Transmission BitTorrent mijozining asosi bo'lgan libtransmission kutubxonasi C++ tiliga tarjima qilingan. Transmissiya hali ham C tilida yozilgan foydalanuvchi interfeyslarini (GTK interfeysi, daemon, CLI) amalga oshirish bilan bog'langan, ammo endi montaj qilish uchun C++ kompilyatori kerak. Ilgari faqat Qt-ga asoslangan interfeys C++ da yozilgan (macOS uchun mijoz Objective-C da, veb-interfeys JavaScript-da, qolganlari esa C da edi).

Portlashni loyiha rahbari va Qt asosidagi Transmission interfeysi muallifi Charlz Kerr amalga oshirdi. Butun loyihani C++ ga o'tkazishning asosiy sababi shundaki, libtransmissiyaga o'zgartirishlar kiritishda siz doimiy ravishda g'ildirakni qayta ixtiro qilishingiz kerak, garchi standart C++ kutubxonasida shunga o'xshash muammolar uchun tayyor echimlar mavjud bo'lsa ham (masalan, bu zarur edi std: :partial_sort() va std::vector() ishtirokida tr_quickfindFirstK() va tr_ptrArray() o‘z funksiyalaringizni yaratish, shuningdek C++ ni yanada rivojlangan turdagi tekshirish vositalari bilan ta’minlash.

Ta'kidlanishicha, ishlab chiquvchilar o'z oldilariga C++ da butun libtransmissiyani darhol qayta yozishni maqsad qilib qo'ymaydilar, balki C++ kompilyatori yordamida loyihani kompilyatsiya qilishga o'tishdan boshlab, C++ ga o'tishni bosqichma-bosqich amalga oshirish niyatida. Hozirgi ko'rinishida C kompilyatoridan endi yig'ish uchun ishlatib bo'lmaydi, chunki kodga ba'zi C++-ga xos konstruktsiyalar qo'shilgan, masalan, "auto" kalit so'zi va "static_cast" operatori yordamida turdagi konvertatsiyalar. Muvofiqlik uchun eski C funktsiyalarini qo'llab-quvvatlash rejalashtirilgan, ammo ishlab chiquvchilar endi qsort() o'rniga std::sort() va tr_ptrArray o'rniga std::vector dan foydalanishlari tavsiya etiladi. tr_strdup() o'rniga constexpr va tr_ptrArray o'rniga std::vector.

Manba: opennet.ru

a Izoh qo'shish