raptorq
Rust implementation of RaptorQ (RFC6330)
Recovery properties: Reconstruction probability after receiving K + h packets = 1 - 1/256^(h + 1). Where K is the number of packets in the original message, and h is the number of additional packets received. See "RaptorQ Technical Overview" by Qualcomm
Examples
See the examples/ directory for usage.
Benchmarks
The following were run on an Intel Core i5-6600K @ 3.50GHz
Symbol size: 1280 bytes (without pre-built plan)
symbol count = 10, encoded 127 MB in 0.532secs, throughput: 1924.7Mbit/s
symbol count = 100, encoded 127 MB in 0.590secs, throughput: 1734.6Mbit/s
symbol count = 250, encoded 127 MB in 0.572secs, throughput: 1788.4Mbit/s
symbol count = 500, encoded 127 MB in 0.549secs, throughput: 1858.8Mbit/s
symbol count = 1000, encoded 126 MB in 0.599secs, throughput: 1695.5Mbit/s
symbol count = 2000, encoded 126 MB in 0.673secs, throughput: 1509.1Mbit/s
symbol count = 5000, encoded 122 MB in 0.758secs, throughput: 1288.3Mbit/s
symbol count = 10000, encoded 122 MB in 0.953secs, throughput: 1024.7Mbit/s
symbol count = 20000, encoded 122 MB in 1.383secs, throughput: 706.1Mbit/s
symbol count = 50000, encoded 122 MB in 2.041secs, throughput: 478.5Mbit/s
Symbol size: 1280 bytes (with pre-built plan)
symbol count = 10, encoded 127 MB in 0.241secs, throughput: 4248.7Mbit/s
symbol count = 100, encoded 127 MB in 0.160secs, throughput: 6396.5Mbit/s
symbol count = 250, encoded 127 MB in 0.173secs, throughput: 5913.0Mbit/s
symbol count = 500, encoded 127 MB in 0.176secs, throughput: 5798.3Mbit/s
symbol count = 1000, encoded 126 MB in 0.200secs, throughput: 5078.1Mbit/s
symbol count = 2000, encoded 126 MB in 0.208secs, throughput: 4882.8Mbit/s
symbol count = 5000, encoded 122 MB in 0.280secs, throughput: 3487.7Mbit/s
symbol count = 10000, encoded 122 MB in 0.400secs, throughput: 2441.4Mbit/s
symbol count = 20000, encoded 122 MB in 0.494secs, throughput: 1976.8Mbit/s
symbol count = 50000, encoded 122 MB in 0.656secs, throughput: 1488.7Mbit/s
Symbol size: 1280 bytes
symbol count = 10, decoded 127 MB in 0.723secs using 0.0% overhead, throughput: 1416.2Mbit/s
symbol count = 100, decoded 127 MB in 0.701secs using 0.0% overhead, throughput: 1460.0Mbit/s
symbol count = 250, decoded 127 MB in 0.650secs using 0.0% overhead, throughput: 1573.8Mbit/s
symbol count = 500, decoded 127 MB in 0.638secs using 0.0% overhead, throughput: 1599.5Mbit/s
symbol count = 1000, decoded 126 MB in 0.676secs using 0.0% overhead, throughput: 1502.4Mbit/s
symbol count = 2000, decoded 126 MB in 0.764secs using 0.0% overhead, throughput: 1329.4Mbit/s
symbol count = 5000, decoded 122 MB in 0.896secs using 0.0% overhead, throughput: 1089.9Mbit/s
symbol count = 10000, decoded 122 MB in 1.176secs using 0.0% overhead, throughput: 830.4Mbit/s
symbol count = 20000, decoded 122 MB in 1.489secs using 0.0% overhead, throughput: 655.9Mbit/s
symbol count = 50000, decoded 122 MB in 2.633secs using 0.0% overhead, throughput: 370.9Mbit/s
symbol count = 10, decoded 127 MB in 0.713secs using 5.0% overhead, throughput: 1436.1Mbit/s
symbol count = 100, decoded 127 MB in 0.702secs using 5.0% overhead, throughput: 1457.9Mbit/s
symbol count = 250, decoded 127 MB in 0.637secs using 5.0% overhead, throughput: 1605.9Mbit/s
symbol count = 500, decoded 127 MB in 0.613secs using 5.0% overhead, throughput: 1664.8Mbit/s
symbol count = 1000, decoded 126 MB in 0.643secs using 5.0% overhead, throughput: 1579.5Mbit/s
symbol count = 2000, decoded 126 MB in 0.701secs using 5.0% overhead, throughput: 1448.8Mbit/s
symbol count = 5000, decoded 122 MB in 0.826secs using 5.0% overhead, throughput: 1182.3Mbit/s
symbol count = 10000, decoded 122 MB in 1.061secs using 5.0% overhead, throughput: 920.4Mbit/s
symbol count = 20000, decoded 122 MB in 1.380secs using 5.0% overhead, throughput: 707.7Mbit/s
symbol count = 50000, decoded 122 MB in 2.341secs using 5.0% overhead, throughput: 417.2Mbit/s
Public API
Note that the additional classes exported by the benchmarking feature flag are not considered part of this
crate's public API. Breaking changes to those classes may occur without warning. The flag is only provided
so that internal classes can be used in this crate's benchmarks.
Python bindings
The Python bindings are generated using pyo3. Rust 1.37.0-nightly or higher is required for building pyo3 projects.
$ rustup install nightly
$ rustup override set nightly
Some operating systems require additional packages to be installed.
$ sudo apt install python3-dev
maturin is recommended for building the Python bindings in this crate.
$ pip install maturin
$ maturin build --cargo-extra-args="--features python"
Alternatively, refer to the Building and Distribution section in the pyo3 user guide.
Note, you must pass the --cargo-extra-args="--features python" argument to Maturin when building this crate
to enable the Python binding features.
License
Licensed under
- Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0)
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.
Metadata
Release files for raptorq 1.3.1-post1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| raptorq-1.3.1_post1.tar.gz | 81.3 kB | Without provenance | Details for raptorq-1.3.1_post1.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| raptorq-1.3.1_post1-cp38-cp38-manylinux1_x86_64.whl | CPython 3.8 | CPython 3.8 | Linux glibc 2.5+ x86-64 | Details for raptorq-1.3.1_post1-cp38-cp38-manylinux1_x86_64.whl |
| raptorq-1.3.1_post1-cp37-cp37m-manylinux1_x86_64.whl | CPython 3.7 | CPython 3.7 pymalloc | Linux glibc 2.5+ x86-64 | Details for raptorq-1.3.1_post1-cp37-cp37m-manylinux1_x86_64.whl |
| raptorq-1.3.1_post1-cp36-cp36m-manylinux1_x86_64.whl | CPython 3.6 | CPython 3.6 pymalloc | Linux glibc 2.5+ x86-64 | Details for raptorq-1.3.1_post1-cp36-cp36m-manylinux1_x86_64.whl |
| raptorq-1.3.1_post1-cp35-cp35m-manylinux1_x86_64.whl | CPython 3.5 | CPython 3.5 pymalloc | Linux glibc 2.5+ x86-64 | Details for raptorq-1.3.1_post1-cp35-cp35m-manylinux1_x86_64.whl |
Total release size: 1.2 MB
Release files / raptorq-1.3.1_post1.tar.gz
| Download URL | raptorq-1.3.1_post1.tar.gz |
|---|---|
| Size | 81.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e74584df4cc45eb1ff37f4329e1edccf0c6ade7ec2b1a38cb64af8c045cf21da
|
|
BLAKE2b-256 checksum How to use checksums |
b36f1aead771558e33ecf7dd6f81ef89e1168939b9c55b906aa992b6a335a522
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/0.7.9
|
Release files / raptorq-1.3.1_post1-cp38-cp38-manylinux1_x86_64.whl
| Download URL | raptorq-1.3.1_post1-cp38-cp38-manylinux1_x86_64.whl |
|---|---|
| Size | 288.9 kB |
| Tags | CPython 3.8 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
3aabca0d0cdae452abc57ca5693a3cb2e0009e5a48f918c84a84f636b0b30232
|
|
BLAKE2b-256 checksum How to use checksums |
4c9838e76011e5190b49c4197efee5cd131325645fdc4cf48affd377629e1601
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/0.7.9
|
Release files / raptorq-1.3.1_post1-cp37-cp37m-manylinux1_x86_64.whl
| Download URL | raptorq-1.3.1_post1-cp37-cp37m-manylinux1_x86_64.whl |
|---|---|
| Size | 288.9 kB |
| Tags | CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
f40137e34c955ffcb470d130767bd5abc5006678f77fa8ba88fc718a22a91e50
|
|
BLAKE2b-256 checksum How to use checksums |
725b5ec67131e56d66e9565bac14d206fc679c4f1cdc11122aea26db588c5363
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/0.7.9
|
Release files / raptorq-1.3.1_post1-cp36-cp36m-manylinux1_x86_64.whl
| Download URL | raptorq-1.3.1_post1-cp36-cp36m-manylinux1_x86_64.whl |
|---|---|
| Size | 289.2 kB |
| Tags | CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
8ddfe10808485824f149e0fe3698b350ac1cf640707810c93767508c584cdb5b
|
|
BLAKE2b-256 checksum How to use checksums |
75367bfe16f87f3de198683b9b9367ccf59ed09ee4ce97d06adb75996a30d81a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/0.7.9
|
Release files / raptorq-1.3.1_post1-cp35-cp35m-manylinux1_x86_64.whl
| Download URL | raptorq-1.3.1_post1-cp35-cp35m-manylinux1_x86_64.whl |
|---|---|
| Size | 289.1 kB |
| Tags | CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
781172ed164f02ebbbdf50a91d8ce25f1960080224bf875604376c87bdf14a83
|
|
BLAKE2b-256 checksum How to use checksums |
ca0ba961644d915371f7e5c75f0944b21595f73868b8774206ecdace3599fa88
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/0.7.9
|
Security for raptorq 1.3.1-post1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.