Ang BitTorrent client Transmission ay lumilipat mula C patungo sa C++

Ang libtransmission library, na siyang batayan ng Transmission BitTorrent client, ay naisalin sa C++. Ang transmission ay mayroon pa ring mga binding sa pagpapatupad ng mga user interface (GTK interface, daemon, CLI), na nakasulat sa wikang C, ngunit kailangan na ngayon ng assembly ng C++ compiler. Dati, ang Qt-based na interface lang ang nakasulat sa C++ (ang client para sa macOS ay nasa Objective-C, ang web interface ay nasa JavaScript, at lahat ng iba ay nasa C).

Ang porting ay isinagawa ni Charles Kerr, ang pinuno ng proyekto at may-akda ng interface ng Transmission batay sa Qt. Ang pangunahing dahilan para sa paglipat ng buong proyekto sa C++ ay ang pakiramdam na kapag gumagawa ng mga pagbabago sa libtransmission ay kailangan mong muling likhain ang gulong, kahit na may mga handa na solusyon para sa mga katulad na problema sa karaniwang C++ library (halimbawa, ito ay kinakailangan upang lumikha ng iyong sariling mga function tr_quickfindFirstK() at tr_ptrArray() sa pagkakaroon ng std: :partial_sort() at std::vector()), pati na rin ang pagbibigay ng C++ ng mas advanced na uri ng mga pasilidad sa pagsuri.

Napansin na hindi itinakda ng mga developer ang kanilang sarili ang layunin na agad na muling isulat ang buong libtransmission sa C++, ngunit nilayon na ipatupad ang paglipat sa C++ nang paunti-unti, simula sa paglipat sa pag-compile ng proyekto gamit ang C++ compiler. Sa kasalukuyang anyo nito, hindi na magagamit ang C compiler para sa pagpupulong, dahil idinagdag sa code ang ilang partikular na C++ na construct, gaya ng keyword na "auto" at mga uri ng conversion gamit ang operator na "static_cast". Ang suporta para sa mas lumang mga function ng C ay binalak na manatili para sa pagiging tugma, ngunit hinihikayat na ngayon ang mga developer na gumamit ng std::sort() sa halip na qsort() at std::vector sa halip na tr_ptrArray. constexpr sa halip na tr_strdup() at std::vector sa halip na tr_ptrArray.

Pinagmulan: opennet.ru

Magdagdag ng komento