2.0.12

	* 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

2.0.11 released

	* validate add_torrent_params::save_path at run-time
	* use stricter rules for what filenames are valid on Android
	* fix applying IP filter to DHT traffic (HanabishiRecca)
	* fix race condition when cancelling requests after becoming a seed
	* fix performance bug in the file pool, evicting MRU instead of LRU (HanabishiRecca)
	* fix bug where file_progress could sometimes be reported as >100%
	* don't hint FADV_RANDOM on posix systems. May improve seeding performance
	* allow boost connect while checking resume data if no_verify_files flag is set
	* fix BEP-40 peer priority for IPv6
	* limit piece size in torrent creator
	* fix file pre-allocation when changing file priority (HanabishiRecca)
	* fix uTP issue where closing the connection could corrupt the payload
	* apply DSCP/TOS to sockets before initiating the TCP connection
	* assume copy_file_range() exists on linux (unless old glibc)
	* fix issue where set_piece_deadline() did not correctly post read_piece_alert
	* fix integer overflow in piece picker
	* torrent_status::num_pieces counts pieces passed hash check, as documented
	* check settings_pack::max_out_request_queue before performance alert
	* add announce_port setting to override the port announced to trackers

2.0.10 released

	* allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
	* add feature to async_move_storage() to not move files
	* fix reject resume data if it contains mismatching info hashes
	* fix clear the candidate_cache when clear peer_list
	* fix missing python converter for dht::announce_flags_t

2.0.9 released

	* 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()

2.0.8 released

	* 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

* 2.0.7 released

	* 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

* 2.0.6 released

	* fix issue creating a v2 torrent from torrent_info containing an empty file
	* make recheck files also update which files use partfile
	* add write_through disk_io_write_mode, which flushes pieces to disk immediately
	* improve copy file function to preserve sparse regions (when supported)
	* add function to truncate over-sized files part of a torrent
	* fix directory creation on windows shared folders
	* add flag to make add_files() not record file attributes
	* deprecate (unused) allow_partial_disk_writes settings
	* fix disk-full error reporting in mmap_disk_io
	* fixed similar-torrents feature for v2 torrents
	* fix potential unbounded recursion in add_completed_job, in disk I/O
	* deprecated (unused) volatile_read_cache setting
	* fix part files being marked as hidden on windows

* 2.0.5 released

	* on windows, explicitly flush memory mapped files periodically
	* fix build with WolfSSL
	* fix issue where incoming uTP connections were not accepted over SOCKS5
	* fix several issues in handling of checking files of v2 torrents, esp. from magnet links
	* make the token limit when parsing metadata from magnet files configurable
	* fix issue with stalled pieces on disk full errors
	* fix missing python binding for file_progress_flags
	* fix torrent_file_with_hashes() to fail when we don't have the piece layers
	* restore path character encoding conversion for non UTF-8 locales on linux
	* fix use-after-free bug in make_magnet_uri
	* add write_torrent_file() to produce a .torrent file from add_torrent_params
	* allow loading v2 .torrent files without piece layer
	* fix issue with adding v2 torrents with invalid file root hash

* 2.0.4 released

	* fix piece picker bug causing double-picks with prefer-contiguous enabled
	* expose session_params in python bindings
	* fix (deprecated) use of add_torrent_params::info_hash
	* fix issue creating and loading v2 torrents with empty files. Improves
	  conformance to BEP52 reference implementation

* 2.0.3 released

	* add new torrent_file_with_hashes() which includes piece layers for
	  creating .torrent files
	* add file_prio_alert, posted when file priorities are updated
	* fix issue where set_piece_hashes() would not propagate file errors
	* add missing python binding for event_t
	* add work-around for systems without fseeko() (such as Android)
	* add convenience header libtorrent/libtorrent.hpp
	* increase default max_allowed_in_request_queue
	* fix loading non-ascii filenames on windows with torrent_info constructor (2.0 regression)
	* add std::hash<> specialization for info_hash_t
	* fix integer overflow in hash_picker and properly restrict max file sizes in torrents
	* strengthen SSRF mitigation for web seeds

* 2.0.2 released

	* add v1() and v2() functions to torrent_info
	* fix piece_layers() to work for single-piece files
	* fix python binding regression in session constructor flags
	* fix unaligned piece requests in mmap_storage
	* improve client_data_t ergonomics
	* fix issue with concurrent access to part files

* 2.0.1 released

	* fix attribute in single-file v2 torrent creation
	* fix padding for empty files in v2 torrent creation
	* add function to ask a file_storage whether it's v2 or not
	* fix mtime field when creating single-file v2 torrents
	* fix performance regression in checking files
	* disable use of SetFileValidData() by default (windows). A new setting
	  allows enabling it

2.0 released

	* dropped dependency on iconv
	* deprecate set_file_hash() in torrent creator, as it's superseded 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
	* deprecated sha1_hash info_hash members on torrent_removed_alert,
	  torrent_deleted_alert, torrent_delete_failed_alert and add_torrent_params
	* 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


	* 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)

1.2.17 released

	* 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)

1.2.16 released

	* send User-Agent field in anonymous mode
	* fix python binding for settings_pack conversion
	* fix DHT announce timer issue
	* use DSCP_TRAFFIC_TYPE socket option on windows
	* update default ToS setting according to RFC 8622
	* keep trying to announce to trackers even when all fail
	* don't disable announcing from local endpoints because of temporary failures
	* fix issue in parsing UPnP XML response with multiple forwarding services

1.2.15 released

	* cache DNS lookups for SOCKS5 proxy
	* fix stalled pieces on disk-full errors
	* fix build configuration issue on NetBSD, OpenBSD and DragonFly
	* make UTF-8 sanitization a bit stricter. This will re-write invalid UTF-8
	  code points encoding surrogate pairs
	* fix restoring last_seen_complete from resume data
	* fix issue on MacOS where the DHT was not restarted on a network-up notification
	* make remove_torrent flags be treated as flags (instead of an enum)

1.2.14 released

	* improve handling of seed flag in PEX messages
	* fix issue of accruing unlimited DHT node candidates when DHT is disabled
	* fix bug in parsing chunked encoding
	* fix incorrect reporting of active_duration when entering graceful-pause
	* fix python binding for functions taking string_view
	* fix python binding for torrent_info constructor overloads
	* issue python deprecation warnings for some deprecated functions in the python bindings
	* fix python binding for torrent_info::add_url_seed, add_tracker and add_http_seed

1.2.13 released

	* Use /etc/ssl/cert.pem to validate HTTPS connections on MacOS
	* allow no-interest timeouts of peer connections before all connections slots are full
	* fix issue where a DHT message would count as an incoming connection
	* fix issue when failing to parse outgoing_interfaces setting
	* fix super-seeding issue that could cause a segfault
	* fix data race in python binding of session::get_torrent_status()
	* fix need_save_resume_data() for renaming files, share-mode, upload-mode,
	  disable- pex, lsd, and dht.
	* fix incoming TCP connections when using tracker-only proxy
	* fix issue with paths starting with ./
	* fix integer overflow when setting a high DHT upload rate limit
	* improve Path MTU discovery logic in uTP
	* fix overflow issue when rlimit_nofile is set to infinity
	* fix issue in python binding interpreting int settings > INT_MAX
	* Fix cxxflags and linkflags injection via environment variables

1.2.12 released

	* fix loading of DHT node ID from previous session on startup
	* use getrandom(), when available, and fall back to /dev/urandom
	* fix python binding for "value" in dht put alerts
	* fix bug in python binding for dht_put_mutable_item
	* fix uTP issue acking FIN packets
	* validate HTTPS certificates by default (trackers and web seeds)
	* load SSL certificates from windows system certificate store, to authenticate trackers
	* introduce mitigation for Server Side Request Forgery in tracker and web seed URLs
	* fix error handling for pool allocation failure

1.2.11 released

	* fix issue with moving the session object
	* deprecate torrent_status::allocating. This state is no longer used
	* fix bug creating torrents with symbolic links
	* remove special case to save metadata in resume data unconditionally when added through magnet link
	* fix bugs in mutable-torrent support (reusing identical files from different torrents)
	* fix incorrectly inlined move-assignment of file_storage
	* add session::paused flag, and the ability to construct a session in paused mode
	* fix session-pause causing tracker announces to fail
	* fix peer-exchange flags bug
	* allow saving resume data before metadata has been downloaded (for magnet links)
	* record blocks in the disk queue as downloaded in the resume data
	* fix bug in set_piece_deadline() when set in a zero-priority piece
	* fix issue in URL parser, causing issues with certain tracker URLs
	* use a different error code than host-unreachable, when skipping tracker announces

1.2.10 released

	* 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

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

1.2.8 released

	* 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

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 referring 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

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

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

1.2.4 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

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

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

1.2.1 release

	* add dht_pkt_alert and alerts_dropped_alert to python bindings
	* fix python bindings 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 suffixes
	* 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

1.2 release

	* requires boost >= 1.58 to build
	* 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
	* 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 info hash 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

	* replace use of boost-endian with boost-predef

1.1.12 release

	* uTP performance fixes

1.1.11 release

	* 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()

1.1.10 release

	* fix issue in udp_socket with unusual socket failure
	* split progress_notification alert category into file-, piece- and block progress
	* utp close-reason fix
	* exposed default add_torrent_params flags to python bindings
	* fix redundant flushes of partfile metadata
	* add option to ignore min-interval from trackers on force-reannounce
	* raise default setting for active_limit
	* fall back to copy+remove if rename_file fails
	* improve handling of filesystems not supporting fallocate()
	* force-proxy no longer disables DHT
	* improve connect-boost feature, to make new torrents quickly connect peers

1.1.9 release

	* save both file and piece priorities in resume file
	* added missing stats_metric python binding
	* uTP connections are no longer exempt from rate limits by default
	* fix exporting files from partfile while seeding
	* fix potential deadlock on Windows, caused by performing restricted
	  tasks from within DllMain
	* fix issue when subsequent file priority updates cause torrent to stop

