Библиотека 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:artial_sort() и std::vector()), а также предоставление в С++ более продвинутых средств для проверки типов.
Отмечается, что разработчики не ставят перед собой цель сразу переписать весь libtransmission на C++, а намерены реализовать переход на С++ постепенно, начав с перехода к компиляции проекта с использованием компилятора С++. В текущем виде Си-компилятор теперь не может применяться для сборки, так как в код добавлены некоторые специфичные С++ конструкции, такие как ключевое слово "auto" и преобразования типов при помощи оператора "static_cast". Поддержку старых Си-функций планируется сохранить для обеспечения совместимости, но разработчикам теперь рекомендовано использовать std::sort() вместо qsort() и std::vector вместо tr_ptrArray. constexpr вместо tr_strdup() и std::vector вместо tr_ptrArray.
Портирование выполнил Чарльз Керр (Charles Kerr), лидер проекта и автор варианта интерфейса Transmission на базе Qt. Основной причиной перехода всего проекта на C++ называется ощущение того, что при внесении изменений в libtransmission постоянно приходится изобретать велосипед, при наличии готовых решений подобных задач в стандартной библиотеке C++ (например, потребовалось создание собственных функций tr_quickfindFirstK() и tr_ptrArray () при наличии std:artial_sort() и std::vector()), а также предоставление в С++ более продвинутых средств для проверки типов.
Отмечается, что разработчики не ставят перед собой цель сразу переписать весь libtransmission на C++, а намерены реализовать переход на С++ постепенно, начав с перехода к компиляции проекта с использованием компилятора С++. В текущем виде Си-компилятор теперь не может применяться для сборки, так как в код добавлены некоторые специфичные С++ конструкции, такие как ключевое слово "auto" и преобразования типов при помощи оператора "static_cast". Поддержку старых Си-функций планируется сохранить для обеспечения совместимости, но разработчикам теперь рекомендовано использовать std::sort() вместо qsort() и std::vector вместо tr_ptrArray. constexpr вместо tr_strdup() и std::vector вместо tr_ptrArray.
BitTorrent-клиент Transmission переходит с Си на Си++
www.opennet.ru