µTorrent is an efficient and feature rich BitTorrent client for Windows sporting a very small footprint. It was designed to use as little cpu, memory and space as possible while offering all the functionality expected from advanced clients.
With BitTorrent, you can download files faster and contribute by sharing files and bandwidth.
- Multiple simultaneous downloads
- Configurable bandwidth scheduler
- Global and per-torrent speed limiting
- Quick-resumes interrupted transfers
- RSS Downloader
- Trackerless support (Mainline DHT)
uTP is an alternative communication method for BitTorrent traffic that allows the client to automatically regulate its bandwidth usage to avoid adversely impacting your internet connection. This will allow you or other users on the network to download their torrents but still allow others on the network to function with little difference. This does not require any additional setup.
In addition, uTP in this version has added its own form of STUN, a method of getting incoming connections without direct connectivity to the Internet. This allows µTorrent to punch holes through routers and firewalls to increase connectivity and improve speeds. It is even possible to connect two firewalled peers through uTP's NAT traversal feature.
UDP trackers are a different protocol for tracker communication that uses significantly less processing power on the tracker end. It's important for us to support this because trackers have limited resources, so this should allow them to support many more users with their current hardware and not crash under the load.
The transfer cap settings were added in response to various users who have ISP-mandated caps on how much data they can download/upload in a month. Now you can track your usage in MB (with a handy graph to visualize it) and even configure µTorrent to stop torrenting once the limits are exceeded. Currently, you can configure the time interval, the data cap and whether it should stop based on only download, upload, or both combined.
3.4 is the first version to include a major change in the way that uTorrent chooses peers in a swarm. Designed by our own Arvid Norberg, Canonical Peer Priority is a way to help peers connect to the swarm faster, as well as reduce the average hop length from you to any other peer in the swarm.
When a bittorrent client joins a swarm, it needs a way to select which peers it connects to. If it chooses poorly, or if there are malicious actors in the swarm, the connections between clients are not well distributed through the swarm, leading to a large number of hops from node to node. That slows down the ability to each client to pass data on to the next.
You can read a more detailed technical discussion of the issues here, along with graphs and figures that drive home how bad the worst case can be. You can read more about graph connectivity here.
Perhaps one of the biggest changes, though, is one you cannot see. Our engineering team has been growing rapidly, and we have been busy changing our development and release processes. uTorrent 3.4 will mark the first release using improved processes that should allow us to release much more often, while keeping stability at the levels you have come to expect from the world’s fastest and lightest torrent client.
Our previous release cycle was slow. We followed the traditional alpha -> beta -> stable model that a lot of software development follows, for example large video games or operating systems. One of the problems with this style of development is as stabilization work continues on the features you just developed, new features are requested, or requirements change, and now you have to balance two lines of development in the same tree.
Also, with more developers, more changes can be made simultaneously … in theory. In reality, changes in unrelated modules (e.g. the installer) would impact when we could ship new code in other areas (e.g. the disk code), and of course, vice versa. This creates a vicious cycle, where each small problem creates a knock-on effect that impacts other features.
In a situation like this, instead of asking the business to “pick one thing and stick with it” the correct response is for the engineering team to change how they operate.
- On a small scale, picking one thing and sticking with it.
- On a larger scale Multiplexing the work into separate branches. We needed a way to release changes fast and reliably. This implied quite a few things:
- Don’t mix changes
- Release fast, review results fast This required us to build a few systems. Some of the larger ones:
- Our release system (code-named “Cherry”)
- Or automatic update system (code-named “The automatic update system”) It also required programming policies into the smaller parts of the system that already existed
- The build server
- The version control system
- New test servers
These systems, working together, can now answer the question: Is this feature ready for release? Will deploying this feature likely increase or decrease the crash rate?
We now build individual features in separate branches, which are automatically tested for stability before being integrated into the mainline. That gives us confidence that we won’t slow other engineers down, and that we won’t release a low-quality build to customers.
This effort would not have been possible without the support of the excellent engineering team at Bittorrent.
Download notes: Alternatively you can download the latest Beta version of this software.