1.1.8 release

	* coalesce reads and writes by default on windows
	* fixed disk I/O performance of checking hashes and creating torrents
	* fix race condition in part_file
	* fix part_file open mode compatibility test
	* fixed race condition in random number generator
	* fix race condition in stat_cache (disk storage)
	* improve error handling of failing to change file priority
	  The API for custom storage implementations was altered
	* set the hidden attribute when creating the part file
	* fix tracker announces reporting more data downloaded than the size of the torrent
	* fix recent regression with force_proxy setting

1.1.7 release

	* don't perform DNS lookups for the DHT bootstrap unless DHT is enabled
	* fix issue where setting file/piece priority would stop checking
	* expose post_dht_stats() to python binding
	* fix backwards compatibility to downloads without partfiles
	* improve part-file related error messages
	* fix reporting &redundant= in tracker announces
	* fix tie-break in duplicate peer connection disconnect logic
	* fix issue with SSL tracker connections left in CLOSE_WAIT state
	* defer truncating existing files until the first time we write to them
	* fix issue when receiving a torrent with 0-sized padfiles as magnet link
	* fix issue resuming 1.0.x downloads with a file priority 0
	* fix torrent_status::next_announce
	* fix pad-file scalability issue
	* made coalesce_reads/coalesce_writes settings take effect on linux and windows
	* use unique peer_ids per connection
	* fix iOS build on recent SDK
	* fix tracker connection bind issue for IPv6 trackers
	* fix error handling of some merkle torrents
	* fix error handling of unsupported hard-links

1.1.6 release

	* deprecate save_encryption_settings (they are part of the normal settings)
	* add getters for peer_class_filter and peer_class_type_filter
	* make torrent_handler::set_priority() to use peer_classes
	* fix support for boost-1.66 (requires C++11)
	* fix i2p support
	* fix loading resume data when in seed mode
	* fix part-file creation race condition
	* fix issue with initializing settings on session construction
	* fix issue with receiving interested before metadata
	* fix IPv6 tracker announce issue
	* restore path sanitization behavior of ":"
	* fix listen socket issue when disabling "force_proxy" mode
	* fix full allocation failure on APFS

1.1.5 release

	* fix infinite loop when parsing certain invalid magnet links
	* fix parsing of torrents with certain invalid filenames
	* fix leak of torrent_peer objects (entries in peer_list)
	* fix leak of peer_class objects (when setting per-torrent rate limits)
	* expose peer_class API to python binding
	* fix integer overflow in whole_pieces_threshold logic
	* fix uTP path MTU discovery issue on windows (DF bit was not set correctly)
	* fix python binding for torrent_handle, to be hashable
	* fix IPv6 tracker support by performing the second announce in more cases
	* fix utf-8 encoding check in torrent parser
	* fix infinite loop when parsing maliciously crafted torrents
	* fix invalid read in parse_int in bdecoder (CVE-2017-9847)
	* fix issue with very long tracker- and web seed URLs
	* don't attempt to create empty files on startup, if they already exist
	* fix force-recheck issue (new files would not be picked up)
	* fix inconsistency in file_priorities and override_resume_data behavior
	* fix paused torrents not generating a state update when their ul/dl rate
	  transitions to zero

1.1.4 release

	* corrected missing const qualifiers on bdecode_node
	* fix changing queue position of paused torrents (1.1.3 regression)
	* fix re-check issue after move_storage
	* handle invalid arguments to set_piece_deadline()
	* move_storage did not work for torrents without metadata
	* improve shutdown time by only announcing to trackers whose IP we know
	* fix python3 portability issue in python binding
	* delay 5 seconds before reconnecting socks5 proxy for UDP ASSOCIATE
	* fix NAT-PMP crash when removing a mapping at the wrong time
	* improve path sanitization (filter unicode text direction characters)
	* deprecate partial_piece_info::piece_state
	* bind upnp requests to correct local address
	* save resume data when removing web seeds
	* fix proxying of https connections
	* fix race condition in disk I/O storage class
	* fix http connection timeout on multi-homed hosts
	* removed dependency on boost::uintptr_t for better compatibility
	* fix memory leak in the disk cache
	* fix double free in disk cache
	* forward declaring libtorrent types is discouraged. a new fwd.hpp header is provided

1.1.3 release

	* removed (broken) support for incoming connections over socks5
	* restore announce_entry's timestamp fields to posix time in python binding
	* deprecate torrent_added_alert (in favor of add_torrent_alert)
	* fix python binding for parse_magnet_uri
	* fix minor robustness issue in DHT bootstrap logic
	* fix issue where torrent_status::num_seeds could be negative
	* document deprecation of dynamic loading/unloading of torrents
	* include user-agent in tracker announces in anonymous_mode for private torrents
	* add support for IPv6 peers from udp trackers
	* correctly URL encode the IPv6 argument to trackers
	* fix default file pool size on windows
	* fix bug where settings_pack::file_pool_size setting was not being honored
	* add feature to periodically close files (to make windows clear disk cache)
	* fix bug in torrent_handle::file_status
	* fix issue with peers not updated on metadata from magnet links

1.1.2 release

	* default TOS marking to 0x20
	* fix invalid access when leaving seed-mode with outstanding hash jobs
	* fix ABI compatibility issue introduced with preformatted entry type
	* add web_seed_name_lookup_retry to session_settings
	* slightly improve proxy settings backwards compatibility
	* add function to get default settings
	* updating super seeding would include the torrent in state_update_alert
	* fix issue where num_seeds could be greater than num_peers in torrent_status
	* finished non-seed torrents can also be in super-seeding mode
	* fix issue related to unloading torrents
	* fixed finished-time calculation
	* add missing min_memory_usage() and high_performance_seed() settings presets to python
	* fix stat cache issue that sometimes would produce incorrect resume data
	* storage optimization to peer classes
	* fix torrent name in alerts of builds with deprecated functions
	* make torrent_info::is_valid() return false if torrent failed to load
	* fix per-torrent rate limits for >256 peer classes
	* don't load user_agent and peer_fingerprint from session_state
	* fix file rename issue with name prefix matching torrent name
	* fix division by zero when setting tick_interval > 1000
	* fix move_storage() to its own directory (would delete the files)
	* fix socks5 support for UDP
	* add setting urlseed_max_request_bytes to handle large web seed requests
	* fix python build with CC/CXX environment
	* add trackers from add_torrent_params/magnet links to separate tiers
	* fix resumedata check issue with files with priority 0
	* deprecated mmap_cache feature
	* add utility function for generating peer ID fingerprint
	* fix bug in last-seen-complete
	* remove file size limit in torrent_info filename constructor
	* fix tail-padding for last file in create_torrent
	* don't send user-agent in metadata http downloads or UPnP requests when
	  in anonymous mode
	* fix internal resolve links lookup for mutable torrents
	* hint DHT bootstrap nodes of actual bootstrap request

1.1.1 release

	* update puff.c for gzip inflation (CVE-2016-7164)
	* add dht_bootstrap_node a setting in settings_pack (and add default)
	* make pad-file and symlink support conform to BEP47
	* fix piece picker bug that could result in division by zero
	* fix value of current_tracker when all tracker failed
	* deprecate lt_trackers extension
	* remove load_asnum_db and load_country_db from python bindings
	* fix crash in session::get_ip_filter when not having set one
	* fix filename escaping when repairing torrents with broken web seeds
	* fix bug where file_completed_alert would not be posted unless file_progress
	  had been queries by the client
	* move files one-by-one when moving storage for a torrent
	* fix bug in enum_net() for BSD and Mac
	* fix bug in python binding of announce_entry
	* fixed bug related to flag_merge_resume_http_seeds flag in add_torrent_params
	* fixed inverted priority of incoming piece suggestions
	* optimize allow-fast logic
	* fix issue where FAST extension messages were not used during handshake
	* fixed crash on invalid input in http_parser
	* upgraded to libtommath 1.0
	* fixed parsing of IPv6 endpoint with invalid port character separator
	* added limited support for new x.pe parameter from BEP 9
	* fixed dht stats counters that weren't being updated
	* make sure add_torrent_alert is always posted before other alerts for
	  the torrent
	* fixed peer-class leak when settings per-torrent rate limits
	* added a new "preformatted" type to bencode entry variant type
	* improved Socks5 support and test coverage
	* fix set_settings in python binding
	* Added missing alert categories in python binding
	* Added dht_get_peers_reply_alert alert in python binding
	* fixed updating the node id reported to peers after changing IPs

