Skip to content

0.1.0

Latest

Choose a tag to compare

@daniboybye daniboybye released this 11 Jun 21:53
· 12 commits to master since this release

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 .torrent file on disk
  • ElixirTorrent.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"}