libtorrent

an efficient feature complete C++ bittorrent implementation

OTHER License

Stars
5.2K

Bot releases are hidden (Show)

libtorrent - libtorrent-1.2.10

Published by arvidn about 4 years ago

Fixes since last stable release:

  • fix regression in python binding for move_storage()
  • improve stat_file() performance on Windows
  • fix issue with loading invalid torrents with only 0-sized files
  • fix to avoid large stack allocations
libtorrent - libtorrent-2.0.0-RC3

Published by arvidn about 4 years ago

Major changes since 2.0 RC2:

  • restored backwards compatibility with info_hash fields (introducing the v2-compatible info_hash_t as "info_hashes" instead). This is a major fix to ease upgrade. This brings libtorrent 2.0 much closer to being fully source compatible with 1.2.x. The custom storage API is the main part whose API has changed.
  • dropped dependency on iconv
  • dropped deprecated wstring overloads of some functions
  • merged change from 1.2.x to drop Unicode-licensed code (for Debian compatibility)
  • the soname of the libtorrent library is "2.0" and will be . going forward.
libtorrent - libtorrent-1.2.9

Published by arvidn about 4 years ago

1.2.9 released

  • add macro TORRENT_CXX11_ABI for clients building with C++14 against
    libtorrent build with C++11
  • refreshed m4 scripts for autotools
  • removed deprecated wstring overloads on non-windows systems
  • drop dependency on Unicode's ConvertUTF code (which had a license
    incompatible with Debian)
  • fix bugs exposed on big-endian systems
  • fix detection of hard-links not being supported by filesystem
  • fixed resume data regression for seeds with prio 0 files
libtorrent - libtorrent-1.2.8

Published by arvidn about 4 years ago

Changes since the previous stable release:

  • validate UTF-8 encoding of client version strings from peers
  • don't time out tracker announces as eagerly while resolving hostnames
  • fix NAT-PMP shutdown issue
  • improve hostname lookup by merging identical lookups
  • fix network route enumeration for large routing tables
  • fixed issue where pop_alerts() could return old, invalid alerts
  • fix issue when receiving have-all message before the metadata
  • don't leave lingering part files handles open
  • disallow calling add_piece() during checking
  • fix incorrect filename truncation at multi-byte character
  • always announce listen port 1 when using a proxy
libtorrent - libtorrent-2.0.0-RC2

Published by arvidn about 4 years ago

In this 2nd release candidate of libtorrent-2.0, a fair number of issues has been fixed in the 1.2.x branch and been merged into the 2.0 one.

One notable update is an overhaul of the documentation, a pre-release of it can be found here.

The updated changelog for libtorrent-2.0 is:

  • deprecate set_file_hash() in torrent creator, as it's superceded by v2 torrents
  • deprecate mutable access to info_section in torrent_info
  • removed deprecated lazy_entry/lazy_bdecode
  • stats_alert deprecated
  • remove bittyrant choking algorithm
  • update userdata in add_torrent_params to be type-safe and add to torrent_handle
  • add ip_filter to session_params
  • added support for wolfSSL for SHA-1 hash and HTTPS (no Torrents over SSL)
  • requires OpenSSL minimum version 1.0.0 with SNI support
  • deprecated save_state() and load_state() on session in favour of new
    write_session_params() and read_session_params()
  • added support for BitTorrent v2 (see docs/upgrade_to_2.0.html)
  • create_torrent() pad_file_limit parameter removed
  • create_torrent() merkle- and optimize-alignment flags removed
  • merkle_tree removed from add_torrent_params
  • announce_entry expose information per v1 and v2 info-hash announces
  • torrent_removed_alert, torrent_deleted_alert, torrent_delete_failed_alert: info_hash member is no longer a sha-1 hash, but (deprecated) implicitly convertible to one
  • undeprecate error_file_metadata for torrent errors related to its metadata
  • remove support for adding a torrent under a UUID (used for previous RSS support)
  • remove deprecated feature to add torrents by file:// URL
  • remove deprecated feature to download .torrent file from URL
  • requires boost >= 1.66 to build
  • update networking API to networking TS compatible boost.asio
  • overhauled disk I/O subsystem to use memory mapped files (where available)
  • libtorrent now requires C++14 to build
  • added support for GnuTLS for HTTPS and torrents over SSL