1.1.0 release

	* improve robustness and performance of uTP PMTU discovery
	* fix duplicate ACK issue in uTP
	* support filtering which parts of session state are loaded by load_state()
	* deprecate support for adding torrents by HTTP URL
	* allow specifying which tracker to scrape in scrape_tracker
	* tracker response alerts from user initiated announces/scrapes are now
	  posted regardless of alert mask
	* improve DHT performance when changing external IP (primarily affects
	  bootstrapping).
	* add feature to stop torrents immediately after checking files is done
	* make all non-auto managed torrents exempt from queuing logic, including
	  checking torrents.
	* add option to not proxy tracker connections through proxy
	* removed sparse-regions feature
	* support using 0 disk threads (to perform disk I/O in network thread)
	* removed deprecated handle_alert template
	* enable logging build config by default (but alert mask disabled by default)
	* deprecated RSS API
	* experimental support for BEP 38, "mutable torrents"
	* replaced lazy_bdecode with a new bdecoder that's a lot more efficient
	* deprecate time functions, expose typedefs of boost::chrono in the
	  libtorrent namespace instead
	* deprecate file_base feature in file_storage/torrent_info
	* changed default piece and file priority to 4 (previously 1)
	* improve piece picker support for reverse picking (used for snubbed peers)
	  to not cause priority inversion for regular peers
	* improve piece picker to better support torrents with very large pieces
	  and web seeds. (request large contiguous ranges, but not necessarily a
	  whole piece).
	* deprecated session_status and session::status() in favor of performance
	  counters.
	* improve support for HTTP where one direction of the socket is shut down.
	* remove internal fields from web_seed_entry
	* separate crypto library configuration <crypto> and whether to support
	  bittorrent protocol encryption <encryption>
	* simplify bittorrent protocol encryption by just using internal RC4
	  implementation.
	* optimize copying torrent_info and file_storage objects
	* cancel non-critical DNS lookups when shutting down, to cut down on
	  shutdown delay.
	* greatly simplify the debug logging infrastructure. logs are now delivered
	  as alerts, and log level is controlled by the alert mask.
	* removed auto_expand_choker. use rate_based_choker instead
	* optimize UDP tracker packet handling
	* support SSL over uTP connections
	* support web seeds that resolve to multiple IPs
	* added auto-sequential feature. download well-seeded torrents in-order
	* removed built-in GeoIP support (this functionality is orthogonal to
	  libtorrent)
	* deprecate proxy settings in favor of regular settings
	* deprecate separate settings for peer protocol encryption
	* support specifying listen interfaces and outgoing interfaces as device
	  names (eth0, en2, tun0 etc.)
	* support for using purgrable memory as disk cache on Mac OS.
	* be more aggressive in corking sockets, to coalesce messages into larger
	  packets.
	* pre-emptively unchoke peers to save one round-trip at connection start-up.
	* add session constructor overload that takes a settings_pack
	* torrent_info is no longer an intrusive_ptr type. It is held by shared_ptr.
	  This is a non-backwards compatible change
	* move listen interface and port to the settings
	* move use_interfaces() to be a setting
	* extend storage interface to allow deferred flushing and flush the part-file
	  metadata periodically
	* make statistics propagate instantly rather than on the second tick
	* support for partfiles, where partial pieces belonging to skipped files are
	  put
	* support using multiple threads for socket operations (especially useful for
	  high performance SSL connections)
	* allow setting rate limits for arbitrary peer groups. Generalizes
	  per-torrent rate limits, and local peer limits
	* improved disk cache complexity O(1) instead of O(log(n))
	* add feature to allow storing disk cache blocks in an mmapped file
	  (presumably on an SSD)
	* optimize peer connection distribution logic across torrents to scale
	  better with many torrents
	* replaced std::map with boost::unordered_map for torrent list, to scale
	  better with many torrents
	* optimized piece picker
	* optimized disk cache
	* optimized .torrent file parsing
	* optimized initialization of storage when adding a torrent
	* added support for adding torrents asynchronously (for improved startup
	  performance)
	* added support for asynchronous disk I/O
	* almost completely changed the storage interface (for custom storage)
	* added support for hashing pieces in multiple threads

	* fix padfile issue
	* fix PMTUd bug
	* update puff to fix gzip crash

1.0.10 release

	* fixed inverted priority of incoming piece suggestions
	* fixed crash on invalid input in http_parser
	* added a new "preformatted" type to bencode entry variant type
	* fix division by zero in super-seeding logic

1.0.9 release

	* fix issue in checking outgoing interfaces (when that option is enabled)
	* python binding fix for boost-1.60.0
	* optimize enumeration of network interfaces on windows
	* improve reliability of binding listen sockets
	* support SNI in https web seeds and trackers
	* fix unhandled exception in DHT when receiving a DHT packet over IPv6

1.0.8 release

	* fix bug where web seeds were not used for torrents added by URL
	* fix support for symlinks on windows
	* fix long filename issue (on unixes)
	* fixed performance bug in DHT torrent eviction
	* fixed win64 build (GetFileAttributesEx)
	* fixed bug when deleting files for magnet links before they had metadata

1.0.7 release

	* fix bug where loading settings via load_state() would not trigger all
	  appropriate actions
	* fix bug where 32 bit builds could use more disk cache than the virtual
	  address space (when set to automatic)
	* fix support for torrents with > 500'000 pieces
	* fix ip filter bug when banning peers
	* fix IPv6 IP address resolution in URLs
	* introduce run-time check for torrent info-sections being too large
	* fix web seed bug when using proxy and proxy-peer-connections=false
	* fix bug in magnet link parser
	* introduce add_torrent_params flags to merge web seeds with resume data
	  (similar to trackers)
	* fix bug where dont_count_slow_torrents could not be disabled
	* fix fallocate hack on linux (fixes corruption on some architectures)
	* fix auto-manage bug with announce to tracker/lsd/dht limits
	* improve DHT routing table to not create an unbalanced tree
	* fix bug in uTP that would cause any connection taking more than one second
	  to connect be timed out (introduced in the vulnerability path)
	* fixed falling back to sending UDP packets direct when socks proxy fails
	* fixed total_wanted bug (when setting file priorities in add_torrent_params)
	* fix python3 compatibility with sha1_hash

