Newer ChangeLog entries are in the Trac wiki: http://libtorrent.rakshasa.no/wiki/Changelog
I just converted them to the ChangeLog format so I am attaching it. Regards, -- Jindrich Makovicka
2006-01-26 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.11.2 released * Added "max_open_http" option that limits the max number of simultaneous http connections. By default set to 32. * Directory structured view of the file list. The '/' key collapses directories, while the right arrow or ^F enters the selected directory. Changing the priority for a directory changes all contained files. * Replaced old autoconf scripts with pkg-config checks. If the curl or openssl check now fails, make sure pkg-config can find them. * Added "create_link" and "delete_link" options which apply to a download. These must be used with the new "on_*" options, so as to allow you to create symbolic links when starting, stopping, finishing, etc, a torrent. 2006-12-28 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.11.1 released * Added dired view of files and allow priority to be changed for all files within a directory. * Allow initial hash checking to be paused and resumed. * Minor bug fixes. 2006-12-13 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.11.0 released * Added "tracker_numwant", "encryption", "connection_proxy", 'preload_type', 'preload_min_size', 'preload_required_rate', "split_file_size", "split_suffix", "max_file_size", * Encrypted (obfuscated) handshake and connection support. Patch by Josef Drexler, public domain as per earlier agreement. * Append '&' instead of '?' to the tracker url when the url already has '?'. * Added support for tunneling through HTTP 1.0 proxies. * Cut the size of the libtorrent binary from 925kb to 617kb by using using GCC's symbol export attributes and changes to how exceptions are constructed. * Moved client info, etc, from rtorrent to libtorrent and cleaned up the API. * Support for the CANCEL piece request message. (Finally) * Allow the user to configure the max file size a torrent is allowed to create, and the option to split large files. 2006-10-27 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.10.4 released * Use the actual completed torrent data in the 'downloaded' field sent to the tracker, rather than the download rate total. This should fix some problems with too much downloaded data being reported to the tracker. 2006-10-05 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.10.3 released * Didn't properly clean up when a torrent with the same info hash was rejected. This caused random crashes and memory leaks. * Properly cancel pieces that are skipped when downloading. 2006-09-14 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.10.2 released * Rebound the old ^P for commands to ^X due to a collision with up key. * The ^F and ^B keys can be used instead of left and right arrows. * Support for qwertz keyboard layout. * Fixed a bug that caused quick hash checking to mark chunks as unfinished if it was unable to map them. * Peer info with the corrupt upload counter is now saved in the session torrent. Uninteresting peers are removed at regular intervals. * Allow only one connection from a single host. A peer's listening port is now kept track of separately from the connection port. * An integer is used in the session torrent instead of a bitfield when either none or all chunks are done. * Added code for preloading chunks that get mapped, currently disabled. * Added kqueue support, which can be enabled with --with-kqueue. Doesn't work on MacOSX 10.4 due to a kernel bug, and has too long polling timeouts. * Added --with-address-space=<MB> option to change the assumed address space size. Currently set to 1GB on 32bit arch, 4GB on 64bit. * When checking how much free disk-space remains, any file or directory that is a symlink is tested as they may be on a different mount point. * Fixed most of the bugs reported, too numerous to list here. If a bug is still present in this release, let me know. 2006-08-16 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.10.1 released * Max memory usage for mapped chunks is now controlled by ulimit or the "max_memory_usage" option. This only controls mapped memory, not resident. * Improved syncing so that it tries to sync chunks that are close together. Also the "safe_sync" option may be used to force MS_SYNC on buggy filesystems, like NFS in linux ~2.6.13. * Added "min/max_peers_seed" option which changes the min/max peers on torrents being seeded. Patch by Josef Drexler. * Save tracker enable/disable state. * UI code has been refactored and a menu added to the download window. * '^K' now sets ignore state so it can be used to quickly stop torrents that are in the watch directory, without needing 'I'. * Fixed several bugs. 2006-07-20 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.10.0 released * Optimized handshakes by disconnecting earlier and exchanging bitfields before creating the PeerConnection. * Added "close_low_diskspace" option that closes active downloads on filesystems with less space left than what was passed as the argument. Patch by Josef Drexler. * Added "stop_on_ratio" option and display the ratio. Patch by Josef Drexler. * Added "start_tied" option and the file association is not cleared when "*_untied" are called. The 'U' key will clear the file association and 'I' key will make the download ignore the commands. * Added "key_layout" option with support for azerty. * Added pageup/down to chunks seen and file list. Patch by Josef Drexler. * Added transfer list view, bound to the 'u' key. * Made handling of incoming bad data more robust. The blocks of a failed chunk is compared to previously downloaded blocks and a vote is given to the version it matches. * Show the download progress in closed torrents. * Quick hash check for new torrents or torrents with valid resume data. * Fixed so it applies the proper encoding for the base directory of multi-file torrents, as specified by the "encoding_list" option. * Added options for timeout_sync/safe_sync and max_chunks_queued. (for syncing) 2006-05-23 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.9.3 released * Fixed a bug that caused session torrents that were queued for hashing to cause an exception on load. * Fixed command-line argument's order being randomized when checking for the '-n' flag. * Don't fail tracker requests where the tracker sends a dictionary type for the "peers" field. 2006-05-19 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.9.2 released * Properly handle full disk. It first calls msync with MS_ASYNC, then 30 seconds later with MS_SYMC. This guarantees the data is written, while not blocking unnessesarily. * Completed message was not being sent to the tracker, fixed. * Added "-n" flag that disables loading of ~/.rtorrent.rc. * Added "close_untied=" option. 2006-05-04 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.9.1 released * Added views of the downloads that can be sorted and filtered. The keys '1' to '6' are bound to a set which can be modified with the 'view_*' options. (See man page) * Disconnect incoming connections early if the download is full. (Patch by Josef Drexler) * Made IPv6 and ncursesw configurable, neither of which are actually used yet. * Fixed mismatched delete/delete[] in Bitfield and various other bugs. * Added a "session_save" option which is scheduled by default every 30 minutes. 2006-04-06 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.9.0 released * Rewrote the chunk selector with support for rarity-first. * Added scrape information to the tracker list. * The uploaded field in tracker requests get reset every time a torrent is restarted, so buggy trackers don't think the client has uploaded more than it really did. * Show the client names and version in the peer list. * Added "send_buffer_size" and "receive_buffer_size" options that set the socket SND/RCBBUF sizes. * Added signal that allows the client to filter connections based on ip and port. Not implemented in the client yet. * Added "tos = default|lowdelay|throughput|reliability|mincost". * Close torrents with ^K. * Show seen chunks and seeder count with 'i', improved by Josef Drexler. * Added "enable_trackers=yes|no" option that can turn on/off the use of trackers on all torrents. * Re-added 'tracker_dump' option which takes a filename and output better formatted dumps. * A larger number of bugs fixed, minor features and cleanup of the API which I don't feel like writing here. 2006-02-16 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.8.5 released * Enabled the session lock file by default. Made it remove stale locks if the hostname matches and the process id is not running. * Added proper abstraction for creating timers from seconds, this fixes some overflow bugs when scheduling tasks like tracker timeouts. * For every time all the trackers in the list has been unsuccessfully tried, increase the timeout by 20 seconds. * Expand ~ in paths in the client. This should cover all uses of file paths, but I might have missed some. * Added "import" and "try_import" options that loads an option file. The latter silently fails on non-existent files. * Added "-O" flag that takes a single option, allowing ',' to be used. 2006-02-04 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.8.4 released * Bind udp and http tracker requests to the address given with the "bind" option. * Change the priority of a torrent with the '+' and '-' keys. * The schedule option allows clock time for the start and interval sections. * Made it safe to remove torrents being viewed/selected, making "remove_untied" usable. * Added the ^O key to change a closed torrent's destination directory. A bit of a hack, and only works if the torrents hasn't been activated. * Allow new settings to be applied with the ^P key. This can be tested with "print = foobar", which prints the string to the log. * Added the "working_directory" option that calls 'chdir' for the process. * Added the "session_lock" option that creates a lock file in the session directory. Currently it doesn't try to clean up after crashes or reboots, so it is by default disabled. * Fixed a bug that caused crashes with small screen sizes. 2006-01-17 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.8.3 released * Fixed a segfault, see "http://libtorrent.rakshasa.no/ticket/130". * Set SO_REUSEADDR for listening socket so that there's no need to wait for it to time out to reopen the same port. * Switched to compile with "-O2" rather than "-O3". * Improved the config file parser. 2006-01-09 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.8.2 released * Fixed a crash when changing file priorities and another caused by torrents with empty directories. * Don't send piece request before interested since some clients disconnects when that happens. BitTornado and uTorrent would send unchoked before the peer has sends interested, causing them to disconnect. * Allow wild-card '*' when loading torrents. * Added the load, load_run, stop_untied and remove_untied options. See the example rtorrent.rc for how to use these to watch a directory for new torrents. 2005-12-20 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.8.1 released * Improved error handling for settings and added scheduling of commands, which are currently limited to changing settings. * Added settings for using a http proxy and changing the process's umask. * Workaround for vfat's incomplete, though posix compatible, implementation of truncate. This blocks for a while when creating files on vfat etc. * Replaced many internal uses of sigc++'s slots with my own lightweight slot, this gets rid of about a megabyte of debugging symbols and a few hundred kb's of symbols. * Shows download time left and the number of failed pieces. * Fixed a buffer overflow in the peer connection's write buffer that could in some rare cases cause a crash. 2005-11-21 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.8.0 released * New throttle implementation. * Enabled global limit on uploads that depends on the upload throttle. Each download can have different priorities, at the moment seeded downloads get half as many upload slots. * Display the encoding of files, and allow the user to create a list of preferred encodings with the "encoding_list = <enc>" setting. * The client now identifies itself with the string "rtorrent/CLIENT_VERSION/LIBRARY_VERSION". * Show percentage completed when doing hash checking. 2005-10-18 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.7.6 released * Replaced most of the sigc++ slots used internally in libtorrent with my own lightweight functor. This saves some 600kb in debugging symbols. * Various bug fixes. 2005-09-28 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.7.5 released * Fixed a bug that caused download throttling to throw an exception. * Downloaded chunks scheduled for syncing didn't never got synced or unmap'ed, until the download was stopped. * Improved selection of which peers and how many get choked/unchoked, including a global limit on the number of unchoked peers with priorities for different downloads. The latter is currently disabled as it requires a change to the API to be used and requires more testing. 2005-09-18 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.7.4 released * New code for leeching connections, this will significantly improve performance when downloading. * Using lazy unmapping of downloaded chunks with msync. Lack of disk-space should cause a SIGBUS earlier and hopefully writes to disk will be less frequent. VSZ and RSS memory usage will display much larger values than before, but that is all disk cache. 2005-09-02 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.7.3 released * Proper fix for alignment bugs, use --enable-aligned if the automatic check doesn't work on your platform. * Refactored chunk management making it cleaner and simpler. This will make it easier to fix some msync related bugs and use some more complex disk access/store behavior. * For every new peer connection the client would spend time counting the set bits in the local bitfield. This was previously cached and was causing a significant resource usage. * Added PeerConnectionSeed class that is used for seeder connections. It fixes some design faults in the original PeerConnection and should use significantly less resources. When it is deemed stable it will be forked to create the new leeching connection. 2005-08-16 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.7.2 released * Fixed bug that caused a crash due to lack of cleanup of the tracker request when closing a download. * Detect if ints must be aligned, and if so use a (less efficient) way of reading/writing them from ProtocolBuffer. 2005-08-13 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.7.1 released * Replaced the old select based polling with a modular polling class which is exposed to the client. Support for 'epoll' and 'select' based polling included with the library, though the client may implement a replacement. * Support for variable sized fd_set's. Cleaned up the code that sets the max number of open files and sockets, it should now gracefully handle an _SC_OPEN_MAX limit from 64 and up. * When the download has less than min_peers connections, it will after 30 seconds request more from the trackers. This will only happen maximum 5 times and only if more peers have been connected to in the mean time. It supports multiple trackers by trying the other groups, though not other trackers within a group, if the first does not provide more peers. 2005-07-19 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.7.0 released * Added support for UDP trackers. It can be disabled with the "enable_udp_trackers" setting. * Cleaned up the API, it should be pretty stable for a while. Although polling will propably be changed in the future to allow for the use of both select and epoll. * File priorities are now saved with the fast-resume data. Fast-resume and start/stopped state is only used when loading torrents from a session directory. * Added support for allocating space for the torrents on disk that use XFS. Looked into posix_fallocate, but it uses a very inefficient method for allocating on the systems i tried it on. 2005-07-06 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.7 released * Added setting for randominzing the port to be opened, withing the port range. * Improved the throttling code, should be much better now. * Fixed a nasty memory leak in PeerConnectionBase. * The client now saves the started/stopped state of torrents. * Added an OpenSSL exception to the license, and switched from Mozilla NSS to OpenSSL SHA1 implementation. * Enabled SocketManager, which keeps track of how many open sockets we are using. The client will use sysconf(_SC_OPEN_MAX) to determine how many open sockets to allow. * New chunks are requested sequentially from a peer, if possible. 2005-06-26 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.6 released * Includes a man page with the listing of keys and settings. * Added setting for doing hash check of finished torrents, or manally using ^r. * Added setting for the session directory. * Use '*' in file list view to change the priority of all files in a torrent. * Manually cycle the list of trackers by using the space-bar. Usefull in torrents that have multiple trackers listed, but those trackers don't share peer data. 2005-06-15 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.5 released * Added view of global up/down rate. * Fixed several bugs in the throttle code, it should fill up the quota even when uploading to a large number of peers. * Fixed several FreeBSD compile errors and one for gcc compilers using deperecated stl features. * Fixed bug that caused endgame mode to not work properly. 2005-06-07 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.4 released * Library API cleanup. * Configuration file and command line options added. See rtorrent/doc/rtorrent.rc and the '-o' flag. 2005-05-30 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.3 released * Fixed lots of bugs etc. 2005-05-03 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.2 released * Fixed a bug that caused an exception to be thrown when downloading torrents that had a file with length zero. * Initial hash checking of torrents now do read-ahead based on bytes, not chunks. Also it gives up control after every chunk that is checked, which increases the responsiveness of the client during the hash checking. * Implemented a new generic throttle system. Throttling of download is done with capital A,S,D,Z,X,C, while upload throttle uses the old non-capital keys. 2005-04-24 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.1 released * Requests by peers for an invalid piece index would cause an internal error exception to be thrown due to wrong order of validity checks. * Fixed a bug in the polling code that would cause memory corruption on OpenBSD leading to a crash. * Files that were closed and then reopened (in large torrents) would get the wrong permission causing an exception. (Why does open(...) and mmap(...) use different flags...) 2005-04-17 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.6.0 released * Rewrote the polling code to (hopefully) be more efficient, though it still contains some debugging checks. They will be removed later. Cleaned up some other network related code. * Removed the dependency on OpenSSL due to licensing issues. The new SHA1 code is from the Mozilla's NSS codebase, which is partially licensed under MPL/LGPL/GPL. * Fine-grained read/write protection on files and chunks. You can now seed read-only files, though if it tries to download a chunk then the torrent will be stopped. * Force tracker requests with 'T' (capital), ignoring the tracker's "min interval". 2005-04-09 Jari Petter Sundell <[EMAIL PROTECTED]> * libtorrent 0.5.5 released * Number of simultaniously open files is limited globally. Torrents with a large number of files should work ok now. Though there isn't a limit on the global number of sockets open, so this could still exhaust the available file descriptors. * Bind the listening port to a specific ip with the "-b" flag. * Select a different default root path to save the torrents in with the "-d" flag. * Fixed bug which would cause the piece requests from super-seeds to stall in certain cases.