As well as new fixes merged in from 1.2.8:

  • don't time out tracker announces as eagerly while resolving hostnames
  • fix NAT-PMP shutdown issue
  • improve hostname lookup by merging identical lookups
  • fix network route enumeration for large routing tables
  • fixed issue where pop_alerts() could return old, invalid alerts
  • fix issue when receiving have-all message before the metadata
  • don't leave lingering part files handles open
  • disallow calling add_piece() during checking
  • fix incorrect filename truncation at multi-byte character
  • always announce listen port 1 when using a proxy
libtorrent - libtorrent-2.0.0-RC

Published by arvidn over 4 years ago

2.0 Release Candidate

  • deprecate mutable access to info_section in torrent_info
  • removed deprecated lazy_entry/lazy_bdecode
  • stats_alert deprecated
  • remove bittyrant choking algorithm
  • update userdata in add_torrent_params to be type-safe and add to torrent_handle
  • add ip_filter to session_params
  • added support for wolfSSL for SHA-1 hash and HTTPS (no Torrents over SSL)
  • requires OpenSSL minimum version 1.0.0 with SNI support
  • deprecated save_state() and load_state() on session in favour of new
    write_session_params() and read_session_params()
  • added support for BitTorrent v2 (see docs/upgrade_to_2.0.html)
  • create_torrent() pad_file_limit parameter removed
  • create_torrent() merkle- and optimize-alignment flags removed
  • merkle_tree removed from add_torrent_params
  • announce_entry expose information per v1 and v2 info-hash announces
  • torrent_removed_alert, torrent_deleted_alert, torrent_delete_failed_alert: info_hash member is no longer a sha-1 hash, but (deprecated) implicitly convertible to one
  • undeprecate error_file_metadata for torrent errors related to its metadata
  • remove support for adding a torrent under a UUID (used for previous RSS support)
  • remove deprecated feature to add torrents by file:// URL
  • remove deprecated feature to download .torrent file from URL
  • requires boost >= 1.66 to build
  • update networking API to networking TS compatible boost.asio
  • overhauled disk I/O subsystem to use memory mapped files (where available)
  • libtorrent now requires C++14 to build
  • added support for GnuTLS for HTTPS and torrents over SSL
libtorrent - libtorrent-1.2.7

Published by arvidn over 4 years ago

1.2.7 released

  • add set_alert_fd in python binding, to supersede set_alert_notify
  • fix bug in part files > 2 GiB
  • add function to clear the peer list for a torrent
  • fix resume data functions to save/restore more torrent flags
  • limit number of concurrent HTTP announces
  • fix queue position for force_rechecking a torrent that is not auto-managed
  • improve rate-based choker documentation, and minor tweak
  • undeprecate upnp_ignore_nonrouters (but refering to devices on our subnet)
  • increase default tracker timeout
  • retry failed socks5 server connections
  • allow UPnP lease duration to be changed after device discovery
  • fix IPv6 address change detection on Windows
libtorrent - libtorrent-1.2.6

Published by arvidn over 4 years ago

1.2.6 released

  • fix peer timeout logic
  • simplify proxy handling. A proxy now overrides listen_interfaces
  • fix issues when configured to use a non-default choking algorithm
  • fix issue in reading resume data
  • revert NXDOMAIN change from 1.2.4
  • don't open any listen sockets if listen_interfaces is empty or misconfigured
  • fix bug in auto disk cache size logic
  • fix issue with outgoing_interfaces setting, where bind() would be called twice
  • add build option to disable share-mode
  • support validation of HTTPS trackers
  • deprecate strict super seeding mode
  • make UPnP port-mapping lease duration configurable
  • deprecate the bittyrant choking algorithm
  • add build option to disable streaming
libtorrent - libtorrent-1.2.5

Published by arvidn over 4 years ago

