Skip to content

Releases: frostwire/frostwire-jlibtorrent

release/2.0.11.0 (beta)

27 Sep 23:47
Compare
Choose a tag to compare
Pre-release

Welcome to jlibtorrent 2.0.11.0

This is our first build of jlibtorrent-2.0, all tests are passing but we have yet to integrate the library with a production bittorrent client such as FrostWire for Desktop and FrostWire for Android.

We'll be doing so over the next weeks, and once we've throughly tested everything is working as expected we'll promote our next build (if necessary) to a stable release you can use to update your app to support bittorrent 2.0 features, plus all the fixes in libtorrent made the last 15 months.

  • Migration and Integration

    • Migration to support libtorrent 2.0 integration.
    • Maintained 1.2.x on a separate branch without active maintenance; pull requests are welcome.
  • SWIG Interface Enhancements

    • Modularization of SWIG Interfaces:

      • SWIG interface files have been modularized for better maintainability and readability.
      • Added separate .i files for various libtorrent components, including:
        • libtorrent_address.i
        • libtorrent_tcp_endpoint.i
        • libtorrent_udp_endpoint.i
        • libtorrent_kademlia_dht_state.i
        • libtorrent_client_data.i
        • libtorrent_sha1_hash.i
        • libtorrent_info_hash.i
        • libtorrent_storage_defs.i
        • libtorrent_bitfield.i
        • libtorrent_operations.i
        • libtorrent_error_code.i
        • libtorrent_announce.i
        • libtorrent_file_storage.i
        • libtorrent_peer_request.i
        • libtorrent_bdecode.i
        • libtorrent_torrent_info.i
        • libtorrent_torrent_flags.i
        • libtorrent_add_torrent_params.i
        • libtorrent_close_reason.i
        • libtorrent_peer_info.i
        • libtorrent_torrent_handle.i
        • libtorrent_torrent_status.i
        • libtorrent_performance_counters.i
        • libtorrent_portmap.i
        • libtorrent_piece_block.i
        • libtorrent_socket_type.i
        • libtorrent_entry.i
    • Alert Types Integration:

      • Integrated additional alert type interface files to comprehensively cover libtorrent's alert system:
        • libtorrent_dht_announce_alert.i
        • libtorrent_external_ip_alert.i
        • libtorrent_listen_failed_alert.i
        • libtorrent_listen_succeeded_alert.i
        • libtorrent_incoming_connection_alert.i
        • libtorrent_peer_alert.i
        • libtorrent_dht_direct_response_alert.i
        • libtorrent_dht_outgoing_get_peers_alert.i
        • libtorrent_dht_pkt_alert.i
        • libtorrent_udp_error_alert.i
        • libtorrent_dht_sample_infohashes_alert.i
        • libtorrent_tracker_alert.i
        • libtorrent_dht_lookup.i
        • libtorrent_portmap_alert.i
        • libtorrent_portmap_error_alert.i
        • libtorrent_dht_mutable_item_alert.i
        • libtorrent_dht_put_alert.i
        • libtorrent_session_stats_alert.i
        • libtorrent_peer_log_alert.i
        • libtorrent_read_piece_alert.i
        • libtorrent_dht_stats_alert.i
        • libtorrent_torrent_conflict_alert.i
    • Type Aliases and Templates:

      • Introduced typed_bitfield template for handling different index types, enhancing type safety and flexibility.
    • Operator Renaming:

      • Mapped C++ operators to Java-friendly method names using %rename directives:
        • operator== to op_eq
        • operator!= to op_ne
        • operator< to op_lt
        • operator> to op_gt
        • operator<= to op_lte
        • operator>= to op_gte
        • operator~ to op_inv
        • operator^ to op_xor
        • operator| to op_or
        • operator& to op_and
        • operator[] to op_at
      • Included boost_system_error_code.i for proper error handling.
  • Build Scripts and Dependencies

    • Added New Build Options:

      • Introduced --swig-only and --build-only options to the SWIG/build scripts (run-swig.sh and build.sh).
        • --swig-only: Executes only the SWIG interface generation without initiating the build process.
        • --build-only: Runs only the build process using pre-generated SWIG wrappers, skipping the SWIG generation phase.
      • These options provide developers with greater flexibility during development and testing by allowing selective execution of build stages.
    • Build Script Enhancements:

      • Added prepare-macos.sh script to automate the installation of dependencies and the required SWIG version on macOS systems.
        • Installs necessary packages using Homebrew (wget, pcre2).
        • Checks and installs SWIG version 4.2.1 if not already present.
        • Verifies successful installation post-build.
      • Updated run-swig.sh script to handle platform-specific code adjustments and ensure correct SWIG version usage.
        • Implemented additional sed commands to fix code issues in libtorrent headers before SWIG processing.
        • Added safeguards to handle SWIG failures gracefully, providing informative messages and exiting if necessary.
        • Updated build flags and configurations to align with the latest libtorrent ABI versions.
        • Set TORRENT_ABI_VERSION=4 and updated namespaces for versions 3 and 4.
  • Dependency Upgrades

    • Boost Upgrade:

      • Upgraded Boost library to version 1.86.0 to improve performance and compatibility.
    • OpenSSL Upgrade:

      • Updated OpenSSL to version 1.1.1t to enhance security and support the latest protocols.
    • Gradle Upgrade:

      • Upgraded Gradle to version 8.10.2 to leverage new features and improvements in build automation.
    • Java Development Kit (JDK):

      • Jar built with JDK 11, ensuring compatibility with the build environment.
    • Libtorrent Update:

      • Updated libtorrent to RC_2_0 (rev: 2ab8fedabb7716947edc77958da6d0b5e1040df9) to incorporate the latest fixes and features from the libtorrent 2.0 branch.
    • Android NDK Upgrade:

      • Upgraded Android NDK to version r26d (LTS) from r25c, providing the latest toolchains and platform support.
    • SWIG Upgrade:

      • Upgraded SWIG to version 4.2.1 to improve interface generation and support new language features.
  • Exception and Error Handling

    • Enhanced Exception Handling:
      • Improved exception translation from C++ to Java within SWIG interfaces to ensure robust error management.
  • Compatibility and Performance Fixes

    • Fixed Compatibility Issues:

      • Resolved syntax issues in file_storage.hpp and ip_filter.hpp to ensure successful SWIG processing and avoid compilation errors.
      • Adjusted build flags and macros for Boost and libtorrent compatibility across different platforms.
    • Performance Optimizations:

      • Optimized SWIG typemaps and wrappers for efficient data handling, minimizing performance overhead in Java bindings.
  • Directors and Inheritance

    • Enabled SWIG Directors:
      • Enabled directors for classes requiring Java-side inheritance, facilitating the overriding of C++ virtual methods in Java subclasses:
        • add_files_listener
        • set_piece_hashes_listener
        • alert_notify_callback
        • swig_plugin
        • posix_wrapper
  • Code Clean-up and Maintenance

    • Ignored Deprecated and Internal Elements:

      • Excluded numerous deprecated methods, internal functions, and classes from the SWIG interface to streamline Java bindings and prevent potential conflicts.
    • Removed Redundant Code:

      • Deleted unnecessary %ignore directives and obsolete SWIG configurations to maintain a clean and maintainable interface.
    • Enhanced Documentation:

      • Improved comments and added TODOs for future integrations, such as web_seed_entry.hpp once merged from the master branch.