1.0.6 release

	* fixed uTP vulnerability
	* make utf8 conversions more lenient
	* fix loading of piece priorities from resume data
	* improved seed-mode handling (seed-mode will now automatically be left when
	  performing operations implying it's not a seed)
	* fixed issue with file priorities and override resume data
	* fix request queue size performance issue
	* slightly improve UDP tracker performance
	* fix http scrape
	* add missing port mapping functions to python binding
	* fix bound-checking issue in bdecoder
	* expose missing dht_settings fields to python
	* add function to query the DHT settings
	* fix bug in 'dont_count_slow_torrents' feature, which would start too many
	  torrents

1.0.5 release

	* improve ip_voter to avoid flapping
	* fixed bug when max_peerlist_size was set to 0
	* fix issues with missing exported symbols when building dll
	* fix division by zero bug in edge case while connecting peers

1.0.4 release

	* fix bug in python binding for file_progress on torrents with no metadata
	* fix assert when removing a connected web seed
	* fix bug in tracker timeout logic
	* switch UPnP post back to HTTP 1.1
	* support conditional DHT get
	* OpenSSL build fixes
	* fix DHT scrape bug

1.0.3 release

	* python binding build fix for boost-1.57.0
	* add --enable-export-all option to configure script, to export all symbols
	  from libtorrent
	* fix if_nametoindex build error on windows
	* handle overlong utf-8 sequences
	* fix link order bug in makefile for python binding
	* fix bug in interest calculation, causing premature disconnects
	* tweak flag_override_resume_data semantics to make more sense (breaks
	  backwards compatibility of edge-cases)
	* improve DHT bootstrapping and periodic refresh
	* improve DHT maintenance performance (by pinging instead of full lookups)
	* fix bug in DHT routing table node-id prefix optimization
	* fix incorrect behavior of flag_use_resume_save_path
	* fix protocol race-condition in super seeding mode
	* support read-only DHT nodes
	* remove unused partial hash DHT lookups
	* remove potentially privacy leaking extension (non-anonymous mode)
	* peer-id connection ordering fix in anonymous mode
	* mingw fixes

1.0.2 release

	* added missing force_proxy to python binding
	* anonymous_mode defaults to false
	* make DHT DOS detection more forgiving to bursts
	* support IPv6 multicast in local service discovery
	* simplify CAS function in DHT put
	* support IPv6 traffic class (via the TOS setting)
	* made uTP re-enter slow-start after time-out
	* fixed uTP upload performance issue
	* fix missing support for DHT put salt

1.0.1 release

	* fix alignment issue in bitfield
	* improved error handling of gzip
	* fixed crash when web seeds redirect
	* fix compiler warnings

1.0 release

	* fix bugs in convert_to/from_native() on windows
	* fix support for web servers not supporting keepalive
	* support storing save_path in resume data
	* don't use full allocation on network drives (on windows)
	* added clear_piece_deadlines() to remove all piece deadlines
	* improve queuing logic of inactive torrents (dont_count_slow_torrents)
	* expose optimistic unchoke logic to plugins
	* fix issue with large UDP packets on windows
	* remove set_ratio() feature
	* improve piece_deadline/streaming
	* honor pieces with priority 7 in sequential download mode
	* simplified building python bindings
	* make ignore_non_routers more forgiving in the case there are no UPnP
	  devices at a known router. Should improve UPnP compatibility.
	* include reason in peer_blocked_alert
	* support magnet links wrapped in .torrent files
	* rate limiter optimization
	* rate limiter overflow fix (for very high limits)
	* non-auto-managed torrents no longer count against the torrent limits
	* handle DHT error responses correctly
	* allow force_announce to only affect a single tracker
	* add moving_storage field to torrent_status
	* expose UPnP and NAT-PMP mapping in session object
	* DHT refactoring and support for storing arbitrary data with put and get
	* support building on android
	* improved support for web seeds that don't support keep-alive
	* improve DHT routing table to return better nodes (lower RTT and closer
	  to target)
	* don't use pointers to resume_data and file_priorities in
	  add_torrent_params
	* allow moving files to absolute paths, out of the download directory
	* make move_storage more generic to allow both overwriting files as well
	  as taking existing ones
	* fix choking issue at high upload rates
	* optimized rate limiter
	* make disk cache pool allocator configurable
	* fix library ABI to not depend on logging being enabled
	* use hex encoding instead of base32 in create_magnet_uri
	* include name, save_path and torrent_file in torrent_status, for
	  improved performance
	* separate anonymous mode and force-proxy mode, and tighten it up a bit
	* add per-tracker scrape information to announce_entry
	* report errors in read_piece_alert
	* DHT memory optimization
	* improve DHT lookup speed
	* improve support for windows XP and earlier
	* introduce global connection priority for improved swarm performance
	* make files deleted alert non-discardable
	* make built-in sha functions not conflict with libcrypto
	* improve web seed hash failure case
	* improve DHT lookup times
	* uTP path MTU discovery improvements
	* optimized the torrent creator optimizer to scale significantly better
	  with more files
	* fix uTP edge case where udp socket buffer fills up
	* fix nagle implementation in uTP

	* fix bug in error handling in protocol encryption

0.16.18 release

	* fix uninitialized values in DHT DOS mitigation
	* fix error handling in file::phys_offset
	* fix bug in HTTP scrape response parsing
	* enable TCP keepalive for socks5 connection for UDP associate
	* fix python3 support
	* fix bug in lt_donthave extension
	* expose i2p_alert to python. cleaning up of i2p connection code
	* fixed overflow and download performance issue when downloading at high rates
	* fixed bug in add_torrent_alert::message for magnet links
	* disable optimistic disconnects when connection limit is low
	* improved error handling of session::listen_on
	* suppress initial 'completed' announce to trackers added with replace_trackers
	  after becoming a seed
	* SOCKS4 fix for trying to connect over IPv6
	* fix saving resume data when removing all trackers
	* fix bug in udp_socket when changing socks5 proxy quickly

0.16.17 release

	* don't fall back on wildcard port in UPnP
	* fix local service discovery for magnet links
	* fix bitfield issue in file_storage
	* added work-around for MingW issue in file I/O
	* fixed sparse file detection on windows
	* fixed bug in gunzip
	* fix to use proxy settings when adding .torrent file from URL
	* fix resume file issue related to daylight savings time on windows
	* improve error checking in lazy_bdecode

0.16.16 release

	* add missing add_files overload to the python bindings
	* improve error handling in http gunzip
	* fix debug logging for banning web seeds
	* improve support for de-selected files in full allocation mode
	* fix dht_bootstrap_alert being posted
	* SetFileValidData fix on windows (prevents zero-fill)
	* fix minor lock_files issue on unix

0.16.15 release

	* fix mingw time_t 64 bit issue
	* fix use of SetFileValidData on windows
	* fix crash when using full allocation storage mode
	* improve error_code and error_category support in python bindings
	* fix python binding for external_ip_alert

0.16.14 release

	* make lt_tex more robust against bugs and malicious behavior
	* HTTP chunked encoding fix
	* expose file_granularity flag to python bindings
	* fix DHT memory error
	* change semantics of storage allocation to allocate on first write rather
	  than on startup (behaves better with changing file priorities)
	* fix resend logic in response to uTP SACK messages
	* only act on uTP RST packets with correct ack_nr
	* make uTP errors log in normal log mode (not require verbose)
	* deduplicate web seed entries from torrent files
	* improve error reporting from lazy_decode()

0.16.13 release

	* fix auto-manage issue when pausing session
	* fix bug in non-sparse mode on windows, causing incorrect file errors to
	  be generated
	* fix set_name() on file_storage actually affecting save paths
	* fix large file support issue on mingw
	* add some error handling to set_piece_hashes()
	* fix completed-on timestamp to not be clobbered on each startup
	* fix deadlock caused by some UDP tracker failures
	* fix potential integer overflow issue in timers on windows
	* minor fix to peer_proportional mixed_mode algorithm (TCP limit could go
	  too low)
	* graceful pause fix
	* i2p fixes
	* fix issue when loading certain malformed .torrent files
	* pass along host header with http proxy requests and possible
	  http_connection shutdown hang

0.16.12 release

	* fix building with C++11
	* fix IPv6 support in UDP socket (uTP)
	* fix mingw build issues
	* increase max allowed outstanding piece requests from peers
	* uTP performance improvement. only fast retransmit one packet at a time
	* improve error message for 'file too short'
	* fix piece-picker stat bug when only selecting some files for download
	* fix bug in async_add_torrent when settings file_priorities
	* fix boost-1.42 support for python bindings
	* fix memory allocation issue (virtual address space waste) on windows

0.16.11 release

	* fix web seed URL double escape issue
	* fix string encoding issue in alert messages
	* fix SSL authentication issue
	* deprecate std::wstring overloads. long live utf-8
	* improve time-critical pieces feature (streaming)
	* introduce bandwidth exhaustion attack-mitigation in allowed-fast pieces
	* python binding fix issue where torrent_info objects where destructing when
	  their torrents were deleted
	* added missing field to scrape_failed_alert in python bindings
	* GCC 4.8 fix
	* fix proxy failure semantics with regards to anonymous mode
	* fix round-robin seed-unchoke algorithm
	* add bootstrap.sh to generate configure script and run configure
	* fix bug in SOCK5 UDP support
	* fix issue where torrents added by URL would not be started immediately

0.16.10 release

	* fix encryption level handle invalid values
	* add a number of missing functions to the python binding
	* fix typo in Jamfile for building shared libraries
	* prevent tracker exchange for magnet links before metadata is received
	* fix crash in make_magnet_uri when generating links longer than 1024
	  characters
	* fix hanging issue when closing files on windows (completing a download)
	* fix piece picking edge case that could cause torrents to get stuck at
	  hash failure
	* try unencrypted connections first, and fall back to encryption if it
	  fails (performance improvement)
	* add missing functions to python binding (flush_cache(), remap_files()
	  and orig_files())
	* improve handling of filenames that are invalid on windows
	* support 'implied_port' in DHT announce_peer
	* don't use pool allocator for disk blocks (cache may now return pages
	  to the kernel)

0.16.9 release

	* fix long filename truncation on windows
	* distinguish file open mode when checking files and downloading/seeding
	  with bittorrent. updates storage interface
	* improve file_storage::map_file when dealing with invalid input
	* improve handling of invalid utf-8 sequences in strings in torrent files
	* handle more cases of broken .torrent files
	* fix bug filename collision resolver
	* fix bug in filename utf-8 verification
	* make need_save_resume() a bit more robust
	* fixed sparse flag manipulation on windows
	* fixed streaming piece picking issue

0.16.8 release

	* make rename_file create missing directories for new filename
	* added missing python function: parse_magnet_uri
	* fix alerts.all_categories in python binding
	* fix torrent-abort issue which would cancel name lookups of other torrents
	* make torrent file parser reject invalid path elements earlier
	* fixed piece picker bug when using pad-files
	* fix read-piece response for cancelled deadline-pieces
	* fixed file priority vector-overrun
	* fix potential packet allocation alignment issue in utp
	* make 'close_redudnant_connections' cover more cases
	* set_piece_deadline() also unfilters the piece (if its priority is 0)
	* add work-around for bug in windows vista and earlier in
	  GetOverlappedResult
	* fix traversal algorithm leak in DHT
	* fix string encoding conversions on windows
	* take torrent_handle::query_pieces into account in torrent_handle::statue()
	* honor trackers responding with 410
	* fixed merkle tree torrent creation bug
	* fixed crash with empty url-lists in torrent files
	* added missing max_connections() function to python bindings

0.16.7 release

	* fix string encoding in error messages
	* handle error in read_piece and set_piece_deadline when torrent is removed
	* DHT performance improvement
	* attempt to handle ERROR_CANT_WAIT disk error on windows
	* improve peers exchanged over PEX
	* fixed rare crash in ut_metadata extension
	* fixed files checking issue
	* added missing pop_alerts() to python bindings
	* fixed typos in configure script, inversing some feature-enable/disable flags
	* added missing flag_update_subscribe to python bindings
	* active_dht_limit, active_tracker_limit and active_lsd_limit now
	  interpret -1 as infinite

0.16.6 release

	* fixed verbose log error for NAT holepunching
	* fix a bunch of typos in python bindings
	* make get_settings available in the python binding regardless of
	  deprecated functions
	* fix typo in python settings binding
	* fix possible dangling pointer use in peer list
	* fix support for storing arbitrary data in the DHT
	* fixed bug in uTP packet circle buffer
	* fix potential crash when using torrent_handle::add_piece
	* added missing add_torrent_alert to python binding

