Клиент BitTorrent Transmission се префрла од C на C++

Библиотеката libtransmission, која е основа на клиентот Transmission 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++ со понапредни можности за проверка на типот.

Забележано е дека програмерите не си поставуваат цел веднаш да го препишат целиот libtransmission во C++, туку имаат намера постепено да го спроведат преминот кон C++, почнувајќи од преминот кон компајлирање на проектот со помош на компајлерот C++. Во неговата сегашна форма, компајлерот C повеќе не може да се користи за склопување, бидејќи некои конструкции специфични за C++ се додадени во кодот, како што е клучниот збор „автоматски“ и конверзии на типови со помош на операторот „static_cast“. Поддршката за постари C функции се планира да остане за компатибилност, но програмерите сега се охрабруваат да користат std::sort() наместо qsort() и std::vector наместо tr_ptrArray. constexpr наместо tr_strdup() и std::вектор наместо tr_ptrArray.

Извор: opennet.ru

Додадете коментар