libtorrent is a feature complete C++ bittorrent implementation focusing on efficiency and scalability. It runs on embedded devices as well as desktops. It boasts a well documented library interface that is easy to use. It comes with a simple bittorrent client demonstrating the use of the library.
The main goals of libtorrent are:
to be CPU efficient
to be memory efficient
to be very easy to use
Homepage
Download
Recent Releases
2.0.1124 Jan 2025 21:25
minor bugfix:
Race condition when cancelling requests after becoming a seed.
Performance in the file pool, evicting MRU instead of LRU (HanabishiRecca).
Where file_progress could sometimes be reported as 100 .
Don't hint FADV_RANDOM on posix systems. May improve seeding performance.
Allow boost connect while checking resume data if no_verify_files flag is set.
BEP-40 peer priority for IPv6.
Limit piece size in torrent creator.
File pre-allocation when changing file priority (HanabishiRecca).
UTP where closing the connection could corrupt the payload.
Apply DSCP/TOS to sockets before initiating the TCP connection.
Assume copy_file_range() exists on linux (unless old glibc).
Where set_piece_deadline() did not correctly post read_piece_alert.
Integer overflow in piece picker.
Torrent_status::num_pieces counts pieces passed hash check, as documented.
Check settings_pack::max_out_request_queue before performance alert.
Add announce_port setting to override the port announced to trackers.
2.0.1020 Feb 2024 12:27
minor feature:
* allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
* add feature to async_move_storage() to not move files
* fix reject resume data if it contains mismatching info hashes
* fix clear the candidate_cache when clear peer_list
* fix missing python converter for dht::announce_flags_t
|