BitTorrent kliënt Transmissie beweeg van C na C++

Die libtransmission-biblioteek, wat die basis van die Transmission BitTorrent-kliënt is, is in C++ vertaal. Transmissie het steeds bindings met die implementering van gebruikerskoppelvlakke (GTK-koppelvlak, daemon, CLI), geskryf in die C-taal, maar samestelling vereis nou 'n C++ samesteller. Voorheen is slegs die Qt-gebaseerde koppelvlak in C++ geskryf (die kliënt vir macOS was in Objective-C, die webkoppelvlak was in JavaScript, en al die ander was in C).

Die oordrag is uitgevoer deur Charles Kerr, die projekleier en skrywer van die Transmission-koppelvlak gebaseer op Qt. Die hoofrede vir die oorskakeling van die hele projek na C++ is die gevoel dat wanneer jy veranderinge aan libtransmissie maak, jy voortdurend die wiel moet herontdek, al is daar klaargemaakte oplossings vir soortgelyke probleme in die standaard C++-biblioteek (dit was byvoorbeeld nodig om jou eie funksies tr_quickfindFirstK() en tr_ptrArray() te skep in die teenwoordigheid van std: :partial_sort() en std::vector()), asook om C++ te voorsien van meer gevorderde tipe kontrolefasiliteite.

Daar word kennis geneem dat die ontwikkelaars nie vir hulself die doelwit stel om die hele libtransmissie onmiddellik in C++ te herskryf nie, maar van voorneme is om die oorgang na C++ geleidelik te implementeer, begin met die oorgang na die samestelling van die projek deur die C++ samesteller te gebruik. In sy huidige vorm kan die C-samesteller nie meer vir samestelling gebruik word nie, aangesien sommige C++-spesifieke konstrukte by die kode gevoeg is, soos die "outo"-sleutelwoord en tipe-omskakelings met die "static_cast"-operateur. Ondersteuning vir ouer C-funksies word beplan om te bly vir versoenbaarheid, maar ontwikkelaars word nou aangemoedig om std::sort() in plaas van qsort() en std::vector in plaas van tr_ptrArray te gebruik. constexpr in plaas van tr_strdup() en std::vector in plaas van tr_ptrArray.

Bron: opennet.ru

Voeg 'n opmerking