1.2.5 release

  • announce port=1 instead of port=0, when there is no listen port
  • fix LSD over IPv6
  • support TCP_NOTSENT_LOWAT on Linux
  • fix correct interface binding of local service discovery multicast
  • fix issue with knowing which interfaces to announce to trackers and DHT
  • undeprecate settings_pack::dht_upload_rate_limit
libtorrent - libtorrent-1.2.4

Published by arvidn over 4 years ago

Changes since previous release:

  • fix binding TCP and UDP sockets to the same port, when specifying port 0
  • fix announce_to_all_trackers and announce_to_all_tiers behavior
  • fix suggest_read_cache setting
  • back-off tracker hostname looksups resulting in NXDOMAIN
  • lower SOCKS5 UDP keepalive timeout
  • fix external IP voting for multi-homed DHT nodes
  • deprecate broadcast_lsd setting. Just use multicast
  • deprecate upnp_ignore_nonrouters setting
  • don't attempt sending event=stopped if event=start never succeeded
  • make sure &key= stays consistent between different source IPs (as mandated by BEP7)
  • fix binding sockets to outgoing interface
  • add new socks5_alert to trouble shoot SOCKS5 proxies
libtorrent - libtorrent-1.2.3

Published by arvidn almost 5 years ago

1.2.3 release

  • fix erroneous event=completed tracker announce when checking files
  • promote errors in parsing listen_interfaces to post listen_failed_alert
  • fix bug in protocol encryption/obfuscation
  • fix buffer overflow in SOCKS5 UDP logic
  • fix issue of rapid calls to file_priority() clobbering each other
  • clear tracker errors on success
  • optimize setting with unlimited unchoke slots
  • fixed restoring of trackers, comment, creation date and created-by in resume data
  • fix handling of torrents with too large pieces
  • fixed division by zero in anti-leech choker
  • fixed bug in torrent_info::swap
libtorrent - libtorrent-1.1.14

Published by arvidn almost 5 years ago

1.1.14 release

  • support building with new boost version
  • add handling on invalid piece index to torrent_handle::have_piece()
  • fix error in treatment of move_storage() flags
  • fix division by zero in anti-leech choker
  • fix chunked http header validation
  • fix use-after-free in SSL shutdown
  • fix possible leak entry when assigning from bdecode_node or lazy_entry
  • fix error handling of moving storage to a drive letter that isn't mounted
  • fix bug in python binding parsing file_priorities from add_torrent_params
  • fix target hostname in http connections using http proxy
libtorrent - libtorrent 1.2.2

Published by arvidn about 5 years ago

1.2.2 release

  • fix cases where the disable_hash_checks setting was not honored
  • fix updating of is_finished torrent status, when changing piece priorities
  • fix regression in &left= reporting when adding a seeding torrent
  • fix integer overflow in http parser
  • improve sanitation of symlinks, to support more complex link targets
  • add DHT routing table affinity for BEP 42 nodes
  • add torrent_info constructor overloads to control torrent file limits
  • feature to disable DHT, PEX and LSD per torrent
  • fix issue where trackers from magnet links were not included in create_torrent()
  • make peer_info::client a byte array in python binding
  • pick contiguous pieces from peers with high download rate
  • fix error handling of moving storage to a drive letter that isn't mounted
  • fix HTTP Host header when using proxy
libtorrent - libtorrent 1.2.1

Published by arvidn over 5 years ago

1.2.1 release

  • add dht_pkt_alert and alerts_dropped_alert to python bindings
  • fix python bindins for block_uploaded_alert
  • optimize resolving duplicate filenames in loading torrent files
  • fix python binding of dht_settings
  • tighten up various input validation checks
  • fix create_torrent python binding
  • update symlinks to conform to BEP 47
  • fix python bindings for peer_info
  • support creating symlinks, for torrents with symlinks in them
  • fix error in seed_mode flag
  • support magnet link parameters with number siffixes
  • consistently use "lt" namespace in examples and documentation
  • fix Mingw build to use native cryptoAPI
  • uPnP/NAT-PMP errors no longer set the client's advertised listen port to zero
libtorrent - libtorrent-1.1.13

Published by arvidn over 5 years ago

  • fix sock_type_t python binding
  • tighten up various input validation checks
  • replace use of boost-endian with boost-predef
