There are some changes to the API in this version. They are documented here. The headline features for this release are:
webtorrent support
Thanks to Paul-Louis Ageneau https://github.com/paullouisageneau, and apologies for this feature having been unreleased for so long. This feature is now enabled by default. The last push to get this ready has been to add fuzz targets for WebRTC specific features, rtc_parse_endpoint, rtc_peer_conn, rtc_tracker_offer and sdp_offer. The dependencies for webtorrent support are pulled in as submodules in the repository. webtorrent also adds a new dependency on boost-json.
Note that the webtorrent support significantly widens the attack surface of libtorrent, if you don't need this feature, it's probably best disabled (webtorrent=off / -Dwebtorrent=OFF)
pread_disk_io
A new disk I/O backend that uses pwritev and preadv (and windows counterparts). This is hopefully addressing the misstep of transitioning all disk I/O over to memory mapped files. The mmap disk backend is still available and is probably more efficient for local NVMe drives. But for spinning disks, network mounts or FUSE drives, regular I/O calls should be a lot more efficient. pread_disk_io is now the default.
One of the main challenges with the new disk I/O has been to get the multi-threading right. It computes piece hashes on dedicated threads, separate from those making the I/O calls. This lets us advertise and upload pieces before they're flushed to disk, maintaining high throughput.
Other highlights are:
- add max_directory_depth limit to load_torrent_limits to bound file path depth when loading torrents
- fix race in wait_for_alert(), and update its return value
- optimize torrent_handle::torrent_file()
- add option to not validate v1 hashes for hybrid torrents
- add post_file_status() to query them asynchronously
- add post_file_priorities() to query them asynchronously
- fix local service discovery not being correctly staggered
- make the save path for part files configurable
- retry failed SAM connection (for i2p)
- deprecated remap_files(), and prevent it from breaking v2 torrents
- fix peer_info holding an i2p destination
- implement i2p_pex, peer exchange support for i2p torrents
- deprecate torrent_alert::torrent_name()
- requires OpenSSL minimum version 1.1.0 with SNI support
- try harder to bind TCP and UDP sockets to the same port
- made disk_interface's status_t type a flags type
- optimize resume data format to use less space
- add a simpler overload to bencode() returning a vector<char>
- introduced a new API for creating torrents, enabling file_storage optimizations
- default build to not include functions deprecated in libtorrent 1.1 and earlier
- add comment, created_by and creation_date to add_torrent_params
- move session_flags to session_params
- the entry class is now a standard variant type
- use std::string_view instead of boost counterpart
- libtorrent now requires C++17 to build
- removed support for BEP 17 web seeds (in favor of BEP 19)
- fix bug where torrent_status::total was not set for seeds
full commit log
- bump C++ version to 17 by @arvidn in https://github.com/arvidn/libtorrent/pull/4167
- Use time_duration instead of int for predictive pieces by @vktr in https://github.com/arvidn/libtorrent/pull/4707
- remove some noexcept-movable hacks that are no longer necessary by @arvidn in https://github.com/arvidn/libtorrent/pull/4708
- [clang-tidy] use bool literals by @neheb in https://github.com/arvidn/libtorrent/pull/4757
- [clang-tidy] remove bad const by @neheb in https://github.com/arvidn/libtorrent/pull/4759
- [clang-tidy] use using instead of typedef by @neheb in https://github.com/arvidn/libtorrent/pull/4756
- [clang-tidy] use make-unique by @neheb in https://github.com/arvidn/libtorrent/pull/4751
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/4765
- WebTorrent support by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/4123
- add readability-redundant-member-init clang_tidy checker by @arvidn in https://github.com/arvidn/libtorrent/pull/4792
- apply (most of) readability-qualified-auto changes by @arvidn in https://github.com/arvidn/libtorrent/pull/4789
- enable redundant preprocessor directive check in travis by @FranciscoPombal in https://github.com/arvidn/libtorrent/pull/4790
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/4862
- fix test_transfer on appveyor by @arvidn in https://github.com/arvidn/libtorrent/pull/4865
- use standard string_view by @arvidn in https://github.com/arvidn/libtorrent/pull/4704
- minor formatting update to netlink types by @arvidn in https://github.com/arvidn/libtorrent/pull/4834
- Fix Jamfile in libdatachannel by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/4867
- Fix Jamfile libjuice crypto dependencies by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/4882
- moved torrent and choker to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4488
- moved bloom_filter.hpp and bt_peer_connection.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4885
- moved hash_picker.hpp and http_parser.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4887
- moved crc32c.hpp and xml_parse.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4888
- fixup C-binding by @arvidn in https://github.com/arvidn/libtorrent/pull/4869
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/4894
- moved http_connection.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4895
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/4905
- moved ip_voter.hpp and io.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4902
- Update libdatachannel to fix usrsctp callback crash by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/4907
- moved peer_list.hpp and stack_allocator.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4908
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/4915
- moved web_connection_base.hpp, web_peer_connection.hpp and http_seed_connection.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4920
- fixing warnings of tests and logging=off by @aldenml in https://github.com/arvidn/libtorrent/pull/4935
- setup of travis tests for s390x architecture by @aldenml in https://github.com/arvidn/libtorrent/pull/4937
- mounting /sys when chroot to be able to use lscpu by @aldenml in https://github.com/arvidn/libtorrent/pull/4941
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/4950
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/4997
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5002
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5023
- moved torrent_peer.hpp and torrent_peer_allocator.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/4938
- Opt wcslen(L"\DEVICE\TCPIP_") by @pavel-pimenov in https://github.com/arvidn/libtorrent/pull/5032
- Update C++ compile features list for C++17 by @FranciscoPombal in https://github.com/arvidn/libtorrent/pull/5003
- moved stat.hpp and stat_cache.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5041
- remove old work-around by @arvidn in https://github.com/arvidn/libtorrent/pull/5080
- Cleanup license header by @arvidn in https://github.com/arvidn/libtorrent/pull/5088
- remove support for BEP 17 web seeds by @arvidn in https://github.com/arvidn/libtorrent/pull/5071
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5101
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5106
- moved udp_socket.hpp and udp_tracker_connection.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5107
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5136
- moved http_tracker_connection.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5145
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5169
- clang-tidy updates by @arvidn in https://github.com/arvidn/libtorrent/pull/5177
- fix calculation in tracker_manager::num_requests when webtorrent is enable by @aldenml in https://github.com/arvidn/libtorrent/pull/5146
- replaced boost::optional with std::optional by @aldenml in https://github.com/arvidn/libtorrent/pull/5185
- WebTorrent: Update libdatachannel by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5188
- WebTorrent: Fix peer list sorting by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5184
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5191
- using structured binding by @aldenml in https://github.com/arvidn/libtorrent/pull/5196
- modernize entry type to use std::variant by @arvidn in https://github.com/arvidn/libtorrent/pull/5089
- Aligned union by @arvidn in https://github.com/arvidn/libtorrent/pull/5090
- WebTorrent: Prevent protocol encryption over WebRTC by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5200
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5213
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5238
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5267
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5282
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5328
- fix compilation when using boost >= 1.75 and json by @aldenml in https://github.com/arvidn/libtorrent/pull/5738
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5740
- fix python binding build with deprecated functions by @arvidn in https://github.com/arvidn/libtorrent/pull/5744
- move session flags into the session_params object by @arvidn in https://github.com/arvidn/libtorrent/pull/5742
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5775
- using std::clamp from standard by @aldenml in https://github.com/arvidn/libtorrent/pull/5779
- moved string_util.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5795
- moved vector_utils.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5800
- moved request_blocks.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5802
- added vector utils unit tests by @aldenml in https://github.com/arvidn/libtorrent/pull/5803
- failing libatomic test is not a fatal error by @arvidn in https://github.com/arvidn/libtorrent/pull/5806
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5807
- moved peer_connection.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5809
- moved piece_block_progress.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5815
- moved utf8.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5820
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5824
- moved tracker_manager.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5822
- moved sliding_average.hpp and tailqueue.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5826
- moved mmap_storage.hpp and part_file.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5828
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5834
- moved http_stream.hpp and ssl_stream.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5833
- fail loading torrents with too many duplicate file names (as that's a… by @arvidn in https://github.com/arvidn/libtorrent/pull/5835
- moved peer.hpp and resolve_links.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5837
- moved platform_util.hpp, puff.hpp and union_endpoint.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5838
- moved copy_ptr.hpp, file.hpp and parse_url.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5841
- moved piece_picker.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5844
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5847
- moved link.hpp and pe_crypto.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5845
- moved random.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5850
- moved socket_io.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5853
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5855
- remove Jamfile picking up CXXFLAGS and LDFLAGS automatically. Move it… by @arvidn in https://github.com/arvidn/libtorrent/pull/5856
- moved deadline_timer.hpp and debug.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5857
- moved sha1.hpp and sha256.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5859
- moved enum_net.hpp, peer_class_set.hpp and proxy_base.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5864
- Fix Boost.JSON submodule by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5869
- moved netlink.hpp and ssl.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5871
- moved lsd.hpp to aux by @aldenml in https://github.com/arvidn/libtorrent/pull/5875
- WebTorrent: Add keepalive with ping on WebSocket by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5882
- WebTorrent: Update libdatachannel by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5884
- WebTorrent: Remove leftover compilation flag for g++ by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5890
- WebTorrent: Fix assert "p->connection == &c" by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5915
- add CI test for the C binding by @arvidn in https://github.com/arvidn/libtorrent/pull/5922
- deprecate volatile_read_cache by @arvidn in https://github.com/arvidn/libtorrent/pull/5927
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5929
- [1/?] Add pre-commit config. by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/5901
- use the built-in hidden-feature in b2 by @arvidn in https://github.com/arvidn/libtorrent/pull/5931
- don't announce stopped-event to websocket trackers. by @arvidn in https://github.com/arvidn/libtorrent/pull/5933
- Ensure we don't attempt to make outgoing connections to RTC peers by @arvidn in https://github.com/arvidn/libtorrent/pull/5942
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5946
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5953
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5965
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/5976
- All seeing eye tolled ewe sew asetes setup.py cleanup final by @arvidn in https://github.com/arvidn/libtorrent/pull/5966
- Remove msvc toolset default, and libtool support by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/5969
- Default setup.py to do static linking on all platforms by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/5970
- Add code-generation scripts to pre-commit by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/5997
- fix-gen-fwd script to remove the existing fwd.hpp as best-effort, and… by @arvidn in https://github.com/arvidn/libtorrent/pull/6003
- fix issue in parsing invalid webtorrent tracker responses by @arvidn in https://github.com/arvidn/libtorrent/pull/6005
- [5.1.1/?] Apply python formatting and linting to a selection of tools by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/5956
- WebTorrent: Update libdatachannel by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/5998
- remove unused code in piece picker by @arvidn in https://github.com/arvidn/libtorrent/pull/6006
- [6/?] Rework python include/library detection. Use tox for running tests by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/5905
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6041
- add size_on_disk() to file_storage and torrent_info by @arvidn in https://github.com/arvidn/libtorrent/pull/6042
- deprecate sha-1 file hashes (torrent file extension field) by @arvidn in https://github.com/arvidn/libtorrent/pull/6044
- WebTorrent: Update libdatachannel by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6046
- fix gen_convenience_header by @arvidn in https://github.com/arvidn/libtorrent/pull/6052
- build android arm 32 bits with webtorrent enabled by @aldenml in https://github.com/arvidn/libtorrent/pull/6051
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6059
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6072
- fix size_on_disk patch by @arvidn in https://github.com/arvidn/libtorrent/pull/6065
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6097
- fix makefile to work when CXXFLAGS or LDFLAGS are empty by @arvidn in https://github.com/arvidn/libtorrent/pull/6100
- update copyright and license headers (of a few new files merged from … by @arvidn in https://github.com/arvidn/libtorrent/pull/6101
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6111
- Adding sequential_start to piece_picker to speed up sequential downloads by @markmdscott in https://github.com/arvidn/libtorrent/pull/5996
- Add unit tests for WebSocket tracker parsing by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6120
- WebTorrent: Update libdatachannel by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6121
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6143
- WebTorrent: Update libdatachannel by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6144
- expand use of std::variant in disk job to simplify logic by @arvidn in https://github.com/arvidn/libtorrent/pull/6139
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6189
- bump libdatachannel submodule to fix warning by @arvidn in https://github.com/arvidn/libtorrent/pull/6190
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6224
- [7/?] Expand test coverage of the python bindings by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/5990
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6230
- Fix C compilation with CMake by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6231
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6240
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6255
- WebTorrent: Update libdatachannel to v0.13.3 by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6233
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6258
- Restrict some github actions by path by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6191
- update copyright headers in source files by @arvidn in https://github.com/arvidn/libtorrent/pull/6261
- [8/?] Add type stubs to the python bindings by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6187
- WebTorrent: Update libdatachannel to v0.13.4 by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6264
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6267
- Add type stubs and tests for sha256_hash by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6298
- hash(info_hash_t) is stable now, enable test by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6299
- Fix seed rank calculation when we're the only known seed by @thrnz in https://github.com/arvidn/libtorrent/pull/6311
- use braille for client_test piece matrix by @arvidn in https://github.com/arvidn/libtorrent/pull/6332
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6333
- More python deprecations by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6335
- Deprecate bencode('str') by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6334
- Check bounds on file_storage and create_torrent by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6352
- Enable some more dht_put_alert tests by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6362
- Add binding for announce_flags_t by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6367
- Enable tests of ip_filter.export() by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6359
- Fix some tests after d9807b6b by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6354
- Fix binding for file_progress_flags_t by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6369
- Remove unused set_root_cert(bytes) test by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6357
- Fix torrent_info.add_url_seed support by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6360
- Deprecate add_piece(i, 'str') by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6365
- Add binding for close_reason_t by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6370
- Deprecate rename_file(bytes) by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6364
- Enable tests for add_torrent_params fields and session_status.active_… by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6361
- Re-enable the add_collection python test by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6356
- Check against various bad reads by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6355
- Make dht mutable item keys be bytes-only by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6363
- Add binding to fix session.add_port_mapping by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6368
- Make dht_put_alert.salt and dht_immutable_item_alert.salt be bytes by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6351
- Add generate_fingerprint_bytes by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6349
- Add binding for dht_module_t by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6372
- Deprecate session.add_torrent(dict) and parse_magnet_uri_dict() by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6353
- Deprecate sha1_hash('str') by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6373
- Fixup fingerprint and its deprecations by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6358
- Deprecate use of bytes with paths in file_storage by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6366
- Remove binding for session_params.ext_state by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6379
- Add sha256 bounds/type checking similar to sha1 by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6383
- Enable tests after [#6162] was merged to master by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6382
- Fix bindings for members of picker_log_alert by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6371
- Fix deprecated session.add_torrent form to prevent crash by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6377
- Removed some unused tests by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6384
- Python DHT alert test improvements by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6391
- Ensure write_session_params always returns a dict entry by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6380
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6434
- Make TorrentDeleteFailedAlertTest work in more environments by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6445
- Add session.session_state() by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6381
- Deprecate some classes by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6378
- Loosen restrictions on error categories by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6446
- Clean up tests for python demo scripts by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6441
- AppVeyor: switch the CMake build to Ninja Multi-Config generators for easier build parallelization by @FranciscoPombal in https://github.com/arvidn/libtorrent/pull/6195
- Migrate to OpenSSL EVP interface for hashing by @Chocobo1 in https://github.com/arvidn/libtorrent/pull/6455
- Add pre-commit hooks to filter-rst.py by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6474
- Run pre-commit hooks on gen_settings_doc.py by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6475
- bump boost version to use on appveyor by @arvidn in https://github.com/arvidn/libtorrent/pull/6491
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6501
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6506
- Default python bindings to crypto=openssl (master) by @AllSeeingEyeTolledEweSew in https://github.com/arvidn/libtorrent/pull/6497
- Guard against self assignment by @Chocobo1 in https://github.com/arvidn/libtorrent/pull/6514
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6550
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6565
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6582
- Update copyright by @arvidn in https://github.com/arvidn/libtorrent/pull/6587
- WebTorrent: Update libdatachannel to v0.16.1 by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6602
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6605
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6621
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6664
- Use UTF-8 encoding for messages coming from boost on Windows by @Chocobo1 in https://github.com/arvidn/libtorrent/pull/6665
- remove redundant calls to convert_from_native() by @arvidn in https://github.com/arvidn/libtorrent/pull/6669
- use github's native cancel previous jobs by @arvidn in https://github.com/arvidn/libtorrent/pull/6693
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6704
- minor cleanup and lint oriented refactor by @aldenml in https://github.com/arvidn/libtorrent/pull/6713
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6727
- Exporting SYSTEM_VERSION_COMPAT to fix tox failing on macOS by @Samfun75 in https://github.com/arvidn/libtorrent/pull/6729
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6778
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6804
- WebTorrent: Update libdatachannel to v0.17.1 by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/6826
- removed unused variable in torrent.cpp by @aldenml in https://github.com/arvidn/libtorrent/pull/6840
- V560 A part of conditional expression is always true: !found_on_disk. by @pavel-pimenov in https://github.com/arvidn/libtorrent/pull/6854
- fix skipping of client_test python test on non-linux by @arvidn in https://github.com/arvidn/libtorrent/pull/6876
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6879
- removed unused file, minor namespace refactor by @aldenml in https://github.com/arvidn/libtorrent/pull/6900
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6909
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6926
- move the protocol version field for tracker alerts by @arvidn in https://github.com/arvidn/libtorrent/pull/6921
- make some member functions on session_impl const by @arvidn in https://github.com/arvidn/libtorrent/pull/6927
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6929
- Unique trackers by @arvidn in https://github.com/arvidn/libtorrent/pull/6873
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6933
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6947
- factor out storage_array from mmap_disk_io by @arvidn in https://github.com/arvidn/libtorrent/pull/6949
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6954
- Simplify thread pool by @arvidn in https://github.com/arvidn/libtorrent/pull/6956
- use boost static_vector in disk_completed_queue by @arvidn in https://github.com/arvidn/libtorrent/pull/6957
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6962
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6974
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/6998
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7004
- refactor file_view_pool by @arvidn in https://github.com/arvidn/libtorrent/pull/7005
- fix run_benchmark.py by @arvidn in https://github.com/arvidn/libtorrent/pull/7008
- remove some unused includes by @arvidn in https://github.com/arvidn/libtorrent/pull/7009
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7012
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7020
- bump version to 2.1 by @arvidn in https://github.com/arvidn/libtorrent/pull/7021
- remove unused variable in torrent::recalc_share_mode by @aldenml in https://github.com/arvidn/libtorrent/pull/7022
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7064
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7079
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7085
- add upgrade_to_2.1 document by @arvidn in https://github.com/arvidn/libtorrent/pull/7086
- add comment, created_by and creation_date to add_torrent_params by @arvidn in https://github.com/arvidn/libtorrent/pull/7090
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7095
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7106
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7111
- move python binding for file_storage to its own file by @arvidn in https://github.com/arvidn/libtorrent/pull/7116
- make python binding build without deprecated functions by @arvidn in https://github.com/arvidn/libtorrent/pull/7115
- Path typesafe flags by @arvidn in https://github.com/arvidn/libtorrent/pull/7118
- improve round-trip test in test_create_torrent by @arvidn in https://github.com/arvidn/libtorrent/pull/7120
- use new create_torrent functions in tests and examples by @arvidn in https://github.com/arvidn/libtorrent/pull/7121
- make fuzzers build without deprecated functions by @arvidn in https://github.com/arvidn/libtorrent/pull/7124
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7127
- clean-up settings_pack default values by @arvidn in https://github.com/arvidn/libtorrent/pull/7128
- Change the default to disable functions deprecated in 1.1 and earlier by @arvidn in https://github.com/arvidn/libtorrent/pull/7129
- introduce new API for create_torrent by @arvidn in https://github.com/arvidn/libtorrent/pull/7122
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7147
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7164
- some typos and minor refactor by @aldenml in https://github.com/arvidn/libtorrent/pull/7199
- add a simpler overload to bencode() returning a vector<char> by @arvidn in https://github.com/arvidn/libtorrent/pull/7210
- optimize resume data format to use less space by @arvidn in https://github.com/arvidn/libtorrent/pull/7211
- fix printing of piece-matrix in client_test by @arvidn in https://github.com/arvidn/libtorrent/pull/7220
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7223
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7224
- create_torrent does not need fileroots to be a member to create_torrent by @arvidn in https://github.com/arvidn/libtorrent/pull/7227
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7233
- update documentation for metadata_received_alert by @arvidn in https://github.com/arvidn/libtorrent/pull/7253
- Fix WebSocket tracker peer id changing in answer by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/7249
- Make WebTorrent offer_id length consistent with the reference implementation by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/7250
- optimize create_torrent::generate_buf() by @arvidn in https://github.com/arvidn/libtorrent/pull/7230
- move towards an immutable torrent_info by @arvidn in https://github.com/arvidn/libtorrent/pull/7255
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7263
- make status_t a proper flag type by @arvidn in https://github.com/arvidn/libtorrent/pull/7266
- fix recently introduced create_torrent::generate_buf() by @arvidn in https://github.com/arvidn/libtorrent/pull/7268
- WebTorrent: update libdatachannel to v0.18 (re-licensed to MPL 2.0) by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/7251
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7276
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7280
- deprecate storing web seeds and trackers in torrent_info by @arvidn in https://github.com/arvidn/libtorrent/pull/7271
- Expression 'size_left > 0' is always true. by @pavel-pimenov in https://github.com/arvidn/libtorrent/pull/7319
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7320
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7347
- add need_save_resume field to torrent_status by @arvidn in https://github.com/arvidn/libtorrent/pull/7348
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7366
- minor lint guided refactor and cleanup by @aldenml in https://github.com/arvidn/libtorrent/pull/7369
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7382
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7393
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7423
- fix printing of (large) pieces by @arvidn in https://github.com/arvidn/libtorrent/pull/7428
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7434
- client_test print fixes by @arvidn in https://github.com/arvidn/libtorrent/pull/7448
- torrent invariant check debug output by @arvidn in https://github.com/arvidn/libtorrent/pull/7450
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7505
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7550
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7580
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7613
- fix user defined literal warning by @arvidn in https://github.com/arvidn/libtorrent/pull/7614
- don't include libdatachannel examples in tarball by @arvidn in https://github.com/arvidn/libtorrent/pull/7617
- fix warnings in new versions of clang by @arvidn in https://github.com/arvidn/libtorrent/pull/7600
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7620
- support allocating 0 items in an alloca array by @arvidn in https://github.com/arvidn/libtorrent/pull/7624
- various minor updates to tests by @arvidn in https://github.com/arvidn/libtorrent/pull/7627
- expose field to configure disk I/O backend to python by @arvidn in https://github.com/arvidn/libtorrent/pull/7623
- when debug iterators are enabled enable them in boost-multi-index by @arvidn in https://github.com/arvidn/libtorrent/pull/7622
- pass in whether a torrent has v1 and/or v2 hashes in storage_params by @arvidn in https://github.com/arvidn/libtorrent/pull/7625
- add feature to enable interruption of disk I/O worker threads by @arvidn in https://github.com/arvidn/libtorrent/pull/7626
- try harder to bind TCP and UDP sockets to the same port by @arvidn in https://github.com/arvidn/libtorrent/pull/7632
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7633
- add option to select disk I/O back-end in disk_io_stress_test by @arvidn in https://github.com/arvidn/libtorrent/pull/7637
- add option to select disk I/O backend to client_test by @arvidn in https://github.com/arvidn/libtorrent/pull/7638
- attempt to disable auto-update of homebrew packages on CI by @arvidn in https://github.com/arvidn/libtorrent/pull/7645
- improve const correctness of disk I/O code by @arvidn in https://github.com/arvidn/libtorrent/pull/7644
- bump github actions windows image to 2022 by @arvidn in https://github.com/arvidn/libtorrent/pull/7661
- try encode web seed redirect location by @ajax16384 in https://github.com/arvidn/libtorrent/pull/7640
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7671
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7686
- Various CI fixes by @qstokkink in https://github.com/arvidn/libtorrent/pull/7688
- Moved type stubs into libtorrent directory by @qstokkink in https://github.com/arvidn/libtorrent/pull/7691
- Update libdatachannel to v0.21.2 by @paullouisageneau in https://github.com/arvidn/libtorrent/pull/7701
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7713
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7744
- extend the disk-io stress test to ensure more invariants by @arvidn in https://github.com/arvidn/libtorrent/pull/7756
- slight improvement to disk I/O debug logging by @arvidn in https://github.com/arvidn/libtorrent/pull/7755
- add new example program, to organize a fuzzing corpus of .torrent files by @arvidn in https://github.com/arvidn/libtorrent/pull/7751
- DHT scrape by @arvidn in https://github.com/arvidn/libtorrent/pull/7757
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7760
- make file_pool_impl have the open_unmap_lock mutex type configurable by @arvidn in https://github.com/arvidn/libtorrent/pull/7761
- fix a few shadowing variable warnings under Apple clang 16.0.0 by @aldenml in https://github.com/arvidn/libtorrent/pull/7762
- fix printing of piece-bar in client-test by @arvidn in https://github.com/arvidn/libtorrent/pull/7766
- improve printing of file progress in client_test by @arvidn in https://github.com/arvidn/libtorrent/pull/7767
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7770
- extend test_transfer to cover the posix disk I/O as well as large pieces by @arvidn in https://github.com/arvidn/libtorrent/pull/7774
- requires openssl minimum version 1.1.0 by @aldenml in https://github.com/arvidn/libtorrent/pull/7775
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7783
- add build option debug-disk-pool to log disk buffers allocated by category by @arvidn in https://github.com/arvidn/libtorrent/pull/7792
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7797
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7819
- bump ubuntu CI runner to 24.04 by @arvidn in https://github.com/arvidn/libtorrent/pull/7823
- pkg-config file generation: resolve CMAKE_INSTALL_PREFIX at install time by @Piraty in https://github.com/arvidn/libtorrent/pull/7822
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7834
- make message output for torrent_alert more concise by @arvidn in https://github.com/arvidn/libtorrent/pull/7838
- implement i2p_pex, peer exchange support for i2p torrents by @arvidn in https://github.com/arvidn/libtorrent/pull/7831
- move binding for tracker_alert::version to where it belongs by @arvidn in https://github.com/arvidn/libtorrent/pull/7845
- update peer_info to hold a proper variant for i2p destination by @arvidn in https://github.com/arvidn/libtorrent/pull/7841
- Peer log by @arvidn in https://github.com/arvidn/libtorrent/pull/7842
- read_resume() hack by @arvidn in https://github.com/arvidn/libtorrent/pull/7848
- make info_section immutable in torrent_info by @arvidn in https://github.com/arvidn/libtorrent/pull/7847
- move file loading to load_torrent_file(), towards making it independent by @arvidn in https://github.com/arvidn/libtorrent/pull/7849
- transition tests to use load_torrent_buffer() and load_torrent_file() by @arvidn in https://github.com/arvidn/libtorrent/pull/7850
- fix load_torrent_*() to not set piece layers for files smaller or equ… by @arvidn in https://github.com/arvidn/libtorrent/pull/7851
- round-trip torrent via session without relying on torrent_info storin… by @arvidn in https://github.com/arvidn/libtorrent/pull/7853
- is_i2p_url() can take a string view, no need to copy the string by @arvidn in https://github.com/arvidn/libtorrent/pull/7852
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7860
- move the code loading torrents by @arvidn in https://github.com/arvidn/libtorrent/pull/7856
generate_torrent()by @arvidn in https://github.com/arvidn/libtorrent/pull/7865- deprecate creator, comment and creation-date by @arvidn in https://github.com/arvidn/libtorrent/pull/7864
- transition more tests to use
add_torrent_paramsby @arvidn in https://github.com/arvidn/libtorrent/pull/7867 - deprecate storing piece layers in
torrent_infoby @arvidn in https://github.com/arvidn/libtorrent/pull/7866 - deprecate torrent_info constructors that load torrents by @arvidn in https://github.com/arvidn/libtorrent/pull/7868
- deprecate
make_magnet_uri()overloads by @arvidn in https://github.com/arvidn/libtorrent/pull/7871 - deprecate keeping DHT nodes in
torrent_infoby @arvidn in https://github.com/arvidn/libtorrent/pull/7872 - Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7922
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7967
- Some optimizations by @bolshoytoster in https://github.com/arvidn/libtorrent/pull/7950
- Immutable
torrent_infoby @arvidn in https://github.com/arvidn/libtorrent/pull/7933 - Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7979
- simplify resolve links by just using paths directly by @arvidn in https://github.com/arvidn/libtorrent/pull/7980
- deprecated remap_files() by @arvidn in https://github.com/arvidn/libtorrent/pull/7981
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/7985
- more immutable
file_storageby @arvidn in https://github.com/arvidn/libtorrent/pull/7983 - Fix arguments of dispatched functions cannot be actually moved by @glassez in https://github.com/arvidn/libtorrent/pull/7903
- add load torrent api that no throw exceptions by @aldenml in https://github.com/arvidn/libtorrent/pull/7992
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8001
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8033
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8089
- I2p reconnect by @arvidn in https://github.com/arvidn/libtorrent/pull/8055
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8104
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8108
- fix test_transfer to build with mmap support disabled by @arvidn in https://github.com/arvidn/libtorrent/pull/8124
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8123
- Disk fixes by @arvidn in https://github.com/arvidn/libtorrent/pull/8125
- make the save path for part files configurable by @arvidn in https://github.com/arvidn/libtorrent/pull/8119
- address cmake compatibility by @arvidn in https://github.com/arvidn/libtorrent/pull/8131
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8133
- Fix webtorrent CMake & Appveyor builds by @jasminsehic in https://github.com/arvidn/libtorrent/pull/8128
- improve print pieces in client_test by @arvidn in https://github.com/arvidn/libtorrent/pull/8145
- Json by @arvidn in https://github.com/arvidn/libtorrent/pull/8150
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8151
- fix potential overflow in sliding_average by @arvidn in https://github.com/arvidn/libtorrent/pull/8152
- fixup printing piece by @arvidn in https://github.com/arvidn/libtorrent/pull/8153
- fix some clang warnings by @arvidn in https://github.com/arvidn/libtorrent/pull/8132
- suppress asan leak reports from openssl by @arvidn in https://github.com/arvidn/libtorrent/pull/8161
- more debug logging in torrent.cpp and some defensive programming by @arvidn in https://github.com/arvidn/libtorrent/pull/8162
- bump libdatachannel to 0.24.1 by @arvidn in https://github.com/arvidn/libtorrent/pull/8090
- factor out back-pressure logic from disk_buffer_pool by @arvidn in https://github.com/arvidn/libtorrent/pull/8166
- add root_certificate to add_torrent_params by @arvidn in https://github.com/arvidn/libtorrent/pull/8165
- Fixup back pressure by @arvidn in https://github.com/arvidn/libtorrent/pull/8169
- pread-disk-io by @arvidn in https://github.com/arvidn/libtorrent/pull/7013
- Update documentation on building fuzzers by @ademuri in https://github.com/arvidn/libtorrent/pull/8173
- attempt to address issue where the UDP socket and TCP sockets may be … by @arvidn in https://github.com/arvidn/libtorrent/pull/8174
- fix torrent_info round-trip test by @arvidn in https://github.com/arvidn/libtorrent/pull/8178
- add missing session settings to python type stubs by @arvidn in https://github.com/arvidn/libtorrent/pull/8179
- remove the bottled feature from http_connection. It's always enabled. by @arvidn in https://github.com/arvidn/libtorrent/pull/8177
- fix peer invariant check by @arvidn in https://github.com/arvidn/libtorrent/pull/8183
- fix issue where v2 torrents could pass the same piece twice by @arvidn in https://github.com/arvidn/libtorrent/pull/8182
- fix issue when saving resume data on a magnet link without metadata by @arvidn in https://github.com/arvidn/libtorrent/pull/8181
- improve disk I/O stress test by @arvidn in https://github.com/arvidn/libtorrent/pull/8184
- optimize disk_cache. only allocate v2 block hashes for v2 torrents by @arvidn in https://github.com/arvidn/libtorrent/pull/8185
- V2 hash cursor by @arvidn in https://github.com/arvidn/libtorrent/pull/8189
- improve disk_io_stress_test by @arvidn in https://github.com/arvidn/libtorrent/pull/8192
- use flags instead of C bitfields in cached_piece_entry by @arvidn in https://github.com/arvidn/libtorrent/pull/8191
- drop appveyor by @arvidn in https://github.com/arvidn/libtorrent/pull/8190
- Pread 0 threads by @arvidn in https://github.com/arvidn/libtorrent/pull/8195
- Optimize kick hasher by @arvidn in https://github.com/arvidn/libtorrent/pull/8194
- Fixup piece_hash race by @arvidn in https://github.com/arvidn/libtorrent/pull/8196
- fix up bitfield to be more MS compatible by @arvidn in https://github.com/arvidn/libtorrent/pull/8199
- deprecate torrent_info::info() by @arvidn in https://github.com/arvidn/libtorrent/pull/8201
- make sure LSD announcements are staggered, even when adding a lot of … by @arvidn in https://github.com/arvidn/libtorrent/pull/8205
- Reject invalid tracker url (port to master branch) by @vafada in https://github.com/arvidn/libtorrent/pull/8206
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8207
- Release workflow by @arvidn in https://github.com/arvidn/libtorrent/pull/8208
- use string_view in string_begins_no_case by @arvidn in https://github.com/arvidn/libtorrent/pull/8209
- expose the current upload- and download rate limits per torrent by @arvidn in https://github.com/arvidn/libtorrent/pull/8210
- expose a new function to query renamed files in a torrent by @arvidn in https://github.com/arvidn/libtorrent/pull/8212
- fix roundtrip of renamed_files by @arvidn in https://github.com/arvidn/libtorrent/pull/8216
- C++ 17 updates by @arvidn in https://github.com/arvidn/libtorrent/pull/8222
- make disk cache more independent from the disk job by @arvidn in https://github.com/arvidn/libtorrent/pull/8224
- add unit tests of disk cache by @arvidn in https://github.com/arvidn/libtorrent/pull/8225
- free disk buffers in bulk by @arvidn in https://github.com/arvidn/libtorrent/pull/8226
- add debug range checks to aux::unique_ptr by @arvidn in https://github.com/arvidn/libtorrent/pull/8228
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8234
- decrease disk cache overhead by @arvidn in https://github.com/arvidn/libtorrent/pull/8227
- deduce block-per-piece rather than storing it, in cached_piece_entry by @arvidn in https://github.com/arvidn/libtorrent/pull/8237
- make the cached_block_entry smaller by @arvidn in https://github.com/arvidn/libtorrent/pull/8238
- add post_file_priorities() to query them asynchronously by @arvidn in https://github.com/arvidn/libtorrent/pull/8242
- add post_file_status() as an asynchronous alternative to file_status() by @arvidn in https://github.com/arvidn/libtorrent/pull/8244
- address clang/msvc warnings by @arvidn in https://github.com/arvidn/libtorrent/pull/8241
- add feature to only validate the v2 hashes for hybrid torrents by @arvidn in https://github.com/arvidn/libtorrent/pull/8217
- Retry hash job by @arvidn in https://github.com/arvidn/libtorrent/pull/8245
- Test filesystems by @arvidn in https://github.com/arvidn/libtorrent/pull/8246
- optimize torrent_handle::torrent_file() by @arvidn in https://github.com/arvidn/libtorrent/pull/8247
- Fix crash when build with MSVC2026 by @glassez in https://github.com/arvidn/libtorrent/pull/8250
- update test output to integrate better with github actions by @arvidn in https://github.com/arvidn/libtorrent/pull/8251
- tweak filesystem test script by @arvidn in https://github.com/arvidn/libtorrent/pull/8249
- Fix 'i2p not found' not breaking ABI by @gtumanyan in https://github.com/arvidn/libtorrent/pull/8235
- fix issue where the flushing flag could be left set by flush_piece_impl by @arvidn in https://github.com/arvidn/libtorrent/pull/8252
- fix race in flush_piece_impl() by @arvidn in https://github.com/arvidn/libtorrent/pull/8253
- fix flush piece while hashing by @arvidn in https://github.com/arvidn/libtorrent/pull/8248
- fix test_natpmp and build it on CI by @arvidn in https://github.com/arvidn/libtorrent/pull/8256
- require at least boost-1.75.0 by @arvidn in https://github.com/arvidn/libtorrent/pull/8258
- add cppcheck to CI by @arvidn in https://github.com/arvidn/libtorrent/pull/8259
- run cppcheck on simulations. suppress false positives by @arvidn in https://github.com/arvidn/libtorrent/pull/8262
- local_connection is deprecated, use outgoing_connection by @arvidn in https://github.com/arvidn/libtorrent/pull/8267
- unify the simulate-slow features in the Jamfile by @arvidn in https://github.com/arvidn/libtorrent/pull/8266
- fix issue when retrying blocked hash_jobs hung on a piece by @arvidn in https://github.com/arvidn/libtorrent/pull/8269
- update clang-tidy by @arvidn in https://github.com/arvidn/libtorrent/pull/8263
- build and test python bindings on CI unconditionally by @arvidn in https://github.com/arvidn/libtorrent/pull/8273
- explicitly flush the error message in TORRENT_ASSERT_PRECOND by @arvidn in https://github.com/arvidn/libtorrent/pull/8276
- Test merge2 by @arvidn in https://github.com/arvidn/libtorrent/pull/8277
- add CLAUDE.md by @arvidn in https://github.com/arvidn/libtorrent/pull/8278
- build against boost.json as header only. This makes it easier to chan… by @arvidn in https://github.com/arvidn/libtorrent/pull/8279
- fix recent merge typo in torrent::force_tracker_request() by @arvidn in https://github.com/arvidn/libtorrent/pull/8283
- new fuzzers by @arvidn in https://github.com/arvidn/libtorrent/pull/8197
- document that support for BEP17 web seeds were removed by @arvidn in https://github.com/arvidn/libtorrent/pull/8289
- Header only boost by @arvidn in https://github.com/arvidn/libtorrent/pull/8291
- address python tests using deprecated functions by @arvidn in https://github.com/arvidn/libtorrent/pull/8296
- fix support for multi-buffer writes in pread_storage by @arvidn in https://github.com/arvidn/libtorrent/pull/8292
- address a data race in pread_disk_io by @arvidn in https://github.com/arvidn/libtorrent/pull/8294
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8298
- fix flaky python test by @arvidn in https://github.com/arvidn/libtorrent/pull/8295
- Clang tidy by @arvidn in https://github.com/arvidn/libtorrent/pull/8301
- post peer_disconnected_alert even if the peer never completed the han… by @arvidn in https://github.com/arvidn/libtorrent/pull/8302
- add clang-format configuration and a pre-commit rule for migration by @arvidn in https://github.com/arvidn/libtorrent/pull/8303
- fix issue in filtered piece accounting in the piece_picker by @arvidn in https://github.com/arvidn/libtorrent/pull/8304
- Use Boost.JSON as header-only via cmake by @Chocobo1 in https://github.com/arvidn/libtorrent/pull/8280
- add feature to tick_interval setting to allow all work to run every m… by @arvidn in https://github.com/arvidn/libtorrent/pull/8307
- update clang-tidy config by @arvidn in https://github.com/arvidn/libtorrent/pull/8311
- fix race in session_handle::wait_for_alert() by @arvidn in https://github.com/arvidn/libtorrent/pull/8312
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8315
- disable python's and pytest's faulthandler by @arvidn in https://github.com/arvidn/libtorrent/pull/8314
- make web seed connections fail earlier on invalid data by @arvidn in https://github.com/arvidn/libtorrent/pull/8308
- update claude instructions by @arvidn in https://github.com/arvidn/libtorrent/pull/8309
- Use header-only boost in Windows cmake workflow by @Chocobo1 in https://github.com/arvidn/libtorrent/pull/8310
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8329
- authenticate webtorrent tracker certificates by default by @arvidn in https://github.com/arvidn/libtorrent/pull/8330
- optimizations to avoid unnecessary calls to piece_size_for_req() by @arvidn in https://github.com/arvidn/libtorrent/pull/8335
- web seed fixes by @arvidn in https://github.com/arvidn/libtorrent/pull/8337
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8338
- fix clang warnings by @arvidn in https://github.com/arvidn/libtorrent/pull/8339
- add max_directory_depth limit to load_torrent_limits by @arvidn in https://github.com/arvidn/libtorrent/pull/8340
- script to measure fuzzer code coverage by @arvidn in https://github.com/arvidn/libtorrent/pull/8342
- Add torrent fuzzer by @arvidn in https://github.com/arvidn/libtorrent/pull/8343
- fuzzer for parse_piece_layers by @arvidn in https://github.com/arvidn/libtorrent/pull/8346
- improve sanitization of filenames, and symlinks in particular by @arvidn in https://github.com/arvidn/libtorrent/pull/8344
- pe_crypto_state fuzzer by @arvidn in https://github.com/arvidn/libtorrent/pull/8347
- fuzzer for identify_client by @arvidn in https://github.com/arvidn/libtorrent/pull/8348
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8351
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8360
- add another phase to flushing blocks from the disk cache by @arvidn in https://github.com/arvidn/libtorrent/pull/8359
- address data race in pread_disk_io by @arvidn in https://github.com/arvidn/libtorrent/pull/8361
- utp_stream fuzzer by @arvidn in https://github.com/arvidn/libtorrent/pull/8364
- fuzzer for local service discovery by @arvidn in https://github.com/arvidn/libtorrent/pull/8363
- add fuzzer for udp tracker by @arvidn in https://github.com/arvidn/libtorrent/pull/8362
- extend the UPnP fuzzer to actaually exercise the port mapping logic by @arvidn in https://github.com/arvidn/libtorrent/pull/8365
- add NAT-PMP fuzzer by @arvidn in https://github.com/arvidn/libtorrent/pull/8375
- fix connection_tester with allow-fast by @arvidn in https://github.com/arvidn/libtorrent/pull/8379
- add fuzzer for socks5 udp associate by @arvidn in https://github.com/arvidn/libtorrent/pull/8378
- Connection tester by @arvidn in https://github.com/arvidn/libtorrent/pull/8382
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8387
- add python binding alert.timestamp() by @milahu in https://github.com/arvidn/libtorrent/pull/8368
- update run_benchmark.py by @arvidn in https://github.com/arvidn/libtorrent/pull/8390
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8392
- add feature to connection_tester to generate resume data by @arvidn in https://github.com/arvidn/libtorrent/pull/8394
- Improve benchmark by @arvidn in https://github.com/arvidn/libtorrent/pull/8396
- fix generating v2 resume data in connection_tester by @arvidn in https://github.com/arvidn/libtorrent/pull/8397
- factor out shared code in portmap fuzzers by @arvidn in https://github.com/arvidn/libtorrent/pull/8400
- fix v2 piece hash generation in connection_tester by @arvidn in https://github.com/arvidn/libtorrent/pull/8401
- More fuzzers by @arvidn in https://github.com/arvidn/libtorrent/pull/8402
- optimize count_jobs() in disk_cache.cpp by @arvidn in https://github.com/arvidn/libtorrent/pull/8404
- add gen_corpus script by @arvidn in https://github.com/arvidn/libtorrent/pull/8405
- Complete docs by @arvidn in https://github.com/arvidn/libtorrent/pull/8403
- description of the documentation generation process by @arvidn in https://github.com/arvidn/libtorrent/pull/8406
- address flakiness of webtorrent test by @arvidn in https://github.com/arvidn/libtorrent/pull/8407
- claude fuzzers by @arvidn in https://github.com/arvidn/libtorrent/pull/8408
- move the comma outside of the METRIC macro by @arvidn in https://github.com/arvidn/libtorrent/pull/8411
- add build option to collect disk read latency statistics by @arvidn in https://github.com/arvidn/libtorrent/pull/8412
- fix connection_tester output by @arvidn in https://github.com/arvidn/libtorrent/pull/8416
- improve tools/run_benchmark.py by @arvidn in https://github.com/arvidn/libtorrent/pull/8417
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8421
- optimize flushing of disk cache in pread_disk_io by @arvidn in https://github.com/arvidn/libtorrent/pull/8422
- add documentation by @arvidn in https://github.com/arvidn/libtorrent/pull/8409
- Tighten HTTP tracker peer parsing by @M-Hassan-Raza in https://github.com/arvidn/libtorrent/pull/8423
- fix race on aborting disk jobs on shutdown by @arvidn in https://github.com/arvidn/libtorrent/pull/8424
- improve try_cache_flush() call by @arvidn in https://github.com/arvidn/libtorrent/pull/8425
- connection_tester: save merkle trees to separate file by @arvidn in https://github.com/arvidn/libtorrent/pull/8427
- Improve benchmark scripts by @arvidn in https://github.com/arvidn/libtorrent/pull/8429
- Mmap v2 block hashes by @arvidn in https://github.com/arvidn/libtorrent/pull/8426
- add missing file and extend CI to detect it by @arvidn in https://github.com/arvidn/libtorrent/pull/8433
- simplify disk_buffer_holder by @arvidn in https://github.com/arvidn/libtorrent/pull/8431
- optimize parsing v2 torrent files (file_tree) by @arvidn in https://github.com/arvidn/libtorrent/pull/8437
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8438
- fix test_resume.cpp when (old) deprecated functions are enabled by @arvidn in https://github.com/arvidn/libtorrent/pull/8439
- remove invalid assert in disk_cache by @arvidn in https://github.com/arvidn/libtorrent/pull/8440
- Benchmark load torrent by @arvidn in https://github.com/arvidn/libtorrent/pull/8443
- extend load_torrent benchmark with more cases by @arvidn in https://github.com/arvidn/libtorrent/pull/8444
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8445
- run tests in 32 bit mode on CI by @arvidn in https://github.com/arvidn/libtorrent/pull/8447
- simplify file_piece_range_inclusive() and file_piece_range_exclusive() by @arvidn in https://github.com/arvidn/libtorrent/pull/8453
- v2 block hashes can be computed concurrently by @arvidn in https://github.com/arvidn/libtorrent/pull/8449
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8457
- fix a concurrency bug in kick_hasher by @arvidn in https://github.com/arvidn/libtorrent/pull/8459
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8464
- update tests in test_checking.cpp to use the new API by @arvidn in https://github.com/arvidn/libtorrent/pull/8468
- fix async_hash bug in pread_disk_io by @arvidn in https://github.com/arvidn/libtorrent/pull/8469
- harden merkle_tree proof validation by @arvidn in https://github.com/arvidn/libtorrent/pull/8466
- Fix web seed Host header ports by @hussainarslan in https://github.com/arvidn/libtorrent/pull/8460
- use the new host_header functions in more places by @arvidn in https://github.com/arvidn/libtorrent/pull/8471
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8472
- Parameterize disk io by @arvidn in https://github.com/arvidn/libtorrent/pull/8470
- test magnet links where the info-hash is updated by @arvidn in https://github.com/arvidn/libtorrent/pull/8473
- use strong flag type in test_metadata_extension.cpp by @arvidn in https://github.com/arvidn/libtorrent/pull/8475
- fix data race in disk_cache::flush_storage() by @arvidn in https://github.com/arvidn/libtorrent/pull/8476
- fix issue counting disk I/O thread in pread_disk_io by @arvidn in https://github.com/arvidn/libtorrent/pull/8477
- improve run_http_suite() by @arvidn in https://github.com/arvidn/libtorrent/pull/8474
- fixup and simplify threads in add_fence_job() by @arvidn in https://github.com/arvidn/libtorrent/pull/8478
- simplify flush_storage() by not making it erase the piece by @arvidn in https://github.com/arvidn/libtorrent/pull/8479
- fix flaky test_flag by @arvidn in https://github.com/arvidn/libtorrent/pull/8480
- increase timeout for expensive (thread-sanitizer) test run by @arvidn in https://github.com/arvidn/libtorrent/pull/8482
- smoke test disk I/O on CI by @arvidn in https://github.com/arvidn/libtorrent/pull/8481
- Pread write fence by @arvidn in https://github.com/arvidn/libtorrent/pull/8467
- fix dead-lock in deferred clear_piece by @arvidn in https://github.com/arvidn/libtorrent/pull/8485
- Parameterize test error handling by @arvidn in https://github.com/arvidn/libtorrent/pull/8484
- Fix unaligned reads by @arvidn in https://github.com/arvidn/libtorrent/pull/8483
- enable pread diskio as the default disk I/O backend by @arvidn in https://github.com/arvidn/libtorrent/pull/8465
- cut 2.1 rc2 by @arvidn in https://github.com/arvidn/libtorrent/pull/8486
- Add Linux CA certificate probing in start_session() by @trim21 in https://github.com/arvidn/libtorrent/pull/8488
- fix race in updating blocked_disk_jobs counter, in disk_job_fence by @arvidn in https://github.com/arvidn/libtorrent/pull/8495
- improve some torrent_alert message strings by @arvidn in https://github.com/arvidn/libtorrent/pull/8506
- address false positive warning with -Wms-bitfield-padding by @arvidn in https://github.com/arvidn/libtorrent/pull/8509
- add fuzzer for SDP offer by @arvidn in https://github.com/arvidn/libtorrent/pull/8510
- fuzzers for parse RTC endpoint and RTC tracker offer by @arvidn in https://github.com/arvidn/libtorrent/pull/8514
- torrent_status::total by @arvidn in https://github.com/arvidn/libtorrent/pull/8524
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8525
- fix use-after-free in uTP failure socket shutdown path by @arvidn in https://github.com/arvidn/libtorrent/pull/8528
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8529
- fix TORRENT_DISK_LATENCY_STATS in cmake file and config.hpp by @arvidn in https://github.com/arvidn/libtorrent/pull/8535
- fix bug in tracker stop request for webRTC by @arvidn in https://github.com/arvidn/libtorrent/pull/8534
- fix clang-tidy warnings, and disable for dependencies by @arvidn in https://github.com/arvidn/libtorrent/pull/8533
- Release CI workflow by @arvidn in https://github.com/arvidn/libtorrent/pull/8536
- handle exception from libdatachannel sendBuffer() by @arvidn in https://github.com/arvidn/libtorrent/pull/8537
- fix edge case causing memory leak in rtc_stream_impl::write_data() by @arvidn in https://github.com/arvidn/libtorrent/pull/8539
- enable webtorrent by default by @arvidn in https://github.com/arvidn/libtorrent/pull/8532
- fix incorrect hint in mmap_storage::write that could cause corruption by @arvidn in https://github.com/arvidn/libtorrent/pull/8542
- upload tarballs for release candidates too by @arvidn in https://github.com/arvidn/libtorrent/pull/8543
- disk_write_mode setting by @arvidn in https://github.com/arvidn/libtorrent/pull/8546
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8547
- fixes related to force-reannounce and priority announce by @arvidn in https://github.com/arvidn/libtorrent/pull/8540
- fix CMake test_rtc.cpp by @arvidn in https://github.com/arvidn/libtorrent/pull/8545
- fix duplicate filenames in magnet links by @arvidn in https://github.com/arvidn/libtorrent/pull/8553
- fix blocking UDP socket in UPnP by @arvidn in https://github.com/arvidn/libtorrent/pull/8555
- improve the minimize script by @arvidn in https://github.com/arvidn/libtorrent/pull/8554
- backport: fix duplicate filenames in magnet links by @arvidn in https://github.com/arvidn/libtorrent/pull/8556
- fix web seed requests for single-file torrents in multi-file mode by @arvidn in https://github.com/arvidn/libtorrent/pull/8559
- fix web seed requests for single-file torrents in multi-file mode by @arvidn in https://github.com/arvidn/libtorrent/pull/8558
- persist BEP-21 upload_only on peer_list entry by @reardonia in https://github.com/arvidn/libtorrent/pull/8519
- fix integer overflow in download_queue_time() by @arvidn in https://github.com/arvidn/libtorrent/pull/8560
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8563
- add test coverage for webtorrent transfer by @arvidn in https://github.com/arvidn/libtorrent/pull/8561
- fix release workflow, to upload the binary by @arvidn in https://github.com/arvidn/libtorrent/pull/8551
- non-blocking UDP socket in LSD and NAT-PMP by @arvidn in https://github.com/arvidn/libtorrent/pull/8566
- Test merge by @arvidn in https://github.com/arvidn/libtorrent/pull/8569
- make sure the peer list is allocated by @arvidn in https://github.com/arvidn/libtorrent/pull/8568
New Contributors
- @neheb made their first contribution in https://github.com/arvidn/libtorrent/pull/4757
- @markmdscott made their first contribution in https://github.com/arvidn/libtorrent/pull/5996
- @Piraty made their first contribution in https://github.com/arvidn/libtorrent/pull/7822
- @bolshoytoster made their first contribution in https://github.com/arvidn/libtorrent/pull/7950
- @jasminsehic made their first contribution in https://github.com/arvidn/libtorrent/pull/8128
- @ademuri made their first contribution in https://github.com/arvidn/libtorrent/pull/8173
- @gtumanyan made their first contribution in https://github.com/arvidn/libtorrent/pull/8235
- @milahu made their first contribution in https://github.com/arvidn/libtorrent/pull/8368
- @trim21 made their first contribution in https://github.com/arvidn/libtorrent/pull/8488
- @reardonia made their first contribution in https://github.com/arvidn/libtorrent/pull/8519
Full Changelog: https://github.com/arvidn/libtorrent/compare/v2.0.13...v2.1.0