Новая версия BitTorrent-клиента Transmission 4.0.0, перешедшего с Си на Си++

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
08-Фев-2023 12:02

После почти трёх лет разработки опубликован релиз Transmission 4.0.0, относительно лёгкого и нетребовательного к ресурсам BitTorrent-клиента, написанного на языке Cи и поддерживающего разнообразные интерфейсы пользователя: GTK, Qt, native Mac, Web-интерфейс, daemon, CLI. Код распространяется под лицензиями GPLv2 и GPLv3.
Ключевым изменением в новой ветке стал перевод кодовой базы с языка Си (C90) на Си++. Ранее на С++ был написан только интерфейс на базе Qt. Основной причиной перехода всего проекта на C++ называется желание задействовать дополнительные возможности, предоставляемые в стандартной библиотеке C++, и наличие в С++ более продвинутых средств для проверки типов. GTK-интерфейс переведён на использование gtkmm, обвязки над GTK для языка C++.
Попутно проведён значительный рефакторинг кодовой базы, позволивший сократить размер кода на 18%, улучшить охват тестами и упростить сопровождение. Модернизирован процесс взаимодействия с сообществом, реализовано более активное реагирование на сообщения об ошибках и передачу изменений через pull-запросы. Осуществлён переход на семантическое версионирование при назначении номеров версий, подразумевающее использование нотации X.Y.Z (вместо ранее используемой X.NN), в которой X меняется при внесении изменений, нарушающих обратную совместимость, Y меняется при расширении функциональности и Z при исправлении ошибок.
Другие изменения:
  • Добавлена поддержка использования торрентов в формате BitTorrent v2 и гибридных торрентов (пока только использование готовых торрентов, возможность создания торрентов на базе BitTorrent 2 появится в одном из следующих выпусков).
    В BitTorrent v2, осуществлён уход от использования алгоритма SHA-1 в пользу SHA2-256, который применяется как для контроля целостности блоков данных, так и для записей в индексах (info-dictionary), что нарушает совместимость с DHT и трекерами. Для сокращения размера torrent-файлов и проверки загруженных данных на уровне блоков индексы переведены на использование хеш-дерева Меркла. Добавлена возможность привязки отдельных хэш-деревьев к каждому файлу и выравнивания файлов по частям (без добавления добавочного заполнения после каждого файла), что позволило избавиться от дублирования данных при наличии одинаковых файлов и упростило выявления разных источников для файлов. Повышена эффективность кодирования структуры каталогов в торренте и добавлены оптимизации для обработки большого числа мелких файлов.
  • Web-интерфейс переписан с использованием более современных методов разработки на JavaScript и адаптирован для использования на мобильных устройствах. Код избавлен от применения библиотеки jQuery. В сжатом виде Web-интерфейс теперь занимает всего 68 КБ.
  • Значительно повышена эффективность работы - тестирование запуска transmission-daemon с 25 тысячами торрентов показало снижение нагрузки на CPU на 50% и уменьшение потребление памяти на 70%, по сравнению с Transmission 3.00.
  • Взаимодействие фонового процесса с GUI-фронтэндами (transmission-qt и transmission-web) переведено на RPC, работающий в табличном режиме, что позволило уменьшить размер передаваемых данных и снизить требования к пропускной способности. Для сжатия данных, передаваемых через RPC, вместо zlib задействована более оптимизированная библиотека libdeflate.
  • Пользователю предоставлена возможность выставления трекеров по умолчанию, которые могут использоваться для анонсирования всех публичных торрентов.
  • Обеспечен мгновенный запуск только что добавленных сидов с выполнением операций проверки по мере необходимости (без выполнения полной проверки перед запуском).
  • Добавлена опция для исключения при создании новых торрентов информации, которая потенциально может использоваться для косвенной идентификации пользователя (например, дата создания и User-Agent).
  • Добавлена поддержка чёрного списка для IPv6.
  • Система unit-тестирования переведена на использование Google Test. Обеспечен запуск в системе непрерывной интеграции сборок на базе Clang
    Выполнено fuzzing-тестирование базовой библиотеки. Реализован процесс проверки нового кода в статических анализаторах Sonarcloud, Coverity, LGTM и clang-tidy.

===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_transmission, #_torrent, #_bittorrent
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 08:23
Часовой пояс: UTC + 5