BitTorrent кардары Transmission Cтен C++ке которулат

Transmission BitTorrent кардарынын негизи болгон libtransmission китепканасы C++ тилине которулган. Трансмиссия дагы эле С тилинде жазылган колдонуучу интерфейстерин (GTK интерфейси, демон, CLI) ишке ашыруу менен байланыштырууга ээ, бирок азыр монтаждоо үчүн C++ компилятору талап кылынат. Буга чейин Qt негизиндеги интерфейс гана C++ тилинде жазылган (macOS үчүн кардар Objective-Cде, веб-интерфейс JavaScriptте, калганынын баары C тилинде болгон).

Портингди долбоордун жетекчиси жана Qt негизиндеги Transmission интерфейсинин автору Чарльз Керр ишке ашырган. Бүтүндөй долбоорду C++ке которуунун негизги себеби, libtransmissionка өзгөртүүлөрдү киргизүүдө сиз дайыма дөңгөлөктү кайра ойлоп табууга туура келет деген сезим, стандарттуу C++ китепканасында окшош көйгөйлөр үчүн даяр чечимдер бар (мисалы, бул зарыл болгон) std: :partial_sort() жана std::vector() катышуусунда өзүңүздүн tr_quickfindFirstK() жана tr_ptrArray() функцияларын түзүү үчүн, ошондой эле C++ өнүккөн типти текшерүү каражаттары менен камсыз кылуу.

Иштеп чыгуучулар C++ тилинде бүтүндөй libtransmission дароо кайра жазуу максатын койбой, C++ компиляторунун жардамы менен долбоорду компиляциялоого өтүүдөн баштап, акырындык менен C++ тилине өтүүнү ишке ашырууну көздөп жатышканы белгиленген. Учурдагы формасында C компиляторун мындан ары монтаждоо үчүн колдонууга болбойт, анткени кодго C++ спецификалык конструкциялары кошулган, мисалы, “auto” ачкыч сөзү жана “static_cast” операторунун жардамы менен түрү конверсиялары. Эски С функцияларын колдоо шайкештик үчүн кала берет, бирок иштеп чыгуучулар эми qsort() ордуна std::sort() жана tr_ptrArray ордуна std::vector колдонууга чакырылат. tr_strdup() ордуна constexpr жана tr_ptrArray ордуна std::вектор.

Source: opennet.ru

Комментарий кошуу