BitTorrent kliens Az átvitel C-ről C++-ra vált

A Transmission BitTorrent kliens alapját képező libtransmission könyvtárat lefordították C++ nyelvre. Az átvitelnek továbbra is vannak kötései a C nyelven írt felhasználói felületek (GTK interfész, démon, CLI) megvalósításával, de az összeállításhoz ma már C++ fordító szükséges. Korábban csak a Qt-alapú felület íródott C++-ban (a macOS kliense Objective-C-ben, a webes felület JavaScript-ben, minden más pedig C-ben volt).

A portolást Charles Kerr, a projekt vezetője és a Qt alapú Transmission interfész szerzője végezte. A teljes projekt C++-ra való átállásának fő oka az az érzés, hogy a lib átvitel megváltoztatásakor folyamatosan újra kell találni a kereket, pedig a szabványos C++ könyvtárban vannak kész megoldások hasonló problémákra (pl. szükség volt rá saját tr_quickfindFirstK() és tr_ptrArray() függvények létrehozásához az std: :partial_sort() és std::vector() függvények jelenlétében, valamint fejlettebb típusellenőrzési lehetőségeket biztosít a C++ számára.

Megjegyzendő, hogy a fejlesztők nem azt a célt tűzték ki maguk elé, hogy a teljes libátvitelt azonnal átírják C++ nyelven, hanem fokozatosan kívánják megvalósítani a C++-ra való átállást, kezdve a projekt C++ fordító segítségével történő fordítására való átállással. A C fordító jelenlegi formájában már nem használható összeállításra, mivel néhány C++-specifikus konstrukció került a kódba, mint például az „auto” kulcsszó és a „static_cast” operátort használó típuskonverziók. A tervek szerint a régebbi C-függvények támogatása megmarad a kompatibilitás érdekében, de a fejlesztőket arra ösztönzik, hogy a qsort() helyett az std::sort()-t, a tr_ptrArray helyett pedig az std::vector-t használják. constexpr a tr_strdup() helyett és std::vector a tr_ptrArray helyett.

Forrás: opennet.ru

Hozzászólás