2.0.11.0
 * Migration to support libtorrent 2.0 integration
 * Maintained 1.2.x on a separate branch without active maintenance; pull requests are welcome
 * SWIG interface files have been modularized for better maintainability and readability
 * Added missing alert types
 * Introduced typed_bitfield template
 * Operator renaming for Java compatibility
 * Included boost_system_error_code.i
 * Added prepare-macos.sh script
 * Updated run-swig.sh script
 * Set TORRENT_ABI_VERSION=4
 * Boost 1.86.0 upgrade
 * OpenSSL 1.1.1t upgrade
 * Gradle 8.10.2 upgrade
 * Jar built with JDK 11
 * Libtorrent updated to RC_2_0 (rev:2ab8fedabb7716947edc77958da6d0b5e1040df9)
 * Android NDK r26d (LTS) upgrade (from r25c)
 * Added `--swig-only` and `--build-only` options to swig/build scripts
 * Added `prepare-macos.sh` script for macOS build setup
 * Updated `run-swig.sh` script for improved SWIG processing 
 * Upgraded SWIG to 4.2.1
 * Enhanced exception handling in SWIG interfaces
 * Fixed issues in file_storage.hpp and ip_filter.hpp
 * Adjusted build flags and macros for Boost and libtorrent compatibility
 * Enabled SWIG directors for specific classes
 * Ignored deprecated methods in SWIG interface
 * Improved documentation and added TODOs
 * lt:fix uTP issue where closing the connection could corrupt the payload
 * lt:apply DSCP/TOS to sockets before initiating the TCP connection
 * lt:assume copy_file_range() exists on linux (unless old glibc)
 * lt:fix issue where set_piece_deadline() did not correctly post read_piece_alert
 * lt:fix integer overflow in piece picker
 * lt:torrent_status::num_pieces counts pieces passed hash check, as documented
 * lt:check settings_pack::max_out_request_queue before performance alert
 * lt:allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
 * lt:add feature to async_move_storage() to not move files
 * lt:fix reject resume data if it contains mismatching info hashes
 * lt:fix clear the candidate_cache when clear peer_list
 * lt:fix missing python converter for dht::announce...
Read more

