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

Додати коментар або відгук