Разработчики libtorrent выпустили версию 2.1.0 с поддержкой WebTorrent, новым механизмом дискового ввода-вывода и переходом на C++17. Релиз опубликован 9 июля 2026 года и затрагивает создателей торрент-клиентов, серверных загрузчиков и приложений, которые используют библиотеку напрямую.

WebTorrent включён в libtorrent 2.1.0 по умолчанию
Главным изменением libtorrent 2.1.0 стала встроенная поддержка WebTorrent. Эта технология позволяет обмениваться данными через WebRTC — сетевой механизм, который обычно используют браузеры для видеосвязи, голосовых звонков и прямых соединений между пользователями.
Обычный BitTorrent-клиент связывается с другими участниками через TCP или uTP. WebTorrent использует WebRTC, поэтому браузерные и классические торрент-приложения получают возможность работать в одной сети при наличии совместимой инфраструктуры. Для разработчиков это открывает сценарии, где загрузка или раздача файлов запускается прямо на веб-странице без отдельного настольного клиента.
В libtorrent 2.1.0 WebTorrent активирован при стандартной сборке. Для него добавлена зависимость Boost.JSON, а вспомогательные компоненты поставляются в репозитории как подмодули. STUN-сервер, который помогает участникам установить прямое соединение через NAT, задаётся параметром webtorrent_stun_server. По умолчанию используется stun.l.google.com:19302.
Авторы проекта отдельно предупреждают, что WebTorrent расширяет поверхность атаки: библиотека начинает обрабатывать WebRTC, SDP-предложения и дополнительные сетевые сообщения. В сборках, где браузерные пиры не нужны, функцию можно отключить:
cmake -B build -Dwebtorrent=OFFПри сборке через Boost.Build применяется параметр webtorrent=off.
Новый pread_disk_io стал стандартным дисковым backend
libtorrent 2.1.0 по умолчанию перешёл на pread_disk_io. Этот механизм работает через обычные системные вызовы preadv и pwritev, а в Windows использует их платформенные аналоги.
Предыдущая ветка 2.0 активно применяла отображение файлов в память через mmap. Такой подход хорошо показывает себя на быстрых локальных NVMe-накопителях, где задержки минимальны и операционная система эффективно управляет страницами памяти. На жёстких дисках, сетевых каталогах и FUSE-файловых системах mmap способен создавать менее предсказуемую нагрузку.
pread_disk_io разделяет операции чтения, записи и вычисления хешей между потоками. Проверка загруженных частей выполняется отдельно от непосредственного обращения к диску. Благодаря этому готовый фрагмент можно быстрее объявить доступным другим участникам раздачи, пока операционная система завершает физическую запись данных.
Старый mmap-backend остаётся доступен. Разработчики приложений смогут выбирать его для систем с локальными NVMe-дисками и сравнивать результат на своей нагрузке. Универсального победителя здесь нет: скорость зависит от накопителя, файловой системы, размера очереди и числа одновременно активных торрентов.
Переход на C++17 потребует обновить сборочную среду
Для сборки libtorrent 2.1.0 теперь нужен компилятор с поддержкой C++17. Проекты, которые до сих пор собирали библиотеку в режиме C++14, должны обновить параметры CMake, Boost.Build и настройки непрерывной интеграции.
При использовании Boost.Build стандарт C++17 выбран по умолчанию. Его можно указать явно:
b2 cxxstd=17В новой версии библиотека активнее использует стандартные типы языка. boost::string_view заменён на std::string_view, класс entry переведён на вариантный тип стандартной библиотеки, а часть устаревшего API исключена из стандартной сборки.
Эти изменения особенно заметны авторам приложений, которые напрямую работают с C++ API libtorrent. Готовый торрент-клиент может внешне выглядеть как раньше, хотя его сборщикам придётся адаптировать код, зависимости и тесты.
API libtorrent 2.1 получил асинхронные запросы и новый интерфейс создания торрентов
Релиз добавляет асинхронные методы post_file_status() и post_file_priorities(). Они позволяют запросить состояние файлов и их приоритеты через систему уведомлений libtorrent, не блокируя основной поток приложения.
Создание torrent-файлов тоже получило новый API. Разработчики связали его с оптимизациями file_storage, чтобы приложения могли эффективнее формировать метаданные для больших наборов файлов.
Формат resume data стал компактнее. В этих данных клиент сохраняет состояние загрузки, сведения о проверенных частях и служебные параметры, чтобы после перезапуска продолжить работу без полной повторной проверки.
В add_torrent_params появились поля comment, created_by и creation_date. Параметры сессии перераспределены: session_flags перенесены в session_params. Метод remap_files() объявлен устаревшим, поскольку его прежнее поведение могло повреждать логику торрентов формата BitTorrent v2.
I2P, WebRTC и проверка входных данных получили отдельные доработки
libtorrent 2.1.0 добавляет обмен пирами через I2P PEX и повторное подключение к SAM-сессии после ошибки. В peer_info исправлено хранение адреса назначения I2P, а взаимодействие с трекерами и смешанными раздачами стало точнее.
Перед финальным выпуском разработчики добавили fuzz-тесты для компонентов WebRTC: разбора конечных точек, соединений, предложений трекера и SDP. Такие тесты передают парсерам множество повреждённых и нестандартных входных данных, чтобы находить сбои, утечки памяти и ошибки границ.
Появился лимит max_directory_depth для глубины каталогов внутри загружаемого torrent-файла. Он ограничивает обработку чрезмерно вложенных путей и помогает контролировать ресурсы при чтении недоверенных метаданных.
Версия также исправляет гонку в wait_for_alert(), ошибку завершения uTP-соединения, утечку памяти в WebRTC-потоке и проблему, способную повредить данные при записи через mmap-backend.
Торрент-клиенты перейдут на libtorrent 2.1 после адаптации сборок
Появление стабильной ветки 2.1 ещё не переводит все программы на неё автоматически. qBittorrent 5.2.3, опубликованный 7 июля 2026 года, собирался с libtorrent 1.2.20 или 2.0.13. После выхода 2.1.0 в трекере qBittorrent уже появился запрос на поддержку новой версии, где разработчики пакетов сообщили о несовместимости текущей сборки.
Похожая работа потребуется другим клиентам, Python-проектам и дистрибутивам Linux. Нужно проверить удалённые и устаревшие методы, наличие C++17, новую зависимость Boost.JSON и поведение WebTorrent при стандартной конфигурации.
Официальный релиз включает исходный код и готовые Python wheels для нескольких версий Python, Windows, macOS, glibc- и musl-дистрибутивов Linux, архитектур x86-64 и ARM64. Это упрощает тестирование Python-приложений без ручной компиляции библиотеки.
libtorrent 2.1.0 закладывает основу для браузерных пиров и разных типов хранилищ
Релиз 2.1.0 меняет сразу две важные части библиотеки: сетевое взаимодействие и работу с накопителями. WebTorrent связывает классические клиенты с WebRTC-пирами, а pread_disk_io даёт более подходящую основу для HDD, сетевых ресурсов и FUSE.
Разработчикам интеграций придётся внимательно пройти руководство по переходу и проверить собственные сборки. Пользователи готовых клиентов увидят эти возможности после того, как сопровождающие программы добавят поддержку ветки 2.1 и выпустят совместимые пакеты.