Releases: arvidn/libtorrent
Releases · arvidn/libtorrent
v2.1.0-rc1
2.1.0 Release Candidate 1
* 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
* add an experimental multi-threaded, pread()-based, disk I/O backend (pread_disk_io)
* 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
* added support for WebTorrent
Full Changelog: v2.0.12...v2.1.0-rc1
v2.0.12
2.0.12 released
- fix issue where file priorities could be cleared by force recheck
- fix issue in XML parser
- when building against OpenSSL, require at least version 1.1.1
- add setting to set no-copy-on-write flag on new files
- add performance counters to file pool
- add high_priority flag to torrent_handle::force_reannounce()
- update default DSCP value and update docs
- fix python binding for set_notify_function()
- fix error handling in mmap disk I/O when hashing files
- improve copy_file_range() fallback
- don't overwrite existing files when renaming
- add option to send host header in HTTP proxy CONNECT command
- cache DNS failures for a shorter time
- file_renamed_alert is always posted, regardless of alert mask
- add feature to request resume data synchronously
- don't leak file descriptors to child processes (O_CLOEXEC)
- optimize the utp resend
- optimize tracker announcements
- fix handling of invalid filenames
- add support for I2CP inbound.lengthVariance and outbound.lengthVariance tunnel settings
- add natpmp_gateway setting to manually set the default gateway for the NAT-PMP protocol
What's Changed
- fix publish to pypi by @arvidn in #7836
- fix warning in posix_storage and TORRENT_RVO by @arvidn in #7846
- fix assert in bdecode.cpp by @arvidn in #7857
- fix handling of invalid filenames by @arvidn in #7858
- cirrus: Bump freebsd image by @xavier2k6 in #7861
- Bump numerous pre-commit-hook revisions by @xavier2k6 in #7863
- cibuildwheel: Migrate away from deprecated input by @xavier2k6 in #7862
- cirrus: Increment freebsd image by @xavier2k6 in #7870
- AppVeyor: Bump python to 3.8 by @xavier2k6 in #7887
- silence clang warning on BSD build image by @arvidn in #7899
- Suppress msvc C5054 warning by @Chocobo1 in #7888
- Fix arguments of dispatched functions cannot be actually moved by @glassez in #7873
- Optimizations by @arvidn in #7916
- support find_torrent() for v2 torrents by @arvidn in #7921
- Utp resend optimization by @arvidn in #7931
- GHA CI - Windows: Explicitly use
windows-latestby @xavier2k6 in #7932 - Don't leak file descriptors to child processes by @Chocobo1 in #7937
- Python bindings: Revise supported python versions by @xavier2k6 in #7939
- enable android.cloexec check in clang-tidy by @arvidn in #7941
- update ChangeLog by @arvidn in #7944
- Fix use after move by @glassez in #7957
- Improve loading sparse merkle tree by @glassez in #7956
- Add inbound and outbound tunnels length variance in i2p stream settings. by @ljfp in #7942
- Fix wrong variable in CMake by @Chocobo1 in #7951
- PEP 621 Compliance - Add
name&versionfields topyproject.tomlby @xavier2k6 in #7955 - update set_version.py to update pyproject.toml by @arvidn in #7966
- install openssl before building the wheel by @arvidn in #7970
- Bump some pre-commit-hook revs by @xavier2k6 in #7968
- Add ability to get resume data synchronously by @glassez in #7869
- add documentation and changelog entry for get_resume_data() by @arvidn in #7972
- file_renamed_alert by @arvidn in #7975
- cache DNS failures for a shorter time by @arvidn in #7976
- New clang warnings by @arvidn in #7977
- improve error handling in parse_info_section() by @arvidn in #7984
- update manylinux docker scripts by @arvidn in #7971
- add option to send host header in HTTP proxy CONNECT command by @arvidn in #7710
- fix warnings by @arvidn in #7991
- Fix use after move by @glassez in #7997
- fix stack_allocator to fail gracefully when running out of memory by @arvidn in #7998
- bump boost to 1.88 on CI by @arvidn in #7986
- cache stack_allocator's allocation of torrent name by @arvidn in #8000
- improve stack_allocator oom handling by @arvidn in #8002
- GHA CI: bumped
checkoutaction tov5by @xavier2k6 in #8009 - add test for torrent with two invalid directory names by @arvidn in #8010
- don't link against libboost_system explicitly by @arvidn in #8030
- avoid replacing files when renaming by @arvidn in #8028
- Fix backslash handling in filenames on non-Windows systems by @cocopaw in #8014
- fix build issues when disabling i2p support by @arvidn in #8029
- Bump
setup-pythonaction of linux workflow by @xavier2k6 in #8032 - cirrus: Update
freebsd imagetofreebsd-14-3. by @xavier2k6 in #8068 - make copy_file_range() fall back if it fails with ENOSYS by @arvidn in #8071
- search Program Files/OpenSSL/ for OpenSSL on windows runners by @arvidn in #8076
- fix mmap disk I/O error handling when hashing files by @arvidn in #8070
- bump python to 3.14 in MacOS CI by @arvidn in #8075
- update default DSCP value and update docs by @arvidn in #8072
- Update pre-commit-config workflow by @xavier2k6 in #8046
- fix MingW CI workflow by @arvidn in #8078
- fix issue causing CI to run out of disk space by @arvidn in #8081
- Disable SSL3 by @arvidn in #8079
- add high_priority flag to tracker announcements by @arvidn in #8054
- GHA CI: Bump multiple
actionrevs by @xavier2k6 in #8077 - Use Boost 1.90.0 in Windows CI by @xavier2k6 in #8085
- update boost-build links in build documentation by @arvidn in #8094
- enable libc++ hardening with debug-iterators=on by @arvidn in #8095
- fix warning in test_transfer by @arvidn in #8098
- fix simulate slow read by @arvidn in #8097
- modernize run_benchmark and parse_session_stats python scripts by @arvidn in #8101
- Also build & test with newer OS version (10) in Windows CI by @xavier2k6 in #8100
- fix broken request latency measurement by @arvidn in #8102
- fix
run_benchmark.pyby @arvidn in #8105 - add performance counters to file pool by @arvidn in #8106
- in client_test, print performance counters to a separate file by @arvidn in #8107
- add new setting disk_disable_copy_on_write by @arvidn in #8103
- improve parse_session_stats to split long runs into 1-hour slots by @arvidn in #8115
- fix no-copy-on-write flag setting by @arvidn in #8116
- when building against OpenSSL, require at least version 1.1.1 by @arvidn in #8114
- fix issue in XML parser by @arvidn in #8130
- another XML parser edge case by @arvidn in #8134
- Improve compatibility with C++23 by @Chocobo1 in #8136
- fix premature seed detection in is_seed() by @peterdrier in #8122
- Fixed Python CI paths and deprecations by @qstokkink in #8142
- added python 314 compatibility by @HavenCTO in #8138
- disable disk_disable_copy_on_write by default by @database64128 in #8146
- remove bad invariant check by @arvidn in #8148
- Add RC_2_0 Python type st...
libtorrent 2.0.11
What's Changed
- bump version for future release by @arvidn in #7621
- torrent_status::num_pieces counts pieces passed hash check by @arvidn in #7631
- Updated numerous action revisions by @xavier2k6 in #7590
- back-port fixes to brew on CI by @arvidn in #7648
- fix setup.py to not use distutils by @arvidn in #7649
- fix integer overflow in piece picker by @arvidn in #7647
- Send read_piece_alert after piece passes by @YakoYakoYokuYoku in #7642
- test for
set_piece_deadline()by @arvidn in #7652 - default target windows 10 by @arvidn in #7662
- Make anti-leech choker never increase score for dishonesty by @Artoria2e5 in #7658
- fix the compilation failure caused by the failure to find std::max by @zzlhyly in #7664
- bump libsimulator submodule by @arvidn in #7673
- assume copy_file_range() exists on linux (unless old glibc) by @arvidn in #7670
- bump cibuildwheel action to v2.17.0 by @arvidn in #7672
- rely on the openssl version already installed on the runner by @arvidn in #7685
- ask msvc to report the correct C++ version in __cplusplus macro by @arvidn in #7545
- attempt to make CirrusCI job more efficient by @arvidn in #7697
- remove aligned storage, as it's deprecated in C++23 by @arvidn in #7698
- attempt to fix msvc version macro builds by @arvidn in #7709
- GHA workflow update by @arvidn in #7699
- apply DSCP setting to peers before connecting by @arvidn in #7696
- check settings_pack::max_out_request_queue before alert outstanding_r… by @tkittich in #7714
- improve debug facilities of swarm simulations by @arvidn in #7719
- Improve simulator determinism by @arvidn in #7720
- fix issue when closing a uTP connection by @arvidn in #7717
- fix test_copy_file to recognize overlayfs as supporting sparse files. by @arvidn in #7715
- Fix some typos by @xavier2k6 in #7728
- don't discard netlink messages for previously seen addresses by @ssiloti in #7737
- fix pre-allocation when changing priority by @arvidn in #7738
- limit the piece size in create_torrent constructor by @arvidn in #7739
- Updated numerous pre-commit hook revs. by @xavier2k6 in #7723
- fix BEP-40 peer priority for IPv6 by @arvidn in #7743
- GHA CI: Migrate to OpenSSL 3.x by @xavier2k6 in #7746
- minor fix on documentation by @joriscarrier in #7753
- allow connections while checking resume data if no_verify_files flag is set by @e1y4s in #7754
- don't hint
POSIX_FADV_RANDOMby @arvidn in #7758 - fix tests to work on linux ZFS by @arvidn in #7759
- fix bug where file_progress could sometimes be reported as >100% by @arvidn in #7765
- cibuildwheel: Add macOS arm64 support by @xavier2k6 in #7727
- Move construct
std::shared_ptrobjects by @Chocobo1 in #7768 - Bump libsimulator submodule by @0xThiebaut in #7773
- fix performance bug in the file pool by @arvidn in #7779
piece_pickerupdates by @arvidn in #7781- Add announce_port support by @0xThiebaut in #7771
- fix race condition when cancelling requests after becoming a seed by @arvidn in #7787
- abort_download() is OK in any state by @arvidn in #7788
- Bump some pre-commit-hook revs by @xavier2k6 in #7804
- Fix mmap error when reading empty file during resume check on Linux by @Doekin in #7808
- homebrew uses standard name for pre-built boost_system now by @arvidn in #7816
- bump ubuntu version in workflows by @arvidn in #7817
- remove use of std::aligned_union by @arvidn in #7818
- bump version by @arvidn in #7815
- Fix typos by @xavier2k6 in #7820
- add some possible values to the documentation for dht_bootstrap_nodes by @arvidn in #7827
- fix applying IP filter to DHT traffic (HanabishiRecca) by @arvidn in #7829
- cibuildwheel: update workflow by @xavier2k6 in #7805
- add invariant check to
socks5_streamby @arvidn in #7785 - fix fcntl.h warning by @arvidn in #7830
- use stricter rules for what filenames are valid on Android by @arvidn in #7828
- validate add_torrent_params::save_path at run-time by @arvidn in #7826
New Contributors
- @YakoYakoYokuYoku made their first contribution in #7642
- @Artoria2e5 made their first contribution in #7658
- @zzlhyly made their first contribution in #7664
- @tkittich made their first contribution in #7714
- @e1y4s made their first contribution in #7754
- @0xThiebaut made their first contribution in #7773
- @Doekin made their first contribution in #7808
Full Changelog: v2.0.10...v2.0.11
libtorrent 1.2.20
What's Changed
- backport cibuildwheel fix of not running tests in win32 by @arvidn in #7442
- back-port posix timestamps by @stalkerok in #7446
- back-port updating test certs by @arvidn in #7467
- Allow to compile RC_1_2 branch in C++20 mode by @Chocobo1 in #7491
- FIX(peer_list): clear the m_candidate_cache when clear peer_list, and… by @Lwxiang in #7460
- avoid implicit this capture by @arvidn in #7502
- rely on RVO in C++20 by @arvidn in #7504
- (Backport) Treat CGNAT address range as local IPs by @Chocobo1 in #7531
- Allow to change save path without moving any files by @glassez in #7552
- bump python version on github actions to 3.12 by @arvidn in #7583
- Migrate away from deprecated functions in C++23 by @Chocobo1 in #7582
- Clean up MSVC compiler flags by @Chocobo1 in #7615
- fix issue when closing a uTP connection RC_1_2 backport by @arvidn in #7718
- fix piece size check when loading torrents by @arvidn in #7740
- use stricter rules for what filenames are valid on Android by @arvidn in #7832
- update test certs by @arvidn in #7833
- validate add_torrent_params::save_path at run-time by @arvidn in #7825
New Contributors
- @stalkerok made their first contribution in #7446
Full Changelog: v1.2.19...v1.2.20
libtorrent-2.0.10
What's Changed
- don't run win32 tests when building python wheel by @arvidn in #7437
- fix missing python converter for dht::announce_flags_t by @arvidn in #7443
- Bump boost version to enable Python 3.11 package builds by @cas-- in #7445
- cmake: don't define _FILE_OFFSET_BITS on Windows by @lazka in #7449
- update SSL certificates for tests by @arvidn in #7466
- Updated numerous repo addresses & revs of pre-commit-hooks by @arvidn in #7468
- Fixes various typos by @luzpaz in #7482
- Fix dht_announce_interval not being followed accurately in some cases by @thrnz in #7476
- suppress new GCC warning from 3rd party code (openssl) by @arvidn in #7494
- update FreeBSD dependency on boost_build to boost-build by @arvidn in #7495
- README: Remove LGTM badges by @luzpaz in #7500
- Forward port candidate cache by @arvidn in #7496
- hidden dllexport by @arvidn in #7497
- reset_save_path by @arvidn in #7498
- fix unnecessary capture of this in lambda expressions by @arvidn in #7503
- run thread-sanitizer on Ubuntu-22.04 on CI by @arvidn in #7499
- make sure the library builds with C++17 and C++20, in addition to C++14 by @arvidn in #7501
- improve TORRENT_RVO feature detection by @arvidn in #7506
- add python bindings by @rcarpa in #7509
- fix use of python ssl module by @arvidn in #7547
- address issue in boost.asio building on iOS by @arvidn in #7546
- improve checking and testing of max piece size by @arvidn in #7514
- fix MingW64 CI build by @arvidn in #7549
- fix assert in uTP resend_packet() by @arvidn in #7574
- bump python version on github actions to 3.12 by @arvidn in #7579
- Color theme revamp by @sledgehammer999 in #7561
- allow execution of
on_unknown_torrentmethod in the absence of active torrents by @joriscarrier in #7537 - migrate awy from aligned_storage by @arvidn in #7584
- minor fixes by @arvidn in #7581
- allow I2P leaseset encryption type 4 by @Vort in #7585
- Fix the wrong port is being announced to tracker by @glassez in #7596
- Remove obsolete LGTM config file by @xavier2k6 in #7591
- Update Cirrus CI config by @xavier2k6 in #7589
- Restore file priorities in POSIX storage by @HanabishiRecca in #7594
- fix and suppress some new clang warnings util addressed (in master) by @arvidn in #7609
- Reject resume data if it contains mismatching info hashes by @glassez in #7597
- add test coverage for read_resume_data() by @arvidn in #7610
- fix test_copy_file for tmpfs by @arvidn in #7611
- add missing test file to tarball by @arvidn in #7612
- Updated numerous pre-commit hook revs. by @xavier2k6 in #7605
- forward-port of #7615 by @arvidn in #7616
- recreate the SSL test certificates with long expiration time by @arvidn in #7618
- bump version to 2.0.10 by @arvidn in #7619
New Contributors
- @lazka made their first contribution in #7449
- @luzpaz made their first contribution in #7482
- @rcarpa made their first contribution in #7509
- @HanabishiRecca made their first contribution in #7594
Full Changelog: v2.0.9...v2.0.10
libtorrent-2.0.9
Changes since previous release:
- fix issue with web seed connections when they close and re-open
- fallocate() not supported is not a fatal error
- fix proxying of IPv6 connections via IPv4 proxy
- treat CGNAT address range as local IPs
- add stricter checking of piece layers when loading torrents
- add stricter checking of v1 and v2 hashes being consistent
- cache failed DNS lookups as well as successful ones
- add an i2p torrent state to control interactions with clear swarms
- fix i2p SAM protocol parsing of quoted messages
- expose i2p peer destination in peer_info
- fix i2p tracker announces
- fix issue with read_piece() stopping torrent on pieces not yet downloaded
- improve handling of allow_i2p_mixed setting to work for magnet links
- fix web seed request for renamed single-file torrents
- fix issue where web seeds could disappear from resume data
- extend save_resume with additional conditional flags
- fix issue with retrying trackers in tiers > 0
- fix last_upload and last_download resume data fields to use posix time
- improve error messages for no_connect_privileged_ports, by untangle it from the port filter
- fix I2P issue introduced in 2.0.0
- add async tracker status query, post_trackers()
- add async torrent status query, post_status()
- support loading version 2 of resume data format
- fix issue with odd piece sizes
- add async piece availability query, post_piece_availability()
- add async download queue query, post_download_queue()
- add async file_progress query, post_file_progress()
- add async peer_info query, post_peer_info()
libtorrent-1.2.19
Changes since previous version:
- back-port load_torrent_*() functions
- fix issue with odd piece sizes
libtorrent-2.0.8
changes since previous 2.0.x release:
- fix uTP streams timing out instead of closing cleanly
- add write_torrent_file_buf() overload for generating .torrent files
- add create_torrent::generate_buf() function to generate into a buffer
- fix copy_file when the file ends with a sparse region
- uTP performance, fix packet loss when sending is stalled
- fix trackers being stuck after session pause/resume
- fix bug in hash_picker with empty files
- uTP performance, prevent premature timeouts/resends
- add option to not memory map files below a certain size
- settings_pack now returns default values when queried for missing settings
- fix copy_file fall-back when SEEK_HOL/SEEK_DATA is not supported
- improve error reporting from file copy and move
- tweak pad file placement to match reference implementation (tail-padding)
- uTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
- uTP performance, piggy-back held back undersized packet with ACKs
- uTP performance, don't send redundant deferred ACKs
- support incoming SOCKS5 packets with hostnames as source address, for UDP trackers
- ignore duplicate network interface change notifications on linux
- fix total_want/want accounting when forcing a recheck
- fix merging metadata with magnet links added on top of existing torrents
- add torrent_flag to default all file priorities to dont_download
- fix &so= feature in magnet links
- improve compatibility of SOCKS5 UDP ASSOCIATE
- fix madvise range for flushing cache in mmap_storage
- open files with no_cache set in O_SYNC mode
libtorrent-1.2.18
Changes since previous 1.2.x release.
- fix issue where stop-when-ready would not close files
- uTP performance, fix packet loss when sending is stalled
- uTP performance, prevent premature timeouts/resends
- uTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
- uTP performance, piggy-back held back undersized packet with ACKs
- uTP performance, don't send redundant deferred ACKs
- fix wanted_done/done accounting when force-rechecking
- expose userdata via torrent_handle (back-port from 2.0)
- fix renaming of filenames that are too long for the filesystem
- made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)
libtorrent-2.0.7
Changes since last release:
- fix issue in use of copy_file_range() on linux
- avoid open-file race in the file_view_pool
- fix issue where stop-when-ready would not close files
- fix issue with duplicate hybrid torrent via separate v1 and v2 magnet links
- added new function to load torrent files, load_torrent_*()
- support sync_file_range() on linux
- fix issue in write_torrent_file() when file size is exactly piece size
- fix file_num_blocks() and file_num_pieces() for empty files
- add new overload to make_magnet_uri()
- add missing protocol version to tracker_reply_alert and tracker_error_alert
- fix privilege issue with SetFileValidData()
- add asynchronous overload of torrent_handle::add_piece()
- default to a single hashing thread, for full checks
- Fix bug when checking files and the first piece is invalid
As well as changes merged in from the 1.2.x branch:
- fixed tracker connections spinning when hostname lookups stall
- fixed error in pkg-config file generation in Jamfile
- improve backwards compatibility with loading magnet link resume files
- fix bind-to-device for tracker announces and UPnP
- rename peer_tos setting to peer_dscp
- fix bdecode support for large strings (>= 100 MB)