This is a bittorrent client. I am the introduction document and I need to be written by some generous soul!
Here is what I do to install haskell torrrent locally on my machine:
cabal install --prefix=$HOME --user
Since we are using the magnificient cabal, this is enough to install haskell torrent in our $HOME/bin directory.
Combinatorrent can currently only do one very simple thing. If you call it with
Combinatorrent foo.torrent
then it will begin downloading the file in foo.torrent to the current directory via the Bittorrent protocol.
Currently haskell-torrent supports the following BEPs (See the BEP Process document for an explanation of these)
Combinatorrent implicitly supports these extensions
Partially supported extensions:
0007: Combinatorrent understands and uses the "peers6" response from the tracker to connect clients. On the other hand, it does nothing to provide the "ipv4=" and "ipv6=" keys on tracker requests. As such, it can be claimed that 0007 support is available, as everything we left out is only qualified as MAY.
0023: Combinatorrent supports the "compact" response only, although it is explicitly stated that the client must support both. In practice it has little impact as all modern trackers will only return compact responses anyway.
Combinatorrent is not supporting these BEPs, but strives to do so one day:
For debugging, jlouis tends to use the following:
make conf build test
This builds Combinatorrent with the Debug flag set and also builds the software with profiling by default so it is easy to hunt down performance regressions. It also runs the internal test-suite for various values. There are a couple of interesting targets in the top-level Makefile
Protocol specification - BEP0003: This is the original protocol specification, tracked into the BEP process. It is worth reading because it explains the general overview and the precision with which the original protocol was written down.
Bittorrent Enhancement Process - BEP0000 The BEP process is an official process for adding extensions on top of the BitTorrent protocol. It allows implementors to mix and match the extensions making sense for their client and it allows people to discuss extensions publicly in a forum. It also provisions for the deprecation of certain features in the long run as they prove to be of less value.
wiki.theory.org An alternative description of the protocol. This description is in general much more detailed than the BEP structure. It is worth a read because it acts somewhat as a historic remark and a side channel. Note that there are some commentary on these pages which can be disputed quite a lot.
"Supervisor Behaviour" From the Erlang documentation. How the Erlang Supervisor behaviour works. The Supervisor and process structure of Combinatorrent is somewhat inspired by the Erlang ditto.
Data: Data structures.
Process: Process definitions for the different processes comprising Combinatorrent
Protocol: Modules for interacting with the various bittorrent protocols.
Top Level:
Haskell
99.3%
This is a bittorrent client. I am the introduction document and I need to be written by some generous soul!
Here is what I do to install haskell torrrent locally on my machine:
cabal install --prefix=$HOME --user
Since we are using the magnificient cabal, this is enough to install haskell torrent in our $HOME/bin directory.
Combinatorrent can currently only do one very simple thing. If you call it with
Combinatorrent foo.torrent
then it will begin downloading the file in foo.torrent to the current directory via the Bittorrent protocol.
Currently haskell-torrent supports the following BEPs (See the BEP Process document for an explanation of these)
Combinatorrent implicitly supports these extensions
Partially supported extensions:
0007: Combinatorrent understands and uses the "peers6" response from the tracker to connect clients. On the other hand, it does nothing to provide the "ipv4=" and "ipv6=" keys on tracker requests. As such, it can be claimed that 0007 support is available, as everything we left out is only qualified as MAY.
0023: Combinatorrent supports the "compact" response only, although it is explicitly stated that the client must support both. In practice it has little impact as all modern trackers will only return compact responses anyway.
Combinatorrent is not supporting these BEPs, but strives to do so one day:
For debugging, jlouis tends to use the following:
make conf build test
This builds Combinatorrent with the Debug flag set and also builds the software with profiling by default so it is easy to hunt down performance regressions. It also runs the internal test-suite for various values. There are a couple of interesting targets in the top-level Makefile
Protocol specification - BEP0003: This is the original protocol specification, tracked into the BEP process. It is worth reading because it explains the general overview and the precision with which the original protocol was written down.
Bittorrent Enhancement Process - BEP0000 The BEP process is an official process for adding extensions on top of the BitTorrent protocol. It allows implementors to mix and match the extensions making sense for their client and it allows people to discuss extensions publicly in a forum. It also provisions for the deprecation of certain features in the long run as they prove to be of less value.
wiki.theory.org An alternative description of the protocol. This description is in general much more detailed than the BEP structure. It is worth a read because it acts somewhat as a historic remark and a side channel. Note that there are some commentary on these pages which can be disputed quite a lot.
"Supervisor Behaviour" From the Erlang documentation. How the Erlang Supervisor behaviour works. The Supervisor and process structure of Combinatorrent is somewhat inspired by the Erlang ditto.
Data: Data structures.
Process: Process definitions for the different processes comprising Combinatorrent
Protocol: Modules for interacting with the various bittorrent protocols.
Top Level:
Haskell
99.3%