BitTorrent-client Transmissie schakelt over van C naar C++

De libtransmission-bibliotheek, die de basis vormt van de Transmission BitTorrent-client, is vertaald naar C++. Transmissie heeft nog steeds bindingen met de implementatie van gebruikersinterfaces (GTK-interface, daemon, CLI), geschreven in de C-taal, maar voor assemblage is nu een C++-compiler vereist. Voorheen werd alleen de op Qt gebaseerde interface geschreven in C++ (de client voor macOS was in Objective-C, de webinterface was in JavaScript en al het andere was in C).

De portering werd uitgevoerd door Charles Kerr, de projectleider en auteur van de transmissie-interface op basis van Qt. De belangrijkste reden om het hele project over te zetten naar C++ is het gevoel dat je bij het aanbrengen van wijzigingen in libtransmission voortdurend het wiel opnieuw moet uitvinden, ook al zijn er kant-en-klare oplossingen voor vergelijkbare problemen in de standaard C++-bibliotheek (het was bijvoorbeeld nodig om uw eigen functies tr_quickfindFirstK() en tr_ptrArray() te creëren in de aanwezigheid van std: :partial_sort() en std::vector()), en om C++ te voorzien van meer geavanceerde typecontrolefaciliteiten.

Opgemerkt wordt dat de ontwikkelaars zichzelf niet ten doel stellen om onmiddellijk de volledige libtransmissie in C++ te herschrijven, maar van plan zijn de overgang naar C++ geleidelijk door te voeren, te beginnen met de overgang naar het compileren van het project met behulp van de C++-compiler. In zijn huidige vorm kan de C-compiler niet langer worden gebruikt voor assemblage, omdat er enkele C++-specifieke constructies aan de code zijn toegevoegd, zoals het trefwoord "auto" en typeconversies met behulp van de operator "static_cast". Het is de bedoeling dat ondersteuning voor oudere C-functies blijft bestaan ​​vanwege compatibiliteit, maar ontwikkelaars worden nu aangemoedigd om std::sort() te gebruiken in plaats van qsort() en std::vector in plaats van tr_ptrArray. constexpr in plaats van tr_strdup() en std::vector in plaats van tr_ptrArray.

Bron: opennet.ru

Voeg een reactie