libtorrent - libtorrent-1.2.0

Published by arvidn almost 6 years ago

1.2 is a major upgrade from the 1.1.x series. It is not ABI compatible with 1.1.x.

Most prominent changes are:

  • requires boost >= 1.58 to build
  • require C++11 to build
  • improved support for listening on multiple sockets and interfaces
  • announce_entry no longer represents a single tracker IP, but has a list of endpoints announced to. This is to support multi-homed clients.
  • introduce introduce distinct types for peer_class_t, piece_index_t and file_index_t. They implicitly convert to raw integers, but the conversion is deprecated.
  • alert types are no longer copyable and ownership is never transferred to clients
  • deprecated alert::progress_notification alert category, split into finer grained categories
  • deprecate identify_client() and fingerprint type
  • deprecated public to_hex() and from_hex() functions
  • remove deprecate session_settings API (use settings_pack instead)
  • transitioned exception types to system_error
  • move files one-by-one when moving storage for a torrent
  • removed RSS support
  • removed feature to resolve country for peers

More on changes to API that are not backwards compatible can be found here.

Rest of the changelog:

  • tweak heuristic of how to interpret url seeds in multi-file torrents
  • support &ipv4= tracker argument for private torrents
  • renamed debug_notification to connect_notification
  • when updating listen sockets, only post alerts for new ones
  • deprecate anonymous_mode_alert
  • deprecated force_proxy setting (when set, the proxy is always used)
  • add support for Port Control Protocol (PCP)
  • deliver notification of alerts being dropped via alerts_dropped_alert
  • update plugin interface functions for improved type-safety
  • implemented support magnet URI extension, select specific file indices for download, BEP53
  • make tracker keys multi-homed. remove set_key() function on session.
  • add flags()/set_flags()/unset_flags() to torrent_handle, deprecate individual functions
  • added alert for block being sent to the send buffer
  • drop support for windows compilers without std::wstring
  • implemented support for DHT infohash indexing, BEP51
  • removed deprecated support for file_base in file_storage
  • added support for running separate DHT nodes on each network interface
  • added support for establishing UTP connections on any network interface
  • added support for sending tracker announces on every network interface
  • introduce "lt" namespace alias
  • need_save_resume_data() will no longer return true every 15 minutes
  • make the file_status interface explicitly public types
  • added resolver_cache_timeout setting for internal host name resolver
  • make parse_magnet_uri take a string_view instead of std::string
  • deprecate add_torrent_params::url field. use parse_magnet_uri instead
  • optimize download queue management
  • deprecated (undocumented) file:// urls
  • add limit for number of web seed connections
  • added support for retrieval of DHT live nodes
  • complete UNC path support
  • add packets pool allocator
  • remove disk buffer pool allocator
  • fix last_upload and last_download overflow after 9 hours in past
  • python binding add more add_torrent_params fields and an invalid key check
  • fix crash caused by empty bitfield
  • removed disk-access-log build configuration
  • removed mmap_cache feature
  • strengthened type safety in handling of piece and file indices
  • make sequence number for mutable DHT items backed by std::int64_t
  • tweaked storage_interface to have stronger type safety
  • deprecate relative times in torrent_status, replaced by std::chrono::time_point
  • refactor in alert types to use more const fields and more clear API
  • changed session_stats_alert counters type to signed (std::int64_t)
  • remove torrent eviction/ghost torrent feature
  • include target in DHT lookups, when queried from the session
  • improve support for HTTP redirects for web seeds
  • use string_view in entry interface
  • deprecate "send_stats" property on trackers (since lt_tracker extension has been removed)
  • improve file layout optimization when creating torrents with padfiles
  • remove remote_dl_rate feature
  • source code migration from boost::shared_ptr to std::shared_ptr
  • storage_interface API changed to use span and references
  • changes in public API to work with std::shared_ptr<torrent_info>
  • extensions API changed to use span and std::shared_ptr
  • plugin API changed to handle DHT requests using string_view
  • removed support for lt_trackers and metadata_transfer extensions (pre-dating ut_metadata)
  • support windows' CryptoAPI for SHA-1
  • separated ssl and crypto options in build
  • remove lazy-bitfield feature
  • simplified suggest-read-cache feature to not depend on disk threads
  • removed option to disable contiguous receive buffers
  • separated address and port fields in listen alerts
  • added support for parsing new x.pe parameter from BEP 9
  • peer_blocked_alert now derives from peer_alert
  • made alerts move-only
  • added support for BEP 32, "IPv6 extension for DHT"
  • overhauled listen socket and UDP socket handling, improving multi-home support and bind-to-device
  • resume data is now communicated via add_torrent_params objects
  • added new read_resume_data()/write_resume_data functions to write bencoded, backwards compatible resume files
  • removed deprecated fields from add_torrent_params
  • deprecate "resume_data" field in add_torrent_params
  • improved support for bind-to-device
  • deprecated ssl_listen, SSL sockets are specified in listen_interfaces now
  • resume data no longer has timestamps of files
