Prijenos BitTorrent klijenta prebacuje se s C na C++

Biblioteka libtransmission, koja je osnova Transmission BitTorrent klijenta, prevedena je na C++. Prijenos i dalje ima povezivanja s implementacijom korisničkih sučelja (GTK sučelje, demon, CLI), napisanih u jeziku C, ali asemblera sada zahtijeva C++ kompajler. Prethodno je samo sučelje temeljeno na Qt-u bilo napisano u C++ (klijent za macOS bio je u Objective-C, web sučelje u JavaScriptu, a sve ostalo u C-u).

Prijenos je proveo Charles Kerr, voditelj projekta i autor Transmission sučelja temeljenog na Qt-u. Glavni razlog prebacivanja cijelog projekta na C++ je osjećaj da kada radite promjene u libtransmissionu morate stalno iznova izmišljati kotač, iako postoje gotova rješenja za slične probleme u standardnoj C++ biblioteci (npr. bilo je potrebno za stvaranje vlastitih funkcija tr_quickfindFirstK() i tr_ptrArray() u prisutnosti std: :partial_sort() i std::vector()), kao i pružanje C++-u s naprednijim mogućnostima provjere tipa.

Napominje se da programeri sebi ne postavljaju cilj odmah prepisati cijeli libtransmission u C++, već namjeravaju postupno implementirati prijelaz na C++, počevši od prijelaza na kompajliranje projekta pomoću C++ prevoditelja. U svom trenutnom obliku, C prevodilac se više ne može koristiti za asembler, budući da su kodu dodane neke konstrukcije specifične za C++, kao što je ključna riječ "auto" i pretvorbe tipa pomoću operatora "static_cast". Planirano je da podrška za starije C funkcije ostane radi kompatibilnosti, ali programeri se sada potiču da koriste std::sort() umjesto qsort() i std::vector umjesto tr_ptrArray. constexpr umjesto tr_strdup() i std::vector umjesto tr_ptrArray.

Izvor: opennet.ru

Dodajte komentar