BitTorrenti klient Edastus lülitub C-lt C++-le

Transmission BitTorrenti kliendi aluseks olev libtransmission teek on tõlgitud C++ keelde. Edastuses on endiselt sidemeid C-keeles kirjutatud kasutajaliideste (GTK liides, deemon, CLI) juurutamisega, kuid kokkupanekuks on nüüd vaja C++ kompilaatorit. Varem oli ainult Qt-põhine liides kirjutatud C++ keeles (macOS-i klient oli Objective-C-s, veebiliides JavaScriptis ja kõik muu oli C-s).

Teisaldamise viis läbi projekti juht ja Qt-l põhineva ülekandeliidese autor Charles Kerr. Peamine põhjus kogu projekti C++ peale üleviimisel on tunne, et libtransmissioni muutmisel tuleb pidevalt ratast uuesti leiutada, kuigi standardses C++ teegis on sarnastele probleemidele valmis lahendused (näiteks oli vaja et luua oma funktsioone tr_quickfindFirstK() ja tr_ptrArray() std: :partial_sort() ja std::vector() juuresolekul, samuti pakkuda C++-le täiustatud tüübikontrollivõimalusi.

Märgitakse, et arendajad ei sea endale eesmärgiks kogu libedastust kohe C++ keeles ümber kirjutada, vaid kavatsevad C++-le üleminekut ellu viia järk-järgult, alustades üleminekust projekti koostamisele C++ kompilaatori abil. Praegusel kujul ei saa C-kompilaatorit enam monteerimiseks kasutada, kuna koodile on lisatud mõned C++-spetsiifilised konstruktsioonid, näiteks märksõna "auto" ja tüübiteisendused operaatori "static_cast" abil. Ühilduvuse huvides on plaanis säilitada vanemate C-funktsioonide tugi, kuid nüüd julgustatakse arendajaid kasutama qsort() asemel std::sort() ja tr_ptrArray asemel std::vector. constexpr tr_strdup() asemel ja std::vector tr_ptrArray asemel.

Allikas: opennet.ru

Lisa kommentaar