cratetorrent
cratetorrent copied to clipboard
Milestone tracking issue
trafficstars
Pre-alpha
- [x] Perform a single in-memory download of a file with a single peer connection if given the address of a seed and the path to the torrent metainfo. No multiple torrents, no seeding, no optimizations, or any other feature you might expect from a full-fledged BitTorrent library.
- [x] Extend previous addition with actually saving the downloaded file to disk after verification.
- [x] Download a directory of files using a single peer connection.
- [x] Download a torrent using multiple connections.
- [x] Optimize download performance to use self-adjusting optimal request queue
sizes and slow start mode for ramping up download throughput (see #40).
- [x] Add request timeouts (#18)
- [x] Share a piece download (#45)
Alpha release: 0.1.0
- [x] Seed a torrent (#50)
- [x] Get peers from an HTTP tracker (#51)
- [x] Torrent's peer management (#64)
- [x] Simplified notification system + public API (#52)
- [x] Improved API docs (#56)
- [x] Update dependencies (tokio 0.3 in particular -- [update]: can't update tokio yet, see #76)
- [x] Decide whether to use simplified 0.x.y semver or with pre-release tag. Former is simpler, latter more correct (though the semver spec covers the 0.x.y use case) while being more complicated for little gain: we don't have parallel releases that rely on strict semver.
- [x] Fix inconsistencies (import stye, namings, etc) and clippy lints
- [x] Read cache upper bound (#22) or remove entirely for mvp
- [x] Basic TUI for CLI app (#74)
- [x] Use simple non-tui CLI binary for tests as it breaks seeding
- [x] Cargo release
- [x] Remove unused benches
- [x] Link to docsrs in readme, and other fancy badges
0.1.x
- [ ] Make cross-platform (#88)
- [ ] UDP tracker support (#97)
- [ ] License files (#91)
Priority
- DHT
- magnet links
Future features not yet scheduled
- persisting torrent metadata to continue them after restart
- disk-network IO backpressure to optimize performance and stability
- UPnP
- Fast Extension
- stream encryption
- uTP sockets
- file padding
- BT2.0
- rate limiting
- file priorities
- piece picking strategies (sequential, rarest first, other)
- make storage backend system agnostic/generic
Alpha (MVP) release scheduled
There is no point in developing this in hiding forever. Therefore, an MVP release is planned with a minimum feature set to make it remotely viable as a torrent engine.
This is likely going to be 1.0.0-alpha.x.
Updated milestones to reflect this.