New BitTorrent v2 Support A full BEP-52 implementation has been added to the program.  The primary benefit of this is the use of the block-level SHA-2 hash function instead of SHA-1 at the piece level.  However, there are also many other changes from the v1 protocol that required a major review and re-write of the torrent/peers/trackers/pieces core logic.  Combined version 1+2 torrents are also fully supported. Trackers All tracker function has been completely replaced with a newly-written implementation.  Dual-protocol and dual-interface announcement is now fully supported for each individual tracker. A tracker presets feature has been added, which can be accessed from Settings > Transfers > Trackers.  These presets can be set by simply right-clicking any transfer in the main window and using the Trackers sub-menu.  They are also accessible from the standard tracker-edit dialog, the transfer preload window, and the new seed creation dialog. A default preset for newly-loaded transfers can also be selected in the settings window.  This will be set into non-private transfers, upon loading, before applying the Individual Tracker Options. Peer Connections The peer connection logic has been largely re-written with major improvements in several areas. This was needed to accommodate the new v2 protocol messaging requirements, in particular the piece selection algorithms and file hash field synchronizing with other peers.  The new implementation takes full advantage of the fact that when a transfer is only downloading a subset of files, the new v2 protocol allows clients to only download hash data for files that are needed.  If managed correctly, this saves bandwidth, time, and memory, especially for extremely large torrents when only a few files are needed. It was also necessary in hybrid swarms to allow dual connections so peers can communicate over v1 and v2 simultaneously.  This is sometimes required for situations where there are many v1-only clients in a swarm and v2 hash-info is not fully available, which, when following the specification as-written, prevents pieces from being available over the v2 connection. The peer connection selection and management algorithms have been completely replaced with much more modern versions that can efficiently handle multiple ports connected from the same IP, perform regular peer-ID duplicate detection, and prioritize connections based on their protocol and piece availability.  Unusual situations such as losing pieces, or going from complete state to incomplete state, are now handled with great precision.  The process for gathering meta-info from peers has also been greatly improved and is much faster when dealing with extremely large torrents. Web Seeding Support for web seeds has been completely overhauled.  Peak speeds are much higher and far less CPU usage is needed to maintain a continuous flow of data. For better control over web seed connections, a brand-new Web Seed Request Limiter has also been created.  This is available from Settings > Transfers > Peers.  Simultaneous connections can be globally limited based on host name, and other rate-limiting/throttling parameters can also be set.  Rules can be customized for different hosts. DHT To provide peers to dual-protocol torrents, it was necessary to modify the DHT engine to schedule separate search/announce procedures for each protocol ID-hash that a particular torrent requires.  A major review and update of the DHT code was done to support this and also to add several other DHT protocol updates.  These updates were made in order to support upcoming Tixati features like mutable torrent support. New Seed Creator The seed creator (third tab in the Add window) has been completely replaced.  The new dialog allows flexible creation using files from different parts of the local file system, and will also let the user change the virtual-name of files and folders.  This enables you to fully customize the file structure in the torrent meta-info without needing that same structure replicated on the local file system. There are also numerous new options to select tracker presets, protocol and padding options, piece sizes, comments, and other technical parameters.  A full host of default options can be changed from the settings menu, including full control over the default piece size selection algorithm. You can also now drag-drop files and folders from the operating system directly into the transfers view to create new seeds.  When the Categories feature is enabled, you can drag-drop directly onto a category, or into the main view when a category is selected, and the new seed will be created in that category. File and Piece Handling All file handling logic has been revised.  The file-checker has an improved combined SHA-1 and SHA-2 multi-threaded piece reading and hashing pipeline, which will thoroughly cross-check all incoming and existing data in hybrid v1+2 torrents.  Checking speed has also improved on multi-CPU systems. For v2 torrents, all incoming 16K blocks are checked immediately upon download instead of waiting for full pieces, so malicious peers are eliminated from the swarm much quicker. New Tracker Options for Categories In the category properties and add windows, there is a new Trackers tab.  This contains an option to set a tracker preset on any transfer entering the category.  These options are also reflected on the category right-click menu. There were also several minor fixes to the category system.  The right-click options for a category separator now correctly control all categories following.  The Share sub-menu on categories has been fixed to show the checkbox states for channel mirroring correctly. Several Channel GUI Fixes The recently re-written color text controls that power the chat rooms and user browse window have undergone a few more changes to perfect the way scrolling and back-buffering work.  There were also other optimizations and adjustments to the background word-wrap updating routines and timing to further minimize CPU usage after a window full of text is resized. In addition, we fixed some minor problems with the channel restrictions window updating after rule changes, and also some word-wrap anomalies when switching between chat rooms. New Columns Transfers have two new optional columns, available from the Layout button menu in the main transfers view.  The Protocol column will show v1, v1+2, or v2.  The Trackers column will show the name of the current preset.  If there is no matching preset, either a hash identifier of the set (to be able to identify matching transfers) or in the case of only having one tracker, the tracker URL itself.  The tooltip in this column will always show the full set of tracker URLs. Peers also have a new optional Protocol column.  This shows either v1 or v2 for regular peers, or HTTP or HTTPS for web seed peers. Many Other GUI Improvements A new find-bar has been created for the Files tab in the main transfers view, and also the preload window.  Press CTRL-F when the view is in focus to make the find-bar appear at the top.  You can also use the F3/shift-F3 keys to step through matches. When new transfers are loaded, they are now selected and scrolled into view, including changing selected category if need be.  This works for any manually-created transfers, including pasting in magnet links via CTRL-V, drag-dropping .torrent or .magnet files, or creating new seeds. There have been dozens of other minor tweaks and improvements to the GUI, and several optimizations to reduce interface CPU usage on both GTK and Windows builds. Several Other Core Fixes During the course of development of this version, there have been countless other minor fixes and refinements made as problems were discovered.  Many opportunities for optimization were explored, and much testing was done.  We also analyzed all outstanding automated crash reports and applied several minor fixes.  This is the smoothest running Tixati that we have ever produced. More To Come We are working on several other major improvements to the transfers and channels systems, including file merging, channel feeds, and more protocols. |