Popular BitTorrent client Transmission today released its fourth major update. Among the list of changes: native Apple Silicon support.
Transmission 4 brings native support for Macs powered by the M1 and M2 chips. The Universal Binary runs natively on all Macs. Previous versions were Intel apps that ran on Apple Silicon via Rosetta.
The new update also brings a number of other new and updated features and fixes, including UI design changes, as well as better resource efficiency has also been improved, so the app now uses less memory and fewer CPU cycles.
The update also brings support for using BitTorrent v2 torrents and hybrid torrents, users can now set “default” trackers that can be used to announce all public torrents, and an option to omit potentially-identifying information (e.g. User-Agent and date created) when creating new torrents has been added.
Transmission’s full release notes:
This is a major release, both in numbering and in effort! It’s been in active development for over a year and has a huge list of changes — over a thousand commits — since Transmission 3.00. Some of the highlights include:
- Resource Efficiency – Use less memory and fewer CPU cycles
- Better Community – Pull requests welcomed and used
- Code Modernization – Migrated from C90 to modern C++
- New Features – What would a major release be without them?
- The code has been extensively profiled and improved to fix inefficient code and memory use. For example, a stress test of starting transmission-daemon with 25,000 torrents is almost entirely IO-bound, using 50% fewer CPU cycles and 70% fewer memory allocations than Transmission 3.00.
- The remote control GUIs (transmission-qt and transmission-web) now use the RPC API “table” mode, resulting in smaller payloads / less bandwidth use.
- RPC payloads are now compressed using libdeflate, a “heavily optimized [library that is] significantly faster than the zlib library.”
- The project is much more responsive to bug reports and code submissions than it has been in the past.
- There is a new group of volunteer contributors who are working on Transmission!
- Transmission 4.0.0 includes over 350 new community commits (see the Thank You section below and in the previous 4.0.0 betas) since 3.00 and welcomes new contributors.
- Documentation has been moved into the
transmission/transmissionso that contributors can submit PRs to improve it.
- The entire codebase has been migrated from C to C++. In the process, we’ve removed thousands of lines of custom code and used standard C++ tools instead. The core’s code has shrunk by 18%. The core codebase has been extensively refactored to be more testable and maintainable.
- The GTK client has been ported to gtkmm.
- The unit tests have been expanded and ported to Google Test. Clang sanitizer builds are run during CI.
- The core library is now fuzz tested.
- Transmission now uses Sonarcloud, Coverity, LGTM, and clang-tidy static analysis on new code. Several hundred code warnings have been fixed compared to Transmission 3.00.
- Support for using BitTorrent v2 torrents and hybrid torrents. (Support for creating v2 and hybrid torrents is slated for an upcoming release.)
- Users can now set “default” trackers that can be used to announce all public torrents.
- Newly-added seeds can start immediately and verify pieces on demand, instead of needing a full verify before seeding can begin. (#2626)
- Added an option to omit potentially-identifying information (e.g. User-Agent and date created) when creating new torrents. (#3452)
- The Web client has been rewritten and now supports mobile use.
- When creating new torrents, users can now specify the piece size. (#3768, #3145, #2805)
- IPv6 blocklists are now supported. (#3835)
- Beginning with 4.0.0-beta.1, Transmission releases now use semver versioning.
- Dozens of other new features — too many to list here! We’ve been working on this for a year!
What’s New Since 4.0.0-beta.3
libtransmission (All Platforms)
- Added a new setting,
torrent-added-verify-mode, to force-verify added torrents. (#4611)
- Improved handling of webseed servers that do not support Range requests or 206 Partial Content. (#4601)
- Improved handling of webseed servers that return a content-encoding that was not requested. (#4609)
4.0.0-beta.3potential socket leak. (#4616)
4.0.0-beta.3regression that failed to detect largefile build flags on 32bit systems. (#4627)
4.0.0-beta.1UI bug when removing a tracker from the announce list. (#4635)
- Improved error handling when receiving corrupt piece data from peers. (#4665)
4.0.0-beta.1FTBFS error on CentOS 7. (#4673, #4675)
- Made small performance improvements in libtransmission. (#4577, #4679)
- Dropped libiconv dependency in libtransmission. (#4565)
- Updated 403 RPC error message. (#4567)
- Bumped libdeflate snapshot to 1.17. (#4596)
- Fixed two Help menus in macOS. (#4500)
- Fixed bug that caused magnet links to always be paused when added. (#4528)
4.0.0-beta.1regression that broke the Piece View “blinking” when a piece completes. (#4587)
- Ensured that the preferences window is centered the first time it is shown. (#4659)
4.0.0-beta.1regression that incorrectly handled corrupt blocklists. (#4705)
- Increased the font size in the main window’s torrent list. (#4557)
- Fixed libpsl dependency build issue on macOS. (#4642)
- Made display order of speed limits consistent between Properties, Details dialogs. (#4677)
4.0.0-beta.1regression making it impossible to close “Set location” dialog (GTK 3 only). (#4625)
4.0.0-beta.2regression leading to crash during progress bars rendering on some systems. (#4688)
4.0.0-beta.1potential crash when detecting mime-types. (#4569)
4.0.0-beta.1regression that broke file priority buttons in the web client. (#4610)
- Fixed stderr logging issue when running as a
Transmission 4 is available for macOS, Windows, and Linux, and can be downloaded for free from the Transmission website.