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». Поддержку старых Си-функций планируется сохранить для обеспечения совместимости, но разработчикам теперь рекомендовано использовать constexpr вместо tr_strdup () и std: vector вместо tr_ptrArray.



Источник: http://www.opennet.ru/opennews/art.shtml? num=55792

©  OpenNet