libtorrent - libtorrent-1.1.12

Published by arvidn almost 6 years ago

1.1.12 release

  • uTP performance fixes
libtorrent - libtorrent-1.2-RC2

Published by arvidn almost 6 years ago

This is a release candidate of libtorrent 1.2.0, not a final release.
This version is ABI incompatible with the 1.1.x releases.
With libtorrent 1.2.0, C++11 is required to build and in some cases the API has been altered as well. Mostly to use standard C++ types instead of boost types, but also to use more modern vocabulary types like string_view and span.

The main changes affecting the API are documented here.

The main differences since RC1 are:

  • span type now use std::ptrdiff_t for size and indices, aligned with gsl::span
  • the old (slow) bdecode() function has been deprecated

The updates since the latest stable release are:

  • support &ipv4= tracker argument for private torrents
  • renamed debug_notification to connect_notification
  • when updating listen sockets, only post alerts for new ones
  • deprecate anonymous_mode_alert
  • deprecated force_proxy setting (when set, the proxy is always used)
  • add support for Port Control Protocol (PCP)
  • deliver notification of alerts being dropped via alerts_dropped_alert
  • deprecated alert::progress_notification alert category, split into
    finer grained categories
  • update plugin interface functions for improved type-safety
  • implemented support magnet URI extension, select specific file indices
    for download, BEP53
  • make tracker keys multi-homed. remove set_key() function on session.
  • add flags()/set_flags()/unset_flags() to torrent_handle, deprecate individual functions
  • added alert for block being sent to the send buffer
  • drop support for windows compilers without std::wstring
  • implemented support for DHT infohash indexing, BEP51
  • removed deprecated support for file_base in file_storage
  • added support for running separate DHT nodes on each network interface
  • added support for establishing UTP connections on any network interface
  • added support for sending tracker announces on every network interface
  • introduce "lt" namespace alias
  • need_save_resume_data() will no longer return true every 15 minutes
  • make the file_status interface explicitly public types
  • added resolver_cache_timeout setting for internal host name resolver
  • make parse_magnet_uri take a string_view instead of std::string
  • deprecate add_torrent_params::url field. use parse_magnet_uri instead
  • optimize download queue management
  • deprecated (undocumented) file:// urls
  • add limit for number of web seed connections
  • added support for retrieval of DHT live nodes
  • complete UNC path support
  • add packets pool allocator
  • remove disk buffer pool allocator
  • fix last_upload and last_download overflow after 9 hours in past
  • python binding add more add_torrent_params fields and an invalid key check
  • introduce introduce distinct types for peer_class_t, piece_index_t and
    file_index_t.
  • fix crash caused by empty bitfield
  • removed disk-access-log build configuration
  • removed mmap_cache feature
  • strengthened type safety in handling of piece and file indices
  • deprecate identify_client() and fingerprint type
  • make sequence number for mutable DHT items backed by std::int64_t
  • tweaked storage_interface to have stronger type safety
  • deprecate relative times in torrent_status, replaced by std::chrono::time_point
  • refactor in alert types to use more const fields and more clear API
  • changed session_stats_alert counters type to signed (std::int64_t)
  • remove torrent eviction/ghost torrent feature
  • include target in DHT lookups, when queried from the session
  • improve support for HTTP redirects for web seeds
  • use string_view in entry interface
  • deprecate "send_stats" property on trackers (since lt_tracker extension has
    been removed)
  • remove deprecate session_settings API (use settings_pack instead)
  • improve file layout optimization when creating torrents with padfiles
  • remove remote_dl_rate feature
  • source code migration from boost::shared_ptr to std::shared_ptr
  • storage_interface API changed to use span and references
  • changes in public API to work with std::shared_ptr<torrent_info>
  • extensions API changed to use span and std::shared_ptr
  • plugin API changed to handle DHT requests using string_view
  • removed support for lt_trackers and metadata_transfer extensions
    (pre-dating ut_metadata)
  • support windows' CryptoAPI for SHA-1
  • separated ssl and crypto options in build
  • remove lazy-bitfield feature
  • simplified suggest-read-cache feature to not depend on disk threads
  • removed option to disable contiguous receive buffers
  • deprecated public to_hex() and from_hex() functions
  • separated address and port fields in listen alerts
  • added support for parsing new x.pe parameter from BEP 9
  • peer_blocked_alert now derives from peer_alert
  • transitioned exception types to system_error
  • made alerts move-only
  • move files one-by-one when moving storage for a torrent
  • removed RSS support
  • removed feature to resolve country for peers
  • added support for BEP 32, "IPv6 extension for DHT"
  • overhauled listen socket and UDP socket handling, improving multi-home
    support and bind-to-device
  • resume data is now communicated via add_torrent_params objects
  • added new read_resume_data()/write_resume_data functions to write bencoded,
    backwards compatible resume files
  • removed deprecated fields from add_torrent_params
  • deprecate "resume_data" field in add_torrent_params
  • improved support for bind-to-device
  • deprecated ssl_listen, SSL sockets are specified in listen_interfaces now
  • improved support for listening on multiple sockets and interfaces
  • resume data no longer has timestamps of files
  • require C++11 to build libtorrent