0.16.5 release

	* udp socket refcounter fix
	* added missing async_add_torrent to python bindings
	* raised the limit for bottled http downloads to 2 MiB
	* add support for magnet links and URLs in python example client
	* fixed typo in python bindings' add_torrent_params
	* introduce a way to add built-in plugins from python
	* consistently disconnect the same peer when two peers simultaneously connect
	* fix local endpoint queries for uTP connections
	* small optimization to local peer discovery to ignore our own broadcasts
	* try harder to bind the udp socket (uTP, DHT, UDP-trackers, LSD) to the
	  same port as TCP
	* relax file timestamp requirements for accepting resume data
	* fix performance issue in web seed downloader (coalescing of blocks
	  sometimes wouldn't work)
	* web seed fixes (better support for torrents without trailing / in
	  web seeds)
	* fix some issues with SSL over uTP connections
	* fix UDP trackers trying all endpoints behind the hostname

0.16.4 release

	* raise the default number of torrents allowed to announce to trackers
	  to 1600
	* improve uTP slow start behavior
	* fixed UDP socket error causing it to fail on Win7
	* update use of boost.system to not use deprecated functions
	* fix GIL issue in python bindings. Deprecated extension support in python
	* fixed bug where setting upload slots to -1 would not mean infinite
	* extend the UDP tracker protocol to include the request string from the
	  tracker URL
	* fix mingw build for linux crosscompiler

0.16.3 release

	* fix python binding backwards compatibility in replace_trackers
	* fix possible starvation in metadata extension
	* fix crash when creating torrents and optimizing file order with pad files
	* disable support for large MTUs in uTP until it is more reliable
	* expose post_torrent_updates and state_update_alert to python bindings
	* fix incorrect SSL error messages
	* fix windows build of shared library with openssl
	* fix race condition causing shutdown hang

0.16.2 release

	* fix permissions issue on linux with noatime enabled for non-owned files
	* use random peer IDs in anonymous mode
	* fix move_storage bugs
	* fix unnecessary dependency on boost.date_time when building boost.asio as separate compilation
	* always use SO_REUSEADDR and deprecate the flag to turn it on
	* add python bindings for SSL support
	* minor uTP tweaks
	* fix end-game mode issue when some files are selected to not be downloaded
	* improve uTP slow start
	* make uTP less aggressive resetting cwnd when idle

0.16.1 release

	* fixed crash when providing corrupt resume data
	* fixed support for boost-1.44
	* fixed reversed semantics of queue_up() and queue_down()
	* added missing functions to python bindings (file_priority(), set_dht_settings())
	* fixed low_prio_disk support on linux
	* fixed time critical piece accounting in the request queue
	* fixed semantics of rate_limit_utp to also ignore per-torrent limits
	* fixed piece sorting bug of deadline pieces
	* fixed python binding build on Mac OS and BSD
	* fixed UNC path normalization (on windows, unless UNC paths are disabled)
	* fixed possible crash when enabling multiple connections per IP
	* fixed typo in win vista specific code, breaking the build
	* change default of rate_limit_utp to true
	* fixed DLL export issue on windows (when building a shared library linking statically against boost)
	* fixed FreeBSD build
	* fixed web seed performance issue with pieces > 1 MiB
	* fixed unchoke logic when using web seeds
	* fixed compatibility with older versions of boost (down to boost 1.40)

0.16 release

	* support torrents with more than 262000 pieces
	* make tracker back-off configurable
	* don't restart the swarm after downloading metadata from magnet links
	* lower the default tracker retry intervals
	* support banning web seeds sending corrupt data
	* don't let hung outgoing connection attempts block incoming connections
	* improve SSL torrent support by using SNI and a single SSL listen socket
	* improved peer exchange performance by sharing incoming connections which advertise listen port
	* deprecate set_ratio(), and per-peer rate limits
	* add web seed support for torrents with pad files
	* introduced a more scalable API for torrent status updates (post_torrent_updates()) and updated client_test to use it
	* updated the API to add_torrent_params turning all bools into flags of a flags field
	* added async_add_torrent() function to significantly improve performance when
	  adding many torrents
	* change peer_states to be a bitmask (bw_limit, bw_network, bw_disk)
	* changed semantics of send_buffer_watermark_factor to be specified as a percentage
	* add incoming_connection_alert for logging all successful incoming connections
	* feature to encrypt peer connections with a secret AES-256 key stored in .torrent file
	* deprecated compact storage allocation
	* close files in separate thread on systems where close() may block (Mac OS X for instance)
	* don't create all directories up front when adding torrents
	* support DHT scrape
	* added support for fadvise/F_RDADVISE for improved disk read performance
	* introduced pop_alerts() which pops the entire alert queue in a single call
	* support saving metadata in resume file, enable it by default for magnet links
	* support for receiving multi announce messages for local peer discovery
	* added session::listen_no_system_port flag to prevent libtorrent from ever binding the listen socket to port 0
	* added option to not recheck on missing or incomplete resume data
	* extended stats logging with statistics=on builds
	* added new session functions to more efficiently query torrent status
	* added alerts for added and removed torrents
	* expanded plugin interface to support session wide states
	* made the metadata block requesting algorithm more robust against hash check failures
	* support a separate option to use proxies for peers or not
	* pausing the session now also pauses checking torrents
	* moved alert queue size limit into session_settings
	* added support for DHT rss feeds (storing only)
	* added support for RSS feeds
	* fixed up some edge cases in DHT routing table and improved unit test of it
	* added error category and error codes for HTTP errors
	* made the DHT implementation slightly more robust against routing table poisoning and node ID spoofing
	* support chunked encoding in http downloads (http_connection)
	* support adding torrents by url to the .torrent file
	* support CDATA tags in xml parser
	* use a python python dictionary for settings instead of session_settings object (in python bindings)
	* optimized metadata transfer (magnet link) startup time (shaved off about 1 second)
	* optimized swarm startup time (shaved off about 1 second)
	* support DHT name lookup
	* optimized memory usage of torrent_info and file_storage, forcing some API changes
	  around file_storage and file_entry
	* support trackerid tracker extension
	* graceful peer disconnect mode which finishes transactions before disconnecting peers
	* support chunked encoding for web seeds
	* uTP protocol support
	* resistance towards certain flood attacks
	* support chunked encoding for web seeds (only for BEP 19, web seeds)
	* optimized session startup time
	* support SSL for web seeds, through all proxies
	* support extending web seeds with custom authorization and extra headers
	* settings that are not changed from the default values are not saved
	  in the session state
	* made seeding choking algorithm configurable
	* deprecated setters for max connections, max half-open, upload and download
	  rates and unchoke slots. These are now set through session_settings
	* added functions to query an individual peer's upload and download limit
	* full support for BEP 21 (event=paused)
	* added share-mode feature for improving share ratios
	* merged all proxy settings into a single one
	* improved SOCKS5 support by proxying hostname lookups
	* improved support for multi-homed clients
	* added feature to not count downloaded bytes from web seeds in stats
	* added alert for incoming local service discovery messages
	* added option to set file priorities when adding torrents
	* removed the session mutex for improved performance
	* added upload and download activity timer stats for torrents
	* made the reuse-address flag configurable on the listen socket
	* moved UDP trackers over to use a single socket
	* added feature to make asserts log to a file instead of breaking the process
	  (production asserts)
	* optimized disk I/O cache clearing
	* added feature to ask a torrent if it needs to save its resume data or not
	* added setting to ignore file modification time when loading resume files
	* support more fine-grained torrent states between which peer sources it
	  announces to
	* supports calculating sha1 file-hashes when creating torrents
	* made the send_buffer_watermark performance warning more meaningful
	* supports complete_ago extension
	* dropped zlib as a dependency and builds using puff.c instead
	* made the default cache size depend on available physical RAM
	* added flags to torrent::status() that can filter which values are calculated
	* support 'explicit read cache' which keeps a specific set of pieces
	  in the read cache, without implicitly caching other pieces
	* support sending suggest messages based on what's in the read cache
	* clear sparse flag on files that complete on windows
	* support retry-after header for web seeds
	* replaced boost.filesystem with custom functions
	* replaced dependency on boost.thread by asio's internal thread primitives
	* added support for i2p torrents
	* cleaned up usage of MAX_PATH and related macros
	* made it possible to build libtorrent without RTTI support
	* added support to build with libgcrypt and a shipped version of libtommath
	* optimized DHT routing table memory usage
	* optimized disk cache to work with large caches
	* support variable number of optimistic unchoke slots and to dynamically
	  adjust based on the total number of unchoke slots
	* support for BitTyrant choker algorithm
	* support for automatically start torrents when they receive an
	  incoming connection
	* added more detailed instrumentation of the disk I/O thread

0.15.11 release

	* fixed web seed bug, sometimes causing infinite loops
	* fixed race condition when setting session_settings immediately after creating session
	* give up immediately when failing to open a listen socket (report the actual error)
	* restored ABI compatibility with 0.15.9
	* added missing python bindings for create_torrent and torrent_info

0.15.10 release

	* fix 'parameter incorrect' issue when using unbuffered IO on windows
	* fixed UDP socket error handling on windows
	* fixed peer_tos (type of service) setting
	* fixed crash when loading resume file with more files than the torrent in it
	* fix invalid-parameter error on windows when disabling filesystem disk cache
	* fix connection queue issue causing shutdown delays
	* fixed mingw build
	* fix overflow bug in progress_ppm field
	* don't filter local peers received from a non-local tracker
	* fix python deadlock when using python extensions
	* fixed small memory leak in DHT

0.15.9 release

	* added some functions missing from the python binding
	* fixed rare piece picker bug
	* fixed invalid torrent_status::finished_time
	* fixed bugs in dont-have and upload-only extension messages
	* don't open files in random-access mode (speeds up hashing)

0.15.8 release

	* allow NULL to be passed to create_torrent::set_comment and create_torrent::set_creator
	* fix UPnP issue for routers with multiple PPPoE connections
	* fix issue where event=stopped announces wouldn't be sent when closing session
	* fix possible hang in file::readv() on windows
	* fix CPU busy loop issue in tracker announce logic
	* honor IOV_MAX when using writev and readv
	* don't post 'operation aborted' UDP errors when changing listen port
	* fix tracker retry logic, where in some configurations the next tier would not be tried
	* fixed bug in http seeding logic (introduced in 0.15.7)
	* add support for dont-have extension message
	* fix for set_piece_deadline
	* add reset_piece_deadline function
	* fix merkle tree torrent assert

0.15.7 release

	* exposed set_peer_id to python binding
	* improve support for merkle tree torrent creation
	* exposed comparison operators on torrent_handle to python
	* exposed alert error_codes to python
	* fixed bug in announce_entry::next_announce_in and min_announce_in
	* fixed sign issue in set_alert_mask signature
	* fixed unaligned disk access for unbuffered I/O in windows
	* support torrents whose name is empty
	* fixed connection limit to take web seeds into account as well
	* fixed bug when receiving a have message before having the metadata
	* fixed python bindings build with disabled DHT support
	* fixed BSD file allocation issue
	* fixed bug in session::delete_files option to remove_torrent

0.15.6 release

	* fixed crash in udp trackers when using SOCKS5 proxy
	* fixed reconnect delay when leaving upload only mode
	* fixed default values being set incorrectly in add_torrent_params through add_magnet_uri in python bindings
	* implemented unaligned write (for unbuffered I/O)
	* fixed broadcast_lsd option
	* fixed udp-socket race condition when using a proxy
	* end-game mode optimizations
	* fixed bug in udp_socket causing it to issue two simultaneous async. read operations
	* fixed mingw build
	* fixed minor bug in metadata block requester (for magnet links)
	* fixed race condition in iconv string converter
	* fixed error handling in torrent_info constructor
	* fixed bug in torrent_info::remap_files
	* fix python binding for wait_for_alert
	* only apply privileged port filter to DHT-only peers

0.15.5 release

	* support DHT extension to report external IPs
	* fixed rare crash in http_connection's error handling
	* avoid connecting to peers listening on ports < 1024
	* optimized piece picking to not cause busy loops in some end-game modes
	* fixed python bindings for tcp::endpoint
	* fixed edge case of pad file support
	* limit number of torrents tracked by DHT
	* fixed bug when allow_multiple_connections_per_ip was enabled
	* potential WOW64 fix for unbuffered I/O (windows)
	* expose set_alert_queue_size_limit to python binding
	* support dht nodes in magnet links
	* support 100 Continue HTTP responses
	* changed default choker behavior to use 8 unchoke slots (instead of being rate based)
	* fixed error reporting issue in disk I/O thread
	* fixed file allocation issues on linux
	* fixed filename encoding and decoding issue on platforms using iconv
	* reports redundant downloads to tracker, fixed downloaded calculation to
	  be more stable when not including redundant. Improved redundant data accounting
	  to be more accurate
	* fixed bugs in http seed connection and added unit test for it
	* fixed error reporting when fallocate fails
	* deprecate support for separate proxies for separate kinds of connections

0.15.4 release

	* fixed piece picker issue triggered by hash failure and timed out requests to the piece
	* fixed optimistic unchoke issue when setting per torrent unchoke limits
	* fixed UPnP shutdown issue
	* fixed UPnP DeletePortmapping issue
	* fixed NAT-PMP issue when adding the same mapping multiple times
	* no peers from tracker when stopping is no longer an error
	* improved web seed retry behavior
	* fixed announce issue

0.15.3 release

	* fixed announce bug where event=completed would not be sent if it violated the
	  min-announce of the tracker
	* fixed limitation in rate limiter
	* fixed build error with boost 1.44

0.15.2 release

	* updated compiler to msvc 2008 for python binding
	* restored default fail_limit to unlimited on all trackers
	* fixed rate limit bug for DHT
	* fixed SOCKS5 bug for routing UDP packets
	* fixed bug on windows when verifying resume data for a torrent where
	  one of its directories had been removed
	* fixed race condition in peer-list with DHT
	* fix force-reannounce and tracker retry issue

0.15.1 release

	* fixed rare crash when purging the peer list
	* fixed race condition around m_abort in session_impl
	* fixed bug in web_peer_connection which could cause a hang when downloading
	  from web servers
	* fixed bug in metadata extensions combined with encryption
	* refactored socket reading code to not use async. operations unnecessarily
	* some timer optimizations
	* removed the reuse-address flag on the listen socket
	* fixed bug where local peer discovery and DHT wouldn't be announced to without trackers
	* fixed bug in bdecoder when decoding invalid messages
	* added build warning when building with UNICODE but the standard library
	  doesn't provide std::wstring
	* fixed add_node python binding
	* fixed issue where trackers wouldn't tried immediately when the previous one failed
	* fixed synchronization issue between download queue and piece picker
	* fixed bug in udp tracker scrape response parsing
	* fixed bug in the disk thread that could get triggered under heavy load
	* fixed bug in add_piece() that would trigger asserts
	* fixed vs 2010 build
	* recognizes more clients in identify_client()
	* fixed bug where trackers wouldn't be retried if they failed
	* slight performance fix in disk elevator algorithm
	* fixed potential issue where a piece could be checked twice
	* fixed build issue on windows related to GetCompressedSize()
	* fixed deadlock when starting torrents with certain invalid tracker URLs
	* fixed iterator bug in disk I/O thread
	* fixed FIEMAP support on linux
	* fixed strict aliasing warning on gcc
	* fixed inconsistency when creating torrents with symlinks
	* properly detect windows version to initialize half-open connection limit
	* fixed bug in url encoder where $ would not be encoded

0.15 release

	* introduced a session state save mechanism. load_state() and save_state().
	  this saves all session settings and state (except torrents)
	* deprecated dht_state functions and merged it with the session state
	* added support for multiple trackers in magnet links
	* added support for explicitly flushing the disk cache
	* added torrent priority to affect bandwidth allocation for its peers
	* reduced the number of floating point operations (to better support
	  systems without FPU)
	* added new alert when individual files complete
	* added support for storing symbolic links in .torrent files
	* added support for uTorrent interpretation of multi-tracker torrents
	* handle torrents with duplicate filenames
	* piece timeouts are adjusted to download rate limits
	* encodes urls in torrent files that needs to be encoded
	* fixed not passing &supportcrypto=1 when encryption is disabled
	* introduced an upload mode, which torrents are switched into when
	  it hits a disk write error, instead of stopping the torrent.
	  this lets libtorrent keep uploading the parts it has when it
	  encounters a disk-full error for instance
	* improved disk error handling and expanded use of error_code in
	  error reporting. added a bandwidth state, bw_disk, when waiting
	  for the disk io thread to catch up writing buffers
	* improved read cache memory efficiency
	* added another cache flush algorithm to write the largest
	  contiguous blocks instead of the least recently used
	* introduced a mechanism to be lighter on the disk when checking torrents
	* applied temporary memory storage optimization to when checking
	  a torrent as well
	* removed hash_for_slot() from storage_interface. It is now implemented
	  by using the readv() function from the storage implementation
	* improved IPv6 support by announcing twice when necessary
	* added feature to set a separate global rate limit for local peers
	* added preset settings for low memory environments and seed machines
	  min_memory_usage() and high_performance_seeder()
	* optimized overall memory usage for DHT nodes and requests, peer
	  entries and disk buffers
	* change in API for block_info in partial_piece_info, instead of
	  accessing 'peer', call 'peer()'
	* added support for fully automatic unchoker (no need to specify
	  number of upload slots). This is on by default
	* added support for changing socket buffer sizes through
	  session_settings
	* added support for merkle hash tree torrents (.merkle.torrent)
	* added 'seed mode', which assumes that all files are complete
	  and checks hashes lazily, as blocks are requested
	* added new extension for file attributes (executable and hidden)
	* added support for unbuffered I/O for aligned files
	* added workaround for sparse file issue on Windows Vista
	* added new lt_trackers extension to exchange trackers between
	  peers
	* added support for BEP 17 http seeds
	* added read_piece() to read pieces from torrent storage
	* added option for udp tracker preference
	* added super seeding
	* added add_piece() function to inject data from external sources
	* add_tracker() function added to torrent_handle
	* if there is no working tracker, current_tracker is the
	  tracker that is currently being tried
	* torrents that are checking can now be paused, which will
	  pause the checking
	* introduced another torrent state, checking_resume_data, which
	  the torrent is in when it's first added, and is comparing
	  the files on disk with the resume data
	* DHT bandwidth usage optimizations
	* rate limited DHT send socket
	* tracker connections are now also subject to IP filtering
	* improved optimistic unchoke logic
	* added monitoring of the DHT lookups
	* added bandwidth reports for estimated TCP/IP overhead and DHT
	* includes DHT traffic in the rate limiter
	* added support for bitcomet padding files
	* improved support for sparse files on windows
	* added ability to give seeding torrents preference to active slots
	* added torrent_status::finished_time
	* automatically caps files and connections by default to rlimit
	* added session::is_dht_running() function
	* added torrent_handle::force_dht_announce()
	* added torrent_info::remap_files()
	* support min_interval tracker extension
	* added session saving and loading functions
	* added support for min-interval in tracker responses
	* only keeps one outstanding duplicate request per peer
	  reduces waste download, specifically when streaming
	* added support for storing per-peer rate limits across reconnects
	* improved fallocate support
	* fixed magnet link issue when using resume data
	* support disk I/O priority settings
	* added info_hash to torrent_deleted_alert
	* improved LSD performance and made the interval configurable
	* improved UDP tracker support by caching connect tokens
	* fast piece optimization

release 0.14.10

	* fixed udp tracker race condition
	* added support for torrents with odd piece sizes
	* fixed issue with disk read cache not being cleared when removing torrents
	* made the DHT socket bind to the same interface as the session
	* fixed issue where an http proxy would not be used on redirects
	* Solaris build fixes
	* disabled buggy disconnect_peers feature

release 0.14.9

	* disabled feature to drop requests after having been skipped too many times
	* fixed range request bug for files larger than 2 GB in web seeds
	* don't crash when trying to create torrents with 0 files
	* fixed big_number __init__ in python bindings
	* fixed optimistic unchoke timer
	* fixed bug where torrents with incorrectly formatted web seed URLs would be
	  connected multiple times
	* fixed MinGW support
	* fixed DHT bootstrapping issue
	* fixed UDP over SOCKS5 issue
	* added support for "corrupt" tracker announce
	* made end-game mode less aggressive

release 0.14.8

	* ignore unknown metadata messages
	* fixed typo that would sometimes prevent queued torrents to be checked
	* fixed bug in auto-manager where active_downloads and active_seeds would
	  sometimes be used incorrectly
	* force_recheck() no longer crashes on torrents with no metadata
	* fixed broadcast socket regression from 0.14.7
	* fixed hang in NATPMP when shut down while waiting for a response
	* fixed some more error handling in bdecode

release 0.14.7

	* fixed deadlock in natpmp
	* resume data alerts are always posted, regardless of alert mask
	* added wait_for_alert to python binding
	* improved invalid filename character replacement
	* improved forward compatibility in DHT
	* added set_piece_hashes that takes a callback to the python binding
	* fixed division by zero in get_peer_info()
	* fixed bug where pieces may have been requested before the metadata
	  was received
	* fixed incorrect error when deleting files from a torrent where
	  not all files have been created
	* announces torrents immediately to the DHT when it's started
	* fixed bug in add_files that would fail to recurse if the path
	  ended with a /
	* fixed bug in error handling when parsing torrent files
	* fixed file checking bug when renaming a file before checking the torrent
	* fixed race condition when receiving metadata from swarm
	* fixed assert in ut_metadata plugin
	* back-ported some fixes for building with no exceptions
	* fixed create_torrent when passing in a path ending with /
	* fixed move_storage when source doesn't exist
	* fixed DHT state save bug for node-id
	* fixed typo in python binding session_status struct
	* broadcast sockets now join every network interface (used for UPnP and
	  local peer discovery)

release 0.14.6

	* various missing include fixes to be buildable with boost 1.40
	* added missing functions to python binding related to torrent creation
	* fixed to add filename on web seed urls that lack it
	* fixed BOOST_ASIO_HASH_MAP_BUCKETS define for boost 1.39
	* fixed checking of fast and suggest messages when used with magnet links
	* fixed bug where web seeds would not disconnect if being resolved when
	  the torrent was paused
	* fixed download piece performance bug in piece picker
	* fixed bug in connect candidate counter
	* replaces invalid filename characters with .
	* added --with-libgeoip option to configure script to allow building and
	  linking against system wide library
	* fixed potential pure virtual function call in extensions on shutdown
	* fixed disk buffer leak in smart_ban extension

release 0.14.5

	* fixed bug when handling malformed webseed urls and an http proxy
	* fixed bug when setting unlimited upload or download rates for torrents
	* fix to make torrent_status::list_peers more accurate.
	* fixed memory leak in disk io thread when not using the cache
	* fixed bug in connect candidate counter
	* allow 0 upload slots
	* fixed bug in rename_file(). The new name would not always be saved in
	  the resume data
	* fixed resume data compatibility with 0.13
	* fixed rare piece-picker bug
	* fixed bug where one allowed-fast message would be sent even when
	  disabled
	* fixed race condition in UPnP which could lead to crash
	* fixed inversed seed_time ratio logic
	* added get_ip_filter() to session

release 0.14.4

	* connect candidate calculation fix
	* tightened up disk cache memory usage
	* fixed magnet link parser to accept hex-encoded info-hashes
	* fixed inverted logic when picking which peers to connect to
	  (should mean a slight performance improvement)
	* fixed a bug where a failed rename_file() would leave the storage
	  in an error state which would pause the torrent
	* fixed case when move_storage() would fail. Added a new alert
	  to be posted when it does
	* fixed crash bug when shutting down while checking a torrent
	* fixed handling of web seed urls that didn't end with a
	  slash for multi-file torrents
	* lowered the default connection speed to 10 connection attempts
	  per second
	* optimized memory usage when checking files fails
	* fixed bug when checking a torrent twice
	* improved handling of out-of-memory conditions in disk I/O thread
	* fixed bug when force-checking a torrent with partial pieces
	* fixed memory leak in disk cache
	* fixed torrent file path vulnerability
	* fixed upnp
	* fixed bug when dealing with clients that drop requests (i.e. BitComet)
	  fixes assert as well

release 0.14.3

	* added python binding for create_torrent
	* fixed boost-1.38 build
	* fixed bug where web seeds would be connected before the files
	  were checked
	* fixed filename bug when using wide characters
	* fixed rare crash in peer banning code
	* fixed potential HTTP compatibility issue
	* fixed UPnP crash
	* fixed UPnP issue where the control url contained the base url
	* fixed a replace_trackers bug
	* fixed bug where the DHT port mapping would not be removed when
	  changing DHT port
	* fixed move_storage bug when files were renamed to be moved out
	  of the root directory
	* added error handling for set_piece_hashes
	* fixed missing include in enum_if.cpp
	* fixed dual IP stack issue
	* fixed issue where renamed files were sometimes not saved in resume data
	* accepts tracker responses with no 'peers' field, as long as 'peers6'
	  is present
	* fixed CIDR-distance calculation in the presence of IPv6 peers
	* save partial resume data for torrents that are queued for checking
	  or checking, to maintain stats and renamed files
	* Don't try IPv6 on windows if it's not installed
	* move_storage fix
	* fixed potential crash on shutdown
	* fixed leaking exception from bdecode on malformed input
	* fixed bug where connection would hang when receiving a keepalive
	* fixed bug where an asio exception could be thrown when resolving
	  peer countries
	* fixed crash when shutting down while checking a torrent
	* fixed potential crash in connection_queue when a peer_connection
	  fail to open its socket

release 0.14.2

	* added missing functions to the python bindings torrent_info::map_file,
	  torrent_info::map_block and torrent_info::file_at_offset.
	* removed support for boost-1.33 and earlier (probably didn't work)
	* fixed potential freezes issues at shutdown
	* improved error message for python setup script
	* fixed bug when torrent file included announce-list, but no valid
	  tracker urls
	* fixed bug where the files requested from web seeds would be the
	  renamed file names instead of the original file names in the torrent.
	* documentation fix of queueing section
	* fixed potential issue in udp_socket (affected udp tracker support)
	* made name, comment and created by also be subject to utf-8 error
	  correction (filenames already were)
	* fixed dead-lock when settings DHT proxy
	* added missing export directives to lazy_entry
	* fixed disk cache expiry settings bug (if changed, it would be set
	  to the cache size)
	* fixed bug in http_connection when binding to a particular IP
	* fixed typo in python binding (torrent_handle::piece_prioritize should
	  be torrent_handle::piece_priorities)
	* fixed race condition when saving DHT state
	* fixed bugs related to lexical_cast being locale dependent
	* added support for SunPro C++ compiler
	* fixed bug where messages sometimes could be encrypted in the
	  wrong order, for encrypted connections.
	* fixed race condition where torrents could get stuck waiting to
	  get checked
	* fixed mapped files bug where it wouldn't be properly restored
	  from resume data properly
	* removed locale dependency in xml parser (caused asserts on windows)
	* fixed bug when talking to https 1.0 servers
	* fixed UPnP bug that could cause stack overflow

release 0.14.1

	* added converter for python unicode strings to utf-8 paths
	* fixed bug in http downloader where the host field did not
	  include the port number
	* fixed headers to not depend on NDEBUG, which would prohibit
	  linking a release build of libtorrent against a debug application
	* fixed bug in disk I/O thread that would make the thread
	  sometimes quit when an error occurred
	* fixed DHT bug
	* fixed potential shutdown crash in disk_io_thread
	* fixed usage of deprecated boost.filesystem functions
	* fixed http_connection unit test
	* fixed bug in DHT when a DHT state was loaded
	* made rate limiter change in 0.14 optional (to take estimated
	  TCP/IP overhead into account)
	* made the python plugin buildable through the makefile
	* fixed UPnP bug when url base ended with a slash and
	  path started with a slash
	* fixed various potentially leaking exceptions
	* fixed problem with removing torrents that are checking
	* fixed documentation bug regarding save_resume_data()
	* added missing documentation on torrent creation
	* fixed bugs in python client examples
	* fixed missing dependency in package-config file
	* fixed shared geoip linking in Jamfile
	* fixed python bindings build on windows and made it possible
	  to generate a windows installer
	* fixed bug in NAT-PMP implementation

release 0.14

	* deprecated add_torrent() in favor of a new add_torrent()
	  that takes a struct with parameters instead. Torrents
	  are paused and auto managed by default.
	* removed 'connecting_to_tracker' torrent state. This changes
	  the enum values for the other states.
	* Improved seeding and choking behavior.
	* Fixed rare buffer overrun bug when calling get_download_queue
	* Fixed rare bug where torrent could be put back into downloading
	  state even though it was finished, after checking files.
	* Fixed rename_file to work before the file on disk has been
	  created.
	* Fixed bug in tracker connections in case of errors caused
	  in the connection constructor.
	* Updated alert system to be filtered by category instead of
	  severity level. Alerts can generate a message through
	  alert::message().
	* Session constructor will now start dht, upnp, natpmp, lsd by
	  default. Flags can be passed in to the constructor to not
	  do this, if these features are to be enabled and disabled
	  at a later point.
	* Removed 'connecting_to_tracker' torrent state
	* Fix bug where FAST pieces were cancelled on choke
	* Fixed problems with restoring piece states when hash failed.
	* Minimum peer reconnect time fix. Peers with no failures would
	  reconnect immediately.
	* Improved web seed error handling
	* DHT announce fixes and off-by-one loop fix
	* Fixed UPnP xml parse bug where it would ignore the port number
	  for the control url.
	* Fixed bug in torrent writer where the private flag was added
	  outside of the info dictionary
	* Made the torrent file parser less strict of what goes in the
	  announce-list entry
	* Fixed type overflow bug where some statistics was incorrectly
	  reported for file larger than 2 GB
	* boost-1.35 support
	* Fixed bug in statistics from web server peers where it sometimes
	  could report too many bytes downloaded.
	* Fixed bug where statistics from the last second was lost when
	  disconnecting a peer.
	* receive buffer optimizations (memcpy savings and memory savings)
	* Support for specifying the TOS byte for peer traffic.
	* Basic support for queueing of torrents.
	* Better bias to give connections to downloading torrents
	  with fewer peers.
	* Optimized resource usage (removed the checking thread)
	* Support to bind outgoing connections to specific ports
	* Disk cache support.
	* New, more memory efficient, piece picker with sequential download
	  support (instead of the more complicated sequential download threshold).
	* Auto Upload slots. Automatically opens up more slots if
	  upload limit is not met.
	* Improved NAT-PMP support by querying the default gateway
	* Improved UPnP support by ignoring routers not on the clients subnet.

release 0.13

	* Added scrape support
	* Added add_extension() to torrent_handle. Can instantiate
	  extensions for torrents while downloading
	* Added support for remove_torrent to delete the files as well
	* Fixed issue with failing async_accept on windows
	* DHT improvements, proper error messages are now returned when
	  nodes sends bad packets
	* Optimized the country table used to resolve country of peers
	* Copying optimization for sending data. Data is no longer copied from
	  the disk I/O buffer to the send buffer.
	* Buffer optimization to use a raw buffer instead of std::vector<char>
	* Improved file storage to use sparse files
	* Updated python bindings
	* Added more clients to the identifiable clients list.
	* Torrents can now be started in paused state (to better support queuing)
	* Improved IPv6 support (support for IPv6 extension to trackers and
	  listens on both IPv6 and IPv4 interfaces).
	* Improved asserts used. Generates a stacktrace on linux
	* Piece picker optimizations and improvements
	* Improved unchoker, connection limit and rate limiter
	* Support for FAST extension
	* Fixed invalid calculation in DHT node distance
	* Fixed bug in URL parser that failed to parse IPv6 addresses
	* added peer download rate approximation
	* added port filter for outgoing connection (to prevent
	  triggering firewalls)
	* made most parameters configurable via session_settings
	* added encryption support
	* added parole mode for peers whose data fails the hash check.
	* optimized heap usage in piece-picker and web seed downloader.
	* fixed bug in DHT where older write tokens weren't accepted.
	* added support for sparse files.
	* introduced speed categories for peers and pieces, to separate
	  slow and fast peers.
	* added a half-open tcp connection limit that takes all connections
	  in to account, not just peer connections.
	* added alerts for filtered IPs.
	* added support for SOCKS4 and 5 proxies and HTTP CONNECT proxies.
	* fixed proper distributed copies calculation.
	* added option to use openssl for sha-1 calculations.
	* optimized the piece picker in the case where a peer is a seed.
	* added support for local peer discovery
	* removed the dependency on the compiled boost.date_time library
	* deprecated torrent_info::print()
	* added UPnP support
	* fixed problem where peer interested flags were not updated correctly
	  when pieces were filtered
	* improvements to ut_pex messages, including support for seed flag
	* prioritizes upload bandwidth to peers that might send back data
	* the following functions have been deprecated:
	  	void torrent_handle::filter_piece(int index, bool filter) const;
	  	void torrent_handle::filter_pieces(std::vector<bool> const& pieces) const;
	  	bool torrent_handle::is_piece_filtered(int index) const;
	  	std::vector<bool> torrent_handle::filtered_pieces() const;
	  	void torrent_handle::filter_files(std::vector<bool> const& files) const;

	  instead, use the piece_priority functions.

	* added support for NAT-PMP
	* added support for piece priorities. Piece filtering is now set as
	  a priority
	* Fixed crash when last piece was smaller than one block and reading
	  fastresume data for that piece
	* Makefiles should do a better job detecting boost
	* Fixed crash when all tracker urls are removed
	* Log files can now be created at user supplied path
	* Log files failing to create is no longer fatal
	* Fixed dead-lock in torrent_handle
	* Made it build with boost 1.34 on windows
	* Fixed bug in URL parser that failed to parse IPv6 addresses
	* Fixed bug in DHT, related to IPv6 nodes
	* DHT accepts transaction IDs that have garbage appended to them
	* DHT logs messages that it fails to decode

release 0.12

	* fixes to make the DHT more compatible
	* http seed improvements including error reporting and url encoding issues.
	* fixed bug where directories would be left behind when moving storage
	  in some cases.
	* fixed crashing bug when restarting or stopping the DHT.
	* added python binding, using boost.python
	* improved character conversion on windows when strings are not utf-8.
	* metadata extension now respects the private flag in the torrent.
	* made the DHT to only be used as a fallback to trackers by default.
	* added support for HTTP redirection support for web seeds.
	* fixed race condition when accessing a torrent that was checking its
	  fast resume data.
	* fixed a bug in the DHT which could be triggered if the network was
	  dropped or extremely rare cases.
	* if the download rate is limited, web seeds will now only use left-over
	  bandwidth after all bt peers have used up as much bandwidth as they can.
	* added the possibility to have libtorrent resolve the countries of
	  the peers in torrents.
	* improved the bandwidth limiter (it now implements a leaky bucket/node bucket).
	* improved the HTTP seed downloader to report accurate progress.
	* added more client peer-id signatures to be recognized.
	* added support for HTTP servers that skip the CR before the NL at line breaks.
	* fixed bug in the HTTP code that only accepted headers case sensitive.
	* fixed bug where one of the session constructors didn't initialize boost.filesystem.
	* fixed bug when the initial checking of a torrent fails with an exception.
	* fixed bug in DHT code which would send incorrect announce messages.
	* fixed bug where the http header parser was case sensitive to the header
	  names.
	* Implemented an optimization which frees the piece_picker once a torrent
	  turns into a seed.
	* Added support for uT peer exchange extension, implemented by Massaroddel.
	* Modified the quota management to offer better bandwidth balancing
	  between peers.
	* logging now supports multiple sessions (different sessions now log
	  to different directories).
	* fixed random number generator seed problem, generating the same
	  peer-id for sessions constructed the same second.
	* added an option to accept multiple connections from the same IP.
	* improved tracker logging.
	* moved the file_pool into session. The number of open files is now
	  limited per session.
	* fixed uninitialized private flag in torrent_info
	* fixed long standing issue with file.cpp on windows. Replaced the low level
	  io functions used on windows.
	* made it possible to associate a name with torrents without metadata.
	* improved http-downloading performance by requesting entire pieces via
	  http.
	* added plugin interface for extensions. And changed the interface for
	  enabling extensions.

release 0.11

	* added support for incorrectly encoded paths in torrent files
	  (assumes Latin-1 encoding and converts to UTF-8).
	* added support for destructing session objects asynchronously.
	* fixed bug with file_progress() with files = 0 bytes
	* fixed a race condition bug in udp_tracker_connection that could
	  cause a crash.
	* fixed bug occurring when increasing the sequenced download threshold
	  with max availability lower than previous threshold.
	* fixed an integer overflow bug occurring when built with gcc 4.1.x
	* fixed crasing bug when closing while checking a torrent
	* fixed bug causing a crash with a torrent with piece length 0
	* added an extension to the DHT network protocol to support the
	  exchange of nodes with IPv6 addresses.
	* modified the ip_filter api slightly to support IPv6
	* modified the api slightly to make sequenced download threshold
	  a per torrent-setting.
	* changed the address type to support IPv6
	* fixed bug in piece picker which would not behave as
	  expected with regard to sequenced download threshold.
	* fixed bug with file_progress() with files > 2 GB.
	* added --enable-examples option to configure script.
	* fixed problem with the resource distribution algorithm
	  (controlling e.g upload/download rates).
	* fixed incorrect asserts in storage related to torrents with
	  zero-sized files.
	* added support for trackerless torrents (with kademlia DHT).
	* support for torrents with the private flag set.
	* support for torrents containing bootstrap nodes for the
	  DHT network.
	* fixed problem with the configure script on FreeBSD.
	* limits the pipelining used on url-seeds.
	* fixed problem where the shutdown always would delay for
	  session_settings::stop_tracker_timeout seconds.
	* session::listen_on() won't reopen the socket in case the port and
	  interface is the same as the one currently in use.
	* added http proxy support for web seeds.
	* fixed problem where upload and download stats could become incorrect
	  in case of high cpu load.
	* added more clients to the identifiable list.
	* fixed fingerprint parser to cope with latest Mainline versions.

release 0.10

	* fixed a bug where the requested number of peers in a tracker request could
	  be too big.
	* fixed a bug where empty files were not created in full allocation mode.
	* fixed a bug in storage that would, in rare cases, fail to do a
	  complete check.
	* exposed more settings for tweaking parameters in the piece-picker,
	  downloader and uploader (http_settings replaced by session_settings).
	* tweaked default settings to improve high bandwidth transfers.
	* improved the piece picker performance and made it possible to download
	  popular pieces in sequence to improve disk performance.
	* added the possibility to control upload and download limits per peer.
	* fixed problem with re-requesting skipped pieces when peer was sending pieces
	  out of fifo-order.
	* added support for http seeding (the GetRight protocol)
	* renamed identifiers called 'id' in the public interface to support linking
	  with Objective.C++
	* changed the extensions protocol to use the new one, which is also
	  implemented by uTorrent.
	* factorized the peer_connection and added web_peer_connection which is
	  able to download from http-sources.
	* converted the network code to use asio (resulted in slight api changes
	  dealing with network addresses).
	* made libtorrent build in vc7 (patches from Allen Zhao)
	* fixed bug caused when binding outgoing connections to a non-local interface.
	* add_torrent() will now throw if called while the session object is
	  being closed.
	* added the ability to limit the number of simultaneous half-open
	  TCP connections. Flags in peer_info has been added.

release 0.9.1

	* made the session disable file name checks within the boost.filesystem library
	* fixed race condition in the sockets
	* strings that are invalid utf-8 strings are now decoded with the
	  local codepage on windows
	* added the ability to build libtorrent both as a shared library
	* client_test can now monitor a directory for torrent files and automatically
	  start and stop downloads while running
	* fixed problem with file_size() when building on windows with unicode support
	* added a new torrent state, allocating
	* added a new alert, metadata_failed_alert
	* changed the interface to session::add_torrent for some speed optimizations.
	* greatly improved the command line control of the example client_test.
	* fixed bug where upload rate limit was not being applied.
	* files that are being checked will no longer stall files that don't need
	  checking.
	* changed the way libtorrent identifies support for its excentions
	  to look for 'ext' at the end of the peer-id.
	* improved performance by adding a circle buffer for the send buffer.
	* fixed bugs in the http tracker connection when using an http proxy.
	* fixed problem with storage's file pool when creating torrents and then
	  starting to seed them.
	* hard limit on remote request queue and timeout on requests (a timeout
	  triggers rerequests). This makes libtorrent work much better with
	  "broken" clients like BitComet which may ignore requests.

Initial release 0.9

	* multitracker support
	* serves multiple torrents on a single port and a single thread
	* supports http proxies and proxy authentication
	* gzipped tracker-responses
	* block level piece picker
	* queues torrents for file check, instead of checking all of them in parallel
	* uses separate threads for checking files and for main downloader
	* upload and download rate limits
	* piece-wise, unordered, incremental file allocation
	* fast resume support
	* supports files > 2 gigabytes
	* supports the no_peer_id=1 extension
	* support for udp-tracker protocol
	* number of connections limit
	* delays sending have messages
	* can resume pieces downloaded in any order
	* adjusts the length of the request queue depending on download rate
	* supports compact=1
	* selective downloading
	* ip filter

