First public release — BitTorrent client engine publishable as a Hex dependency.
This is a fully functional BitTorrent client that actually downloads torrents — not a stub or protocol sketch. It started as a course project for Functional Programming with Elixir at Sofia University. After the course ended, development continued in spare time until it was ready to publish on Hex.
Public API
ElixirTorrent.download/1— start a download from a.torrentfile on diskElixirTorrent.stats/2— poll name, speeds, and progress for a running torrent- Escript entrypoint for CLI usage
Protocol & networking
- Peer wire protocol (BEP 3) with choking, rarest-first piece selection, and endgame mode
- Fast Extension (BEP 6) —
allowed_fast, reject on choked requests - IPv6 tracker peers (
peers6) and dual-stack listen sockets - Multi-homed HTTP announce (BEP 7) over IPv4 and IPv6
- HTTP and UDP trackers (BEP 15), compact peer lists (BEP 23)
Install via Hex: {:elixir_torrent, "~> 0.1.0"}