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

Добавить комментарий