BitTorrent-klient Transmission skifter fra C til C++

Libtransmission-biblioteket, som er grundlaget for Transmission BitTorrent-klienten, er blevet oversat til C++. Transmission har stadig bindinger med implementeringen af ​​brugergrænseflader (GTK-grænseflade, daemon, CLI), skrevet i C-sproget, men assembly kræver nu en C++-compiler. Tidligere var kun den Qt-baserede grænseflade skrevet i C++ (klienten til macOS var i Objective-C, webgrænsefladen var i JavaScript, og alt andet var i C).

Porteringen blev udført af Charles Kerr, projektlederen og forfatteren af ​​transmissionsgrænsefladen baseret på Qt. Hovedårsagen til at skifte hele projektet til C++ er følelsen af, at når man laver ændringer i libtransmission, skal man hele tiden genopfinde hjulet, selvom der er færdige løsninger til lignende problemer i standard C++-biblioteket (det var f.eks. nødvendigt at oprette dine egne funktioner tr_quickfindFirstK() og tr_ptrArray() i nærvær af std: :partial_sort() og std::vector()), samt at give C++ mere avancerede typekontrolfaciliteter.

Det bemærkes, at udviklerne ikke sætter sig som mål straks at omskrive hele libtransmissionen i C++, men har til hensigt at implementere overgangen til C++ gradvist, begyndende med overgangen til at kompilere projektet ved hjælp af C++-kompileren. I sin nuværende form kan C-kompileren ikke længere bruges til assemblering, da nogle C++-specifikke konstruktioner er blevet tilføjet til koden, såsom "auto" nøgleordet og typekonverteringer ved hjælp af "static_cast" operatoren. Understøttelse af ældre C-funktioner er planlagt til at forblive for kompatibilitet, men udviklere opfordres nu til at bruge std::sort() i stedet for qsort() og std::vector i stedet for tr_ptrArray. constexpr i stedet for tr_strdup() og std::vector i stedet for tr_ptrArray.

Kilde: opennet.ru

Tilføj en kommentar