BitTorrent-asiakas Lähetys vaihtaa C:stä C++:aan

Libtransmission kirjasto, joka on Transmission BitTorrent -asiakkaan perusta, on käännetty C++:lle. Lähetyksessä on edelleen sidoksia C-kielellä kirjoitettujen käyttöliittymien toteuttamiseen (GTK-liitäntä, daemon, CLI), mutta kokoonpano vaatii nyt C++-kääntäjän. Aikaisemmin vain Qt-pohjainen käyttöliittymä oli kirjoitettu C++:lla (macOS:n asiakas oli Objective-C:ssä, verkkokäyttöliittymä JavaScriptissä ja kaikki muu oli C:ssä).

Siirron suoritti Charles Kerr, projektin johtaja ja Qt-pohjaisen Transmission-rajapinnan kirjoittaja. Suurin syy koko projektin vaihtamiseen C++:aan on tunne, että libtransmission muutoksia tehdessä joutuu jatkuvasti keksimään pyörää uudelleen, vaikka vastaaviin ongelmiin on valmiita ratkaisuja C++-standardikirjastossa (se oli tarpeen esim. luoda omia funktioita tr_quickfindFirstK() ja tr_ptrArray() std: :partial_sort()- ja std::vector()-funktioiden kanssa sekä tarjota C++:lle kehittyneempiä tyyppitarkistustoimintoja.

On huomattava, että kehittäjät eivät aseta itselleen tavoitteeksi kirjoittaa koko lib-lähetystä välittömästi uudelleen C++:lla, vaan aikovat toteuttaa siirtymisen C++:aan asteittain alkaen siirtymisestä projektin kääntämiseen C++-kääntäjällä. Nykyisessä muodossaan C-kääntäjää ei voi enää käyttää kokoonpanoon, koska koodiin on lisätty joitain C++-spesifisiä rakenteita, kuten "auto"-avainsana ja tyyppimuunnokset "static_cast"-operaattorilla. Vanhojen C-funktioiden tuki on suunniteltu säilytettäväksi yhteensopivuuden vuoksi, mutta kehittäjiä rohkaistaan ​​nyt käyttämään std::sort()-funktiota qsort()-funktion sijaan ja std::vector-funktiota tr_ptrArray-funktion sijaan. constexpr tr_strdup() sijaan ja std::vector tr_ptrArray sijaan.

Lähde: opennet.ru

Lisää kommentti