release/1.2.19.0

30 May 00:34
Compare
Choose a tag to compare

image

Mon, May 29, 05:53 PM (Mountain Time) [Memorial Day 2023]

MD5 hash
7bbadb2696c8c439ccc7bcb2f85c8e58 jlibtorrent-1.2.19.0.jar

6fc4720d320f21a87b20e82922c32437 jlibtorrent-windows-1.2.19.0.jar
6becf99cdd77eae85e895b978fd02d0e jlibtorrent-macosx-x86_64-1.2.19.0.jar
a80f178bf8a390395e4bc0d6dd761bc8 jlibtorrent-macosx-arm64-1.2.19.0.jar
98bc84ab24bb8ee734d45964ede859d2 jlibtorrent-linux-1.2.19.0.jar

cf2105c451133b999a5c988658d69351  jlibtorrent-android-arm-1.2.19.0.jar
9ebe2adcfb22252a59bc930e6d80c25b  jlibtorrent-android-arm64-1.2.19.0.jar
dc64de9fce4376a4bc654bcded341da9  jlibtorrent-android-x86-1.2.19.0.jar
a9cc8556573e86f1634f58491dd406af  jlibtorrent-android-x86_64-1.2.19.0.jar

1.2.19.0

  • boost 1.82 upgrade
  • openssl 1.1.1t upgrade
  • gradle 8.1.1 upgrade
  • jar built with jdk20
  • libtorrent update to RC_1_2 adac0d0843c7fb2180f43d20bd5bee0e380e4673
  • android NDK r25c (LTS) (from r25b)
  • lt:back-port load_torrent_*() functions
  • lt:fix issue with odd piece sizes
  • lt:fix issue where stop-when-ready would not close files
  • lt:uTP performance, fix packet loss when sending is stalled
  • lt:uTP performance, prevent premature timeouts/resends
  • lt:uTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
  • lt:uTP performance, piggy-back held back undersized packet with ACKs
  • lt:uTP performance, don't send redundant deferred ACKs
  • lt:fix wanted_done/done accounting when force-rechecking
  • lt:expose userdata via torrent_handle (back-port from 2.0)
  • lt:fix renaming of filenames that are too long for the filesystem
  • lt:made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)

release/1.2.17.0

12 Sep 00:21
Compare
Choose a tag to compare

Sep 11, 2022 06:16 PM (Mountain Time)

MD5 hash
a0c8587ffc58f4409d65d7e777e412d0 jlibtorrent-1.2.17.0.jar

31486698594c06b078759b62e97e7e83 jlibtorrent-windows-1.2.17.0.jar
9e2aa3dc9d1d6df0bee1062526b2b287 jlibtorrent-macosx-x86_64-1.2.17.0.jar
12feb53451f57f96405700629d91c9ac jlibtorrent-macosx-arm64-1.2.17.0.jar
6f62cad7853ac7d9291d1a18b99c0187 jlibtorrent-linux-1.2.17.0.jar

1b652ea8cdfa7a2a0f7788ee15db9155 jlibtorrent-android-arm-1.2.17.0.jar
14dd16b31b674e0b71b9db07ccf7da2a jlibtorrent-android-arm64-1.2.17.0.jar
82587f935555df01fe61e432c37afbf6 jlibtorrent-android-x86-1.2.17.0.jar
689ab7ab5f5973b03baa334bb79ecfda jlibtorrent-android-x86_64-1.2.17.0.jar

1.2.17.0

  • boost 1.80 upgrade
  • openssl 1.1.1q upgrade
  • gradle 7.5.1 upgrade
  • libtorrent update to RC_1_2 b5873f23b40ef9054b2bd6a4db2a2d327a56d4b1
  • android NDK r25b (LTS) update (from r23)
  • lt:fix wanted_done/done accounting when force-rechecking
  • lt:expose userdata via torrent_handle (back-port from 2.0)
  • lt:fix renaming of filenames that are too long for the filesystem
  • lt:made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)
  • lt:fixed tracker connections spinning when hostname lookups stall
  • lt:fixed error in pkg-config file generation in Jamfile
  • lt:improve backwards compatibility with loading magnet link resume files
  • lt:fix bind-to-device for tracker announces and UPnP
  • lt:rename peer_tos setting to peer_dscp
  • lt:fix bdecode support for large strings (>= 100 MB)

release/1.2.16.0

20 Apr 22:43
Compare
Choose a tag to compare

Update Apr 26, 2022 03:50 PM (Mountain Time)

New Linux binary jar available

MD5 hash
2d04ebf22420af0458e72d18a1ce53a2  jlibtorrent-linux-1.2.16.0.jar

Update Apr 22, 2022 11:54 AM (Mountain Time)

New android binary jars available

