Dostępna jest nowa wersja biblioteki libtorrent 2.1, która oferuje implementację protokołu BitTorrent, skupiającą się na niskim zużyciu pamięci oraz efektywnym wykorzystaniu zasobów CPU. Biblioteka jest używana w takich klientach torrentowych, jak Deluge, qBittorrent, Folx, Lince, Miro, Flush oraz Free Download Manager, a także w niektórych sieciach przechowywania. Kod libtorrent napisany jest w języku C++ i jest udostępniany na licencji BSD.
Nowa wersja domyślnie zawiera wsparcie dla protokołu WebTorrent, który rozszerza protokół BitTorrent o możliwości tworzenia zdecentralizowanych sieci dystrybucji treści, działających poprzez bezpośrednie połączenie między przeglądarkami użytkowników przeglądających treści. Aby połączyć odwiedzających strony w jedną sieć dostarczania treści, wystarczy umieścić na stronie specjalny kod JavaScript wykorzystujący technologię WebRTC do bezpośredniej wymiany danych między przeglądarkami.
Integracja WebTorrent z libtorrent umożliwi udział w udostępnianiu treści zarówno poprzez stacjonarne klienty torrentowe, jak i przeglądarki użytkowników stron, tworząc hybrydowe sieci łączące BitTorrent i WebTorrent. Klienci torrentowi oparte na libtorrent będą mogły łączyć się z działającymi w przeglądarkach peer’ami WebTorrent, na przykład biorącymi udział w wymianie plików za pośrednictwem instant.io. Z kolei klienci przeglądarkowi WebTorrent będą mogli dzięki użytkownikom stacjonarnych klientów uzyskać dostęp do zbioru torrentów udostępnianych przez peer’y BitTorrent działające na TCP/UDP.
Oprócz wprowadzenia wsparcia dla WebTorrent w wersji libtorrent 2.1 zrealizowano nowy backend wejścia/wyjścia pread_disk_io, który wykorzystuje funkcje pwritev i preadv, umożliwiające atomowe zapisywanie i odczytywanie danych z kilku buforów jednocześnie. Nowy backend jest bardziej efektywny przy pracy z dyskowymi nośnikami, sieciowymi magazynami oraz systemami plików montowanymi przez FUSE. Dla podobnych zastosowań pread_disk_io jest używany domyślnie. W przypadku dysków NVMe bardziej wydajny i nadal domyślny jest stary backend, który wykorzystuje mapowanie plików do pamięci za pomocą mmap.
Źródło: opennet.ru