libtorrent - libtorrent-1.1.11

Published by arvidn almost 6 years ago

  • fix move_storage with save_path with a trailing slash
  • fix tracker announce issue, advertising port 0 in secondary IPv6 announce
  • fix missing boost/noncopyable.hpp includes
  • fix python binding for torrent_info::creation_date()
libtorrent - libtorrent-1.2.0-RC

Published by arvidn about 6 years ago

This is a release candidate of libtorrent 1.2.0, not a final release.
This version is ABI incompatible with the 1.1.x releases.
With libtorrent 1.2.0, C++11 is required to build and in some cases the API has been altered as well. Mostly to use standard C++ types instead of boost types, but also to use more modern vocabulary types like string_view and span.

The main changes affecting the API are documented here.

The major highlights in this update are:

  • improved support for multi-homed systems. It is now possible to specify multiple listen interfaces. The DHT also supports multiple instances, one per interface.
  • cleanup of anonymous-mode and force proxy interactions. proxy settings are now always honoured, whether they work or not.
  • resume data has been simplified by separating serializing/deserializing from adding torrents (read_resume_data()/write_resume_data()). This gives clients more control over exactly what resume data and stats gets saved and restored.
  • cleaned up API by removing internal functions from public API.
  • introduced strong types in public API, for referring to piece indices, file indices as well as flag types. These will still implicitly convert to and from naked integrals as long as deprecated functions are enabled (to ease transition).
  • The groundwork has been laid to improve link safety by introducing inline namespaces, indicating the ABI version of the library. libtorrent types can no longer be declared in client translation units, instead include <libtorrent/fwd.hpp>
  • in libtorrent 1.1.x the performance of alerts were significantly boosted by allocating them in a contiguous buffer. libtorrent 1.2 takes the next step and removes the ability to clone alert objects (which was deprecated in 1.1)
  • many functions that previously took std::string objects, now take lt::string_view (which is meant to be similar to std::string_view).
  • plugin extensions at the session level now has to subscribe to have hooks called on it. This is a measure to improve scalability of extensions.

Full changelog since the 1.1.10 stable release