MD5 hashes
e5a831edc666ad7daed368d7a97deaf4  jlibtorrent-android-arm-1.2.16.0.jar
9870ac626a0663245fd93bf1a2aa26ab  jlibtorrent-android-arm64-1.2.16.0.jar
7a8da00a9e26f769ef27ed1e7fdb565b  jlibtorrent-android-x86-1.2.16.0.jar
1a5095c052ae0d17beff397d740953f8  jlibtorrent-android-x86_64-1.2.16.0.jar

Update Apr 22, 2022 10:49 AM (Mountain Time)

The android binary jars were faulty, a missing patch for networking wasn't included and it breaks network connectivity. Will be uploading a fix soon.

1.2.16.0

  • Expose settings_pack.validate_https_trackers with SettingsPack::validateHttpsTrackers methods
  • upgrade to boost 1.79
  • openssl 1.1.1n upgrade
  • fix bdecode support for large strings (>= 100 MB)
  • 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

release/1.2.15.2

21 Jan 20:49
Compare
Choose a tag to compare

1.2.15.2

  • less verbose error messages when loading the library

release/1.2.15.1

07 Jan 19:38
Compare
Choose a tag to compare

1.2.15.1

  • openssl 1.1.1m upgrade
  • upgrade to boost 1.78
  • new macos M1 .dylib binary (arm64)
  • lt:don't disable announcing from local endpoints because of temporary failures
  • lt:fix issue in parsing UPnP XML response with multiple forwarding services
  • lt:cache DNS lookups for SOCKS5 proxy
  • lt:fix stalled pieces on disk-full errors
  • lt:fix build configuration issue on NetBSD, OpenBSD and DragonFly
  • lt:make UTF-8 sanitization a bit stricter. This will re-write invalid UTF-8 code points encoding surrogate pairs
  • lt:fix restoring last_seen_complete from resume data
  • lt:fix issue on MacOS where the DHT was not restarted on a network-up notification
  • lt:make remove_torrent flags be treated as flags (instead of an enum)

image
Free Photo by Aaron Burden, available for hire

release/1.2.14.2

12 Nov 21:11
Compare
Choose a tag to compare

1.2.14.2

  • upgraded to boost 1.77

No C++ libtorrent code changes, just new updated JNI code and auto-generated java, below new binaries now compiled with boost 1.77 using our Dockerfile and a Macbook Pro 2019 - 2.4 GHz 8-Core Intel Core i9 on macOS Big Sur 11.6

image
copyright free photo by Bill Jelen

release/1.2.14.1

12 Sep 17:35
Compare
Choose a tag to compare

arm crash is gone!
This release affects mostly Android builds, desktop should work just fine with 1.2.14.0.

jlibtorrent 1.2.14.1

  • Android builds updated to NDK r23 (LTS)
  • Builds with -std=c++17
  • Docker image simplification and cleanup using android ndk prebuilt toolchain folder
  • swig/build- scripts now have run_native_jar command to build only the corresponding native jar
  • SWIG 4.0.2 ensured on all architectures
  • lt:Fixes null pointer libtorrent crash on enum_net iface_from_ifaddrs

image

release/1.2.14.0

13 Aug 16:17
Compare
Choose a tag to compare

If you develop commercial apps with jlibtorrent, please consider a donation to support its continued development, feels good!

photo-1567253522526-7aeee1982711

Friday, Aug. 13th 2021

1.2.14.0

  • Android builds no longer use netlink sockets, instead use ifaddr sockets
  • Android 6.0 and below compatibility dropped. Compatible with SDK 24 (Android 7.0) and up
  • openssl 1.1.1l upgrade
  • lt:fix issue on MacOS where the DHT was not restarted on a network-up notification
  • lt:make remove_torrent flags be treated as flags (instead of an enum)
  • lt:improve handling of seed flag in PEX messages
  • lt:fix issue of accruing unlimited DHT node candidates when DHT is disabled
  • lt:fix bug in parsing chunked encoding
  • lt:fix incorrect reporting of active_duration when entering graceful-pause

Update: New Binaries with openssl 1.1.1l have been uploaded on Aug. 31st 2021, 5:56PM EST

release/1.2.13.0

23 Feb 04:02
Compare
Choose a tag to compare

image

Update Fri March 12th, 2021.
Re-built android jars and uploaded them.
Will re-build Windows, Mac, and Linux with the new Docker based builds.

Update Sun March 14th, 2021.
Uploaded Windows, Mac and Linux binaries.

1.2.13.0

  • openssl 1.1.1j upgrade
  • lt:fix incoming TCP connections when using tracker-only proxy
  • lt:fix issue with paths starting with ./
  • lt:fix integer overflow when setting a high DHT upload rate limit
  • lt:improve Path MTU discovery logic in uTP
  • lt:fix overflow issue when rlimit_nofile is set to infinity
  • lt:Fix cxxflags and linkflags injection via environment variables