BitTorrent-klient Överföring växlar från C till C++

Biblioteket libtransmission, som är basen för Transmission BitTorrent-klienten, har översatts till C++. Transmission har fortfarande bindningar med implementeringen av användargränssnitt (GTK-gränssnitt, demon, CLI), skrivna på C-språket, men montering kräver nu en C++-kompilator. Tidigare skrevs endast det Qt-baserade gränssnittet i C++ (klienten för macOS var i Objective-C, webbgränssnittet var i JavaScript och allt annat var i C).

Porteringen utfördes av Charles Kerr, projektledaren och författaren till Transmission-gränssnittet baserat på Qt. Den främsta anledningen till att byta hela projektet till C++ är känslan av att när man gör ändringar i libtransmission måste man ständigt uppfinna hjulet på nytt, även om det finns färdiga lösningar på liknande problem i standard C++-biblioteket (det var till exempel nödvändigt för att skapa dina egna funktioner tr_quickfindFirstK() och tr_ptrArray() i närvaro av std: :partial_sort() och std::vector()), samt förse C++ med mer avancerade typkontrollmöjligheter.

Det noteras att utvecklarna inte sätter sig som mål att omedelbart skriva om hela libtransmissionen i C++, utan har för avsikt att implementera övergången till C++ gradvis, med början med övergången till att kompilera projektet med hjälp av C++-kompilatorn. I sin nuvarande form kan C-kompilatorn inte längre användas för montering, eftersom vissa C++-specifika konstruktioner har lagts till i koden, såsom nyckelordet "auto" och typkonverteringar med operatorn "static_cast". Stöd för äldre C-funktioner planeras att kvarstå för kompatibilitet, men utvecklare uppmuntras nu att använda std::sort() istället för qsort() och std::vector istället för tr_ptrArray. constexpr istället för tr_strdup() och std::vector istället för tr_ptrArray.

Källa: opennet.ru

Lägg en kommentar