* renamed debug_notification to connect_notification
* when updating listen sockets, only post alerts for new ones
* deprecate anonymous_mode_alert
* deprecated force_proxy setting (when set, the proxy is always used)
* add support for Port Control Protocol (PCP)
* deliver notification of alerts being dropped via alerts_dropped_alert
* deprecated alert::progress_notification alert category, split into
  finer grained categories
* update plugin interface functions for improved type-safety
* implemented support magnet URI extension, select specific file indices
  for download, BEP53
* make tracker keys multi-homed. remove set_key() function on session.
* add flags()/set_flags()/unset_flags() to torrent_handle, deprecate individual functions
* added alert for block being sent to the send buffer
* drop support for windows compilers without std::wstring
* implemented support for DHT infohash indexing, BEP51
* removed deprecated support for file_base in file_storage
* added support for running separate DHT nodes on each network interface
* added support for establishing UTP connections on any network interface
* added support for sending tracker announces on every network interface
* introduce "lt" namespace alias
* need_save_resume_data() will no longer return true every 15 minutes
* make the file_status interface explicitly public types
* added resolver_cache_timeout setting for internal host name resolver
* make parse_magnet_uri take a string_view instead of std::string
* deprecate add_torrent_params::url field. use parse_magnet_uri instead
* optimize download queue management
* deprecated (undocumented) file:// urls
* add limit for number of web seed connections
* added support for retrieval of DHT live nodes
* complete UNC path support
* add packets pool allocator
* remove disk buffer pool allocator
* fix last_upload and last_download overflow after 9 hours in past
* python binding add more add_torrent_params fields and an invalid key check
* introduce introduce distinct types for peer_class_t, piece_index_t and
  file_index_t.
* fix crash caused by empty bitfield
* removed disk-access-log build configuration
* removed mmap_cache feature
* strengthened type safety in handling of piece and file indices
* deprecate identify_client() and fingerprint type
* make sequence number for mutable DHT items backed by std::int64_t
* tweaked storage_interface to have stronger type safety
* deprecate relative times in torrent_status, replaced by std::chrono::time_point
* refactor in alert types to use more const fields and more clear API
* changed session_stats_alert counters type to signed (std::int64_t)
* remove torrent eviction/ghost torrent feature
* include target in DHT lookups, when queried from the session
* improve support for HTTP redirects for web seeds
* use string_view in entry interface
* deprecate "send_stats" property on trackers (since lt_tracker extension has
  been removed)
* remove deprecate session_settings API (use settings_pack instead)
* improve file layout optimization when creating torrents with padfiles
* remove remote_dl_rate feature
* source code migration from boost::shared_ptr to std::shared_ptr
* storage_interface API changed to use span and references
* changes in public API to work with std::shared_ptr<torrent_info>
* extensions API changed to use span and std::shared_ptr
* plugin API changed to handle DHT requests using string_view
* removed support for lt_trackers and metadata_transfer extensions
  (pre-dating ut_metadata)
* support windows' CryptoAPI for SHA-1
* separated ssl and crypto options in build
* remove lazy-bitfield feature
* simplified suggest-read-cache feature to not depend on disk threads
* removed option to disable contiguous receive buffers
* deprecated public to_hex() and from_hex() functions
* separated address and port fields in listen alerts
* added support for parsing new x.pe parameter from BEP 9
* peer_blocked_alert now derives from peer_alert
* transitioned exception types to system_error
* made alerts move-only
* move files one-by-one when moving storage for a torrent
* removed RSS support
* removed feature to resolve country for peers
* added support for BEP 32, "IPv6 extension for DHT"
* overhauled listen socket and UDP socket handling, improving multi-home
  support and bind-to-device
* resume data is now communicated via add_torrent_params objects
* added new read_resume_data()/write_resume_data functions to write bencoded,
  backwards compatible resume files
* removed deprecated fields from add_torrent_params
* deprecate "resume_data" field in add_torrent_params
* improved support for bind-to-device
* deprecated ssl_listen, SSL sockets are specified in listen_interfaces now
* improved support for listening on multiple sockets and interfaces
* resume data no longer has timestamps of files
* require C++11 to build libtorrent