BitTorrent-кліент Transmission пераходзіць з Сі на Сі++

Бібліятэка libtransmission, якая ляжыць у аснове BitTorrent-кліента Transmission, перакладзена на выкарыстанне мовы C++. У Transmission яшчэ застаюцца абвязкі з рэалізацыяй інтэрфейсаў карыстача (GTK-інтэрфейс, daemon, CLI), напісаныя на мове Сі, але для зборкі зараз патрабуецца наяўнасць кампілятара C++. Раней на З++ быў напісаны толькі інтэрфейс на базе Qt (кліент для macOS быў на Objective-C, web-інтэрфейс на JavaScript, а ўсё астатняе на Сі).

Партаванне выканаў Чарльз Кэр (Charles Kerr), лідэр праекта і аўтар варыянту інтэрфейсу Transmission на базе Qt. Асноўнай прычынай пераходу ўсяго праекта на C++ называецца адчуванне таго, што пры унясенні змяненняў у libtransmission пастаянна даводзіцца вынаходзіць ровар, пры наяўнасці гатовых рашэнняў падобных задач у стандартнай бібліятэцы C++ (напрыклад, запатрабавалася стварэнне ўласных функцый tr_quickfindFirstK() і tr_ptrArray () пры наяўнасці std: :partial_sort() і std::vector()), а таксама прадастаўленне ў З больш прасунутых сродкаў для праверкі тыпаў.

Адзначаецца, што распрацоўнікі не ставяць перад сабой мэту адразу перапісаць увесь libtransmission на C++, а маюць намер рэалізаваць пераход на З++ паступова, пачаўшы з пераходу да кампіляцыі праекту з выкарыстаннем кампілятара З++. У бягучым выглядзе Сі-кампілятар зараз не можа ўжывацца для зборкі, бо ў код дададзены некаторыя спецыфічныя З++ канструкцыі, такія як ключавое слова "auto" і пераўтварэнні тыпаў пры дапамозе аператара "static_cast". Падтрымку старых Сі-функцый плануецца захаваць для забеспячэння сумяшчальнасці, але распрацоўнікам зараз рэкамендавана выкарыстоўваць std::sort() замест qsort() і std::vector замест tr_ptrArray. constexpr замест tr_strdup() і std::vector замест tr_ptrArray.

Крыніца: opennet.ru

Дадаць каментар