Klient BitTorrent Transmisja przełącza się z C na C++

Biblioteka libtransmission, będąca podstawą klienta Transmission BitTorrent, została przetłumaczona na język C++. Transmisja nadal ma powiązania z implementacją interfejsów użytkownika (interfejs GTK, demon, CLI), napisanych w języku C, ale montaż wymaga teraz kompilatora C++. Wcześniej tylko interfejs oparty na Qt był napisany w C++ (klient dla macOS był w Objective-C, interfejs sieciowy był w JavaScript, a wszystko inne było w C).

Portingiem zajął się Charles Kerr, lider projektu i autor interfejsu Transmission opartego na Qt. Głównym powodem przejścia całego projektu na C++ jest poczucie, że wprowadzając zmiany w libtransmission trzeba ciągle wymyślać koło na nowo, mimo że w standardowej bibliotece C++ istnieją gotowe rozwiązania podobnych problemów (np. do tworzenia własnych funkcji tr_quickfindFirstK() i tr_ptrArray() w obecności std::partial_sort() i std::vector()), a także zapewnienia C++ bardziej zaawansowanych funkcji sprawdzania typów.

Należy zauważyć, że programiści nie postawili sobie za cel natychmiastowego przepisania całej libtransmisji w C++, ale zamierzają wdrażać przejście do C++ stopniowo, zaczynając od przejścia do kompilacji projektu przy użyciu kompilatora C++. W swojej obecnej formie kompilator C nie może być już używany do asemblera, ponieważ do kodu dodano pewne konstrukcje specyficzne dla C++, takie jak słowo kluczowe „auto” i konwersje typów przy użyciu operatora „static_cast”. Ze względu na kompatybilność planuje się pozostawienie obsługi starszych funkcji C, ale programistów zachęca się teraz do używania std::sort() zamiast qsort() i std::vector zamiast tr_ptrArray. constexpr zamiast tr_strdup() i std::vector zamiast tr_ptrArray.

Źródło: opennet.ru

Dodaj komentarz