HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
GGist
bip-rs
Rust2016–2016
GGist / bip-rs

bip-rs

BitTorrent Infrastructure Project In Rust

3Distinct people
3Mentions
0Explicit recommenders
297GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

BitTorrent Infrastructure Project In Rust

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week3 dated mentions

Observed mentions: 2016-06-02 01:47:47 UTC to 2016-07-06 16:29:50 UTC. Weeks start Monday, UTC.

0122016-05-30 00:00:00 UTC to 2016-06-06 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsMay 302016-06-06 00:00:00 UTC to 2016-06-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-06-13 00:00:00 UTC to 2016-06-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsJun 132016-06-20 00:00:00 UTC to 2016-06-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-06-27 00:00:00 UTC to 2016-07-04 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-07-04 00:00:00 UTC to 2016-07-11 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsJul 4

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
May 302016-05-30 00:00:00 UTC2016-06-06 00:00:00 UTC101
Jun 62016-06-06 00:00:00 UTC2016-06-13 00:00:00 UTC000
Jun 132016-06-13 00:00:00 UTC2016-06-20 00:00:00 UTC000
Jun 202016-06-20 00:00:00 UTC2016-06-27 00:00:00 UTC000
Jun 272016-06-27 00:00:00 UTC2016-07-04 00:00:00 UTC000
Jul 42016-07-04 00:00:00 UTC2016-07-11 00:00:00 UTC202

What Hacker News says

3 sources
> There is also another project in Rust, it looks more active: https://github.com/GGist/bip-rs Thanks, I had seen that one, but forgot about it. I think it's a great project, but it's really just a collection of libraries that don't really tell you how it all fits together, which when I was picking stuff up wasn't very helpful. Hopefully now I have a better understanding of the client design I can make something from that. > Doesn't look vague at all. What do you think is missing from it? For a comparison I would recommend reading a few (what I would consider) good protocol docs. Docs that you could read and implement, and probably get working very quickly, for example: - XMPP's XEPs (one picked for similarity in usage to BitTorrent) https://xmpp.org/extensions/xep-0020.html - Lots of examples in there for what messages should look like,
Read the rest
which is always helpful. - The BitTorrent RFC doc (linked in the original post) http://jonas.nitro.dk/bittorrent/bittorrent-rfc.html - Sums the situation up nicely with the layout of messages and value lengths. I think the main thing that makes the biggest difference is adhering to a language spec such as RFC 2119 which recommends using "MUST", "SHALL", "REQUIRED"; "MUST NOT", "SHALL NOT"; "SHOULD", etc. which makes it really clear what you're meant to do or not to. Specifically for the vagueness of BEP-3, how about this example that made me rage on IRC. In the description for the info_hash field in the Tracker section. This value will almost certainly have to be escaped. ALMOST CERTAINLY?? Will it, or won't it? Then, escaped? Escaped how? What this turned out to mean was that the 20-bit binary sha1 hash MUST be URL encoded, and not hex encoded. I would love to see someone try to build a BitTorrent client for the first time based solely on this doc. --- BEP-3 also seems more interested in implementation detail, than describing the protocol. Take the last paragraph (before Copyright) as an example. Something else which occurred to me today is that BitTorrent is not a spec, it's not been developed, it has evolved. Along with being built in a very modular way, i.e.: DHTs can replace trackers and simply dropped in, magnet URIs can replace Torrent files. This probably contributes it's success and longevity, but what this also means is that there is a lot of stuff, like metainfo, trackers, bencoding, that SHOULD belong in their own spec docs, which form a collective whole.
In Building a BitTorrent client from scratch in C#
> I also found a Rust implementation which seems not to compile, but is useful as I'm trying to teach myself Rust https://github.com/kenpratt/rusty_torrent I think the work to get it to compile might be minimal. There is also another project in Rust, it looks more active: https://github.com/GGist/bip-rs It is a collection of libraries. > If anyone who hasn't tried doing this before, the "official" BitTorrent spec docs, namely BEP-3 (http://bittorrent.org/beps/bep_0003.html), seem little more than a vague blog post turned in to a "spec". Doesn't look vague at all. What do you think is missing from it?
In Building a BitTorrent client from scratch in C#
I wouldn't take this as representative of normal Rust code. This is standard nom which I would categorize very much as a DSL of sorts for creating parser combinators. In order to understand this code you really have to understand the fundamentals of nom as the reason it is so powerful is because there is a bit of magic going on here. Also, I knew this piece of code looked familiar. For those that wanted to see this code with whitespace, https://github.com/GGist/bip-rs/blob/master/bip_utracker/src....
In Sapper, a lightweight web framework written in Rust

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.