All Versions
13
Latest Version
Avg Release Cycle
104 days
Latest Release
-

Changelog History
Page 1

  • v1.10 Changes

    Date:

    ๐Ÿ†• New Features:

    • API to create torrent metainfo (.torrent files)
    • โšก๏ธ Update Guice to 5.0.1 for Java 9 support
    • ๐Ÿ‘Œ Support callback functions for when
      • Torrent files complete downloading
      • The entire torrent completes downloading
    • ChooseFilesStage now allows SKIPPED, NORMAL_PRIORITY, and HIGH_PRIORITY for downloading
      • File download priority can be mutated while the torrent is downloaded. Skipping or unskipping files while the torrent is downloading is not supported.
    • โž• Add config switch to completely disable MSE negotiation
    • โž• Add config parameter for the time interval between reads in MSE negotiation
    • โž• Add config parameter for the max number of simultaneously assigned pieces for a single peer
    • โž• Add config parameter for the IP address to send to the tracker (for remote peers to use). Useful when behind a NAT. Only supported for http trackers currently.
    • โž• Add runtime builder methods for disabling PEX and LSD extensions

    ๐Ÿ› Bug Fixes/Improvements:

    • ๐Ÿ‘ Allow announce key to be missing in the torrent dictionary #42
    • ๐ŸŽ bt.data.digest.JavaSecurityDigester performance improvement #133
    • ๐Ÿ›  Fix NullPointerException in SocketChannelHandler.flush()
    • ๐Ÿ‘ป Do not throw "Unexpectedly interrupted" exception when message loop is shutdown
    • ๐Ÿ›  Fix missing breaks in MetadataFetchStage which could led to hang-ups
    • Indicate the listening TCP port in thread names
    • ๐Ÿ›  Fix ConcurrentModificationException in LocalServiceDiscoveryService
    • ๐Ÿ›  Fix memory leak in BtRuntime by making sure that shutdown hook is removed after shutdown is complete
    • ๐Ÿ›  Fix memory leak in event bus mechanism by making sure that torrent listeners are removed when torrent is stopped
    • Ensure that torrent descriptor is inactivated when BtClient.stop() is invoked
    • Multiple minor improvements to reduce memory allocations
    • More descriptive error message when there's insufficient room in buffer to read an integer
    • ๐Ÿ›  Implement LRU cache for open file handles (fixes issues with torrents with many files)
    • ๐Ÿ›  Fix NullPointerException in AdhocTorrentRegistry.unregister(TorrentId)
    • โšก๏ธ Updated the file I/O APIs to use FileChannel read/write so that multiple threads can concurrently read/write to different sections of an open file
    • โž• Add API to forcefully flush torrent data to persistent storage
    • ๐ŸŽ BTInteger uses Integer, Long, or BigInteger depending upon the number for space/performance savings
    • ๐Ÿ‘€ Download stage now uses a latch, rather than sleeping, to determine when the download is finished to go onto the seeding stage
    • โšก๏ธ Eliminate a 1 second wait for the initial torrent download by updating interested peers immediately if there are currently zero peers that the client is interested in
    • Torrent chunk verification now uses Stream APIs with a custom ForkJoinPool (if a desired amount of parallelism is requested) rather than an executor
    • 0๏ธโƒฃ DefaultDataDescriptor.filesForPieces now uses a List for indices rather than a map
    • LocalBitfield now uses a Copy On Write (COW) strategy for skipped pieces rathen than locking
    • PeerBitfields are read with BitSet.valueOf() rather than setting each Bit individually
    • Irrelevant pieces are filtered out of a bitset before they reach the piece selectors
    • The rarest piece selector now uses bucket sort based on max peer count rather than a MinHeap
    • The randomized rarest piece selector uses a precomputed random shuffle order to reduce the overhead of random piece shuffling
    • ๐Ÿ›  Fix double release issue in DefaultBorrowedBuffer, which eliminates the harmless exception "Buffer is locked and can't be released" that occured sometimes
    • ๐Ÿ›  Fix intermittent NullPointerException in DHT shutdown hook
    • ๐ŸŒฒ Lower logging level to debug on peer disconnects
    • ๐Ÿ”’ Eliminate possibility of a dead lock in peer connection handling code #170
    • ๐Ÿ†• New configuration option for adjusting the amount of memory used for hashing (verification) of data
    • ๐Ÿ›  Fix a dead-lock in SocketChannelHandler #183
  • v1.9 Changes

    December 14, 2019

    Date: 12/14/2019

    ๐Ÿ› Bug Fixes/Improvements:

    • onTorrentStarted called twice #117
    • โž• Add new onMetadataAvailable event (fired after torrent's metadata has been fetched)
    • ๐Ÿ‘ Allow cookie to be missing in the LSD announce message
    • ๐Ÿ‘‰ Make sure outgoing messages are never dropped
    • ๐Ÿ‘ Continuous piece assignments (better request pipelining)
    • Direct I/O
    • โž• Add configuration option for the number of outstanding requests
    • โž• Add configuration option for send/receive buffer size
    • โž• Add CLI parameter for DHT port
    • ๐Ÿ‘ Allow bogon addresses, when using private DHT
    • Reliably eliminate duplicate peer connections and self connections
  • v1.8 Changes

    June 14, 2019

    Date: 06/14/2019

    ๐Ÿ†• New Features:

    • UPnP port mapping #80
    • Generate OSGi manifests
    • โž• Add bt.data.DataDescriptor.getReader() method for convenient stream-like access to torrent's data

    ๐Ÿ› Bug Fixes/Improvements:

    • Outbound data silently discarded at high outgoing rates #94
    • Not possible to register consumers for a particular message type from more than one module #100
    • ๐Ÿ‘Œ Support Base32-encoded info hashes in magnet links
  • v1.7 Changes

    February 26, 2018

    Date: 02/26/2018

    ๐Ÿ”„ Changes/New Features:

    • ๐Ÿ‘Œ Support for file selection (aka partial downloads)

    ๐Ÿ› Bug Fixes/Improvements:

    • Avoid creation of unnessary empty dirs when reading from a FileSystemStorageUnit that maps to an absent file
    • BEncoder: sort dictionary keys as raw byte sequences, not alphanumerical strings #50
    • ๐Ÿ‘€ Randomized rarest-first selector behaves like a sequential selector when peers are seeds #53
    • Empty files should not prevent successful verification of torrent's data
    • 0๏ธโƒฃ NPE in DefaultChannelPipeline when there are unprocessed leftovers from MSE handshake #57
    • Incorrect behavior when the same peer participates in more than one torrent #67
  • v1.6 Changes

    January 27, 2018

    Date: 01/27/2018

    Official BEPs:

    ๐Ÿ› Bug Fixes/Improvements:

    • ๐Ÿ PeerTracker example does not work on Windows
    • ๐Ÿ‘ Allow to selectively enable only a subset of standard extensions, like PEX and LSD
    • Re-use native memory messaging buffers between different peer connections
    • Check the allowed crypto key size and disable MSE if insufficient #24
  • v1.5 Changes

    September 26, 2017

    Date: 09/26/2017

    ๐Ÿ”„ Changes/New Features:

    • Introduce a unified, centralized mechanism for publishing/receiving events
    • Introduce a processing stage listener mechanism

    ๐Ÿ› Bug Fixes/Improvements:

    • Disallow to set client's runtime other than via Bt factory method
    • Introduce module extenders for contributing custom extensions
    • ๐Ÿ“‡ Disable BEP-9 metadata exchange for private torrents
    • 0๏ธโƒฃ DefaultClient state fix when client is stopped PR#37
    • Announce stats to tracker on start, stop, complete
    • ๐Ÿ‘‰ Use I/O selector for receiving incoming messages
    • ๐Ÿ‘ Allow to override the number of peers to request from a tracker
    • Provide information on creation date and creator of the torrent
    • ๐Ÿ‘Œ Support empty files
  • v1.4.1 Changes

    August 20, 2017

    Date: 08/20/2017

    ๐Ÿ› Bug Fixes:

    • java.lang.IllegalAccessError when instantiating StandaloneClientBuilder from Scala PR#36
  • v1.4 Changes

    August 14, 2017

    Date: 08/14/2017

    ๐Ÿ”„ Changes/New Features:

    • Choose a specific network interface #20
    ๐Ÿ› Bug Fixes/Improvements:
    • ๐Ÿ‘‰ Use generic java.nio.files interfaces in FileSystemStorage #21 by Jeremy L. Morris (MorrisLaw)
    • โœ… Switch integration tests to using in-memory storage #27
    • UDP tracker request contains 0 as the listening port
    • Download not starting when using standalone client with private runtime #34
  • v1.3.1 Changes

    August 11, 2017

    Date: 08/11/2017

    ๐Ÿ› Bug Fixes:

    • java.lang.IllegalAccessError when running inside JBoss modules #32
  • v1.3 Changes

    July 29, 2017

    Date: 07/29/2017

    Official BEPs:

    ๐Ÿ”„ Changes/New Features:

    • โž• Added ByteRange for working with binary ranges based on byte arrays and byte buffers
    • ๐Ÿ‘Œ Support creating torrents from binary representation of info dictionary

    ๐Ÿ› Bug Fixes/Improvements:

    • Introduced notion of torrent processing chain
    • ๐Ÿ›  Fixed bug in extended protocol (invalid message type id mapping for peers) that sometimes prevented peers from receiving extended messages from Bt
    • โฌ‡๏ธ Reduced dependency on the presence of a torrent; using torrent ID where possible
    • Perform peers lookup for active torrents only
    • ๐Ÿ‘Œ Support HTTPS trackers
    • ๐Ÿ”ง Configurable list of bootstrap DHT nodes
    • ๐Ÿ”ง Configurable MSE private key size
    • ๐Ÿ Headless mode in CLI client (Windows compatibility)
    • ๐Ÿ›  Fix for occasional UI crashes in CLI client
    • ๐Ÿ‘ Allow to specify the desired log level in CLI client (normal, verbose, trace)