What's Changed
BitTorrent v2
- v2-only
.torrentfiles and v2-only magnet links now download and seed, verified against their merkle piece hashes (BEP 52). A magnet'spiece layerslive in the torrent file, not the info dict, so they are fetched from peers with the v2 hash messages (21/22/23) and checked against each file'spieces rootbefore any content is requested. - Hybrid torrents announce under both info hashes, joining the v1 and v2 swarms at once and accepting incoming connections on either.
- Verified against libtorrent's own v2 test swarm: all ten piece layers fetched and checked in 83 ms, then 1.43 GiB of a 1.45 GiB torrent downloaded and hash-verified.
- No librqbit release implements BEP 52, so this is implemented in NanoTorrent on top of patched engine seams.
- Not yet: answering an incoming
hash request, and the v2 handshake bit on outgoing connections — NanoTorrent can join a v2 swarm but cannot bootstrap someone else's v2 magnet.
New protocol support
- BEP 6 — Fast extension. All five messages.
have all/have nonereplace a whole bitfield, and a declined request is answered withreject requestinstead of a dropped connection. - BEP 19 — WebSeed.
url-list(GetRight) seeds become synthetic peers fed by HTTP range requests, so their pieces are hash-checked like any other peer's. One request per piece, not per 16 KiB chunk, and a failed fetch retries rather than killing the seed. - BEP 21 —
upload_only. Set when we arrive already complete; two upload-only ends now hang up instead of holding an idle connection. - BEP 47 — Padding files. Recognised and hidden from file lists — they are alignment, not content. Preferences ▸ General shows them.
- BEP 29 — uTP. Preferences ▸ Connection, off by default.
- BEP 14 — Local service discovery. Preferences ▸ Connection, on by default.
Fixes
- The DHT was dead on Windows, failing 24 ms after start. Windows reports an ICMP port-unreachable by failing the next
recv_fromon a UDP socket, which Unix does not do — and there is always one dead bootstrap node.SIO_UDP_CONNRESETandSIO_UDP_NETRESETare now cleared on every UDP socket, fixing DHT, uTP and LSD together. - Creating a v1 torrent no longer emits
meta version 2and afile tree, which had made v1 output byte-identical to v2. - The web interface now selects files by their real index, so hidden padding files cannot shift the selection.
Under the hood
- Engine moved from librqbit 8.1.1 to 9.0.1; the patch set was re-cut against the new sources and consolidated to 13 numbered features across 16 files and four vendored crates.
- The Linux build stopped being a claim: a full run on Ubuntu 24.04 built both binaries warning-free, passed the suite, and downloaded a 123 MB torrent from real peers through the GUI.
Upgrading
- LSD is on by default — an upgraded profile starts announcing on the local network. Preferences ▸ Connection to turn it off.
- Padding files are now hidden, so file lists on hybrid and v2 torrents get shorter. Preferences ▸ General to show them again.
- macOS asks for local network access on first launch. That is LSD looking for peers on your own network; declining disables only that.
- Peer ID changes from
-NT0250-to-NT0300-.