BitTorrent-klient Overføring bytter fra C til C++

Libtransmission-biblioteket, som er grunnlaget for Transmission BitTorrent-klienten, er oversatt til C++. Overføring har fortsatt bindinger med implementering av brukergrensesnitt (GTK-grensesnitt, daemon, CLI), skrevet på C-språket, men montering krever nå en C++-kompilator. Tidligere var bare det Qt-baserte grensesnittet skrevet i C++ (klienten for macOS var i Objective-C, nettgrensesnittet var i JavaScript, og alt annet var i C).

Porteringen ble utført av Charles Kerr, prosjektleder og forfatter av Transmission-grensesnittet basert på Qt. Hovedårsaken til å bytte hele prosjektet til C++ er følelsen av at når man gjør endringer i libtransmission må man hele tiden finne opp hjulet på nytt, selv om det finnes ferdige løsninger for lignende problemer i standard C++-biblioteket (det var for eksempel nødvendig å lage dine egne funksjoner tr_quickfindFirstK() og tr_ptrArray() i nærvær av std: :partial_sort() og std::vector()), i tillegg til å gi C++ mer avanserte typekontrollfasiliteter.

Det bemerkes at utviklerne ikke setter seg som mål å umiddelbart omskrive hele libtransmissionen i C++, men har til hensikt å implementere overgangen til C++ gradvis, og starter med overgangen til å kompilere prosjektet ved hjelp av C++-kompilatoren. I sin nåværende form kan C-kompilatoren ikke lenger brukes til montering, siden noen C++-spesifikke konstruksjoner er lagt til koden, for eksempel «auto»-nøkkelordet og typekonverteringer ved bruk av «static_cast»-operatoren. Støtte for eldre C-funksjoner er planlagt å forbli for kompatibilitet, men utviklere oppfordres nå til å bruke std::sort() i stedet for qsort() og std::vector i stedet for tr_ptrArray. constexpr i stedet for tr_strdup() og std::vector i stedet for tr_ptrArray.

Kilde: opennet.ru

Legg til en kommentar