{"id":17188575,"url":"https://github.com/cberner/raptorq","last_synced_at":"2025-05-14T10:05:16.033Z","repository":{"id":39749312,"uuid":"166902415","full_name":"cberner/raptorq","owner":"cberner","description":"Rust implementation of RaptorQ (RFC6330)","archived":false,"fork":false,"pushed_at":"2025-04-11T04:13:29.000Z","size":500,"stargazers_count":305,"open_issues_count":3,"forks_count":51,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-04-11T16:37:02.562Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cberner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-22T00:58:12.000Z","updated_at":"2025-04-11T04:06:40.000Z","dependencies_parsed_at":"2024-06-19T00:11:09.489Z","dependency_job_id":"e8354a84-5202-449b-be62-173d2a62b7fd","html_url":"https://github.com/cberner/raptorq","commit_stats":{"total_commits":451,"total_committers":12,"mean_commits":"37.583333333333336","dds":0.04656319290465627,"last_synced_commit":"92cd14ab12f6907226add0f4ea6bcfc9840c9985"},"previous_names":[],"tags_count":35,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cberner%2Fraptorq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cberner%2Fraptorq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cberner%2Fraptorq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cberner%2Fraptorq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cberner","download_url":"https://codeload.github.com/cberner/raptorq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248441537,"owners_count":21104014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-15T01:09:18.912Z","updated_at":"2025-04-11T16:37:06.082Z","avatar_url":"https://github.com/cberner.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# raptorq\n![CI](https://github.com/cberner/raptorq/actions/workflows/ci.yml/badge.svg)\n[![Crates](https://img.shields.io/crates/v/raptorq.svg)](https://crates.io/crates/raptorq)\n[![Documentation](https://docs.rs/raptorq/badge.svg)](https://docs.rs/raptorq)\n[![PyPI](https://img.shields.io/pypi/v/raptorq.svg)](https://pypi.org/project/raptorq/)\n[![License](https://img.shields.io/crates/l/raptorq)](https://crates.io/crates/raptorq)\n[![dependency status](https://deps.rs/repo/github/cberner/raptorq/status.svg)](https://deps.rs/repo/github/cberner/raptorq)\n\n### Overview\n\nRust implementation of RaptorQ (RFC6330)\n\nRecovery properties:\nReconstruction probability after receiving K + h packets = 1 - 1/256^(h + 1). Where K is the number of packets in the\noriginal message, and h is the number of additional packets received.\nSee \"RaptorQ Technical Overview\" by Qualcomm\n\n### Examples\nSee the `examples/` directory for usage.\n\n### Benchmarks\n\nThe following were run on a Ryzen 9 5900X @ 3.70GHz\n```\nSymbol size: 1280 bytes (without pre-built plan)\nsymbol count = 10, encoded 127 MB in 0.259secs, throughput: 3953.4Mbit/s\nsymbol count = 100, encoded 127 MB in 0.217secs, throughput: 4716.3Mbit/s\nsymbol count = 250, encoded 127 MB in 0.215secs, throughput: 4757.9Mbit/s\nsymbol count = 500, encoded 127 MB in 0.216secs, throughput: 4724.6Mbit/s\nsymbol count = 1000, encoded 126 MB in 0.221secs, throughput: 4595.6Mbit/s\nsymbol count = 2000, encoded 126 MB in 0.230secs, throughput: 4415.8Mbit/s\nsymbol count = 5000, encoded 122 MB in 0.248secs, throughput: 3937.8Mbit/s\nsymbol count = 10000, encoded 122 MB in 0.289secs, throughput: 3379.1Mbit/s\nsymbol count = 20000, encoded 122 MB in 0.362secs, throughput: 2697.7Mbit/s\nsymbol count = 50000, encoded 122 MB in 0.482secs, throughput: 2026.1Mbit/s\n\nSymbol size: 1280 bytes (with pre-built plan)\nsymbol count = 10, encoded 127 MB in 0.119secs, throughput: 8604.4Mbit/s\nsymbol count = 100, encoded 127 MB in 0.084secs, throughput: 12183.8Mbit/s\nsymbol count = 250, encoded 127 MB in 0.092secs, throughput: 11119.0Mbit/s\nsymbol count = 500, encoded 127 MB in 0.093secs, throughput: 10973.2Mbit/s\nsymbol count = 1000, encoded 126 MB in 0.093secs, throughput: 10920.7Mbit/s\nsymbol count = 2000, encoded 126 MB in 0.102secs, throughput: 9957.1Mbit/s\nsymbol count = 5000, encoded 122 MB in 0.111secs, throughput: 8797.9Mbit/s\nsymbol count = 10000, encoded 122 MB in 0.138secs, throughput: 7076.5Mbit/s\nsymbol count = 20000, encoded 122 MB in 0.178secs, throughput: 5486.3Mbit/s\nsymbol count = 50000, encoded 122 MB in 0.265secs, throughput: 3685.1Mbit/s\n\nSymbol size: 1280 bytes\nsymbol count = 10, decoded 127 MB in 0.398secs using 0.0% overhead, throughput: 2572.7Mbit/s\nsymbol count = 100, decoded 127 MB in 0.323secs using 0.0% overhead, throughput: 3168.5Mbit/s\nsymbol count = 250, decoded 127 MB in 0.302secs using 0.0% overhead, throughput: 3387.2Mbit/s\nsymbol count = 500, decoded 127 MB in 0.290secs using 0.0% overhead, throughput: 3519.0Mbit/s\nsymbol count = 1000, decoded 126 MB in 0.309secs using 0.0% overhead, throughput: 3286.8Mbit/s\nsymbol count = 2000, decoded 126 MB in 0.326secs using 0.0% overhead, throughput: 3115.4Mbit/s\nsymbol count = 5000, decoded 122 MB in 0.340secs using 0.0% overhead, throughput: 2872.2Mbit/s\nsymbol count = 10000, decoded 122 MB in 0.374secs using 0.0% overhead, throughput: 2611.1Mbit/s\nsymbol count = 20000, decoded 122 MB in 0.452secs using 0.0% overhead, throughput: 2160.5Mbit/s\nsymbol count = 50000, decoded 122 MB in 0.625secs using 0.0% overhead, throughput: 1562.5Mbit/s\n\nsymbol count = 10, decoded 127 MB in 0.398secs using 5.0% overhead, throughput: 2572.7Mbit/s\nsymbol count = 100, decoded 127 MB in 0.324secs using 5.0% overhead, throughput: 3158.8Mbit/s\nsymbol count = 250, decoded 127 MB in 0.303secs using 5.0% overhead, throughput: 3376.1Mbit/s\nsymbol count = 500, decoded 127 MB in 0.291secs using 5.0% overhead, throughput: 3506.9Mbit/s\nsymbol count = 1000, decoded 126 MB in 0.315secs using 5.0% overhead, throughput: 3224.2Mbit/s\nsymbol count = 2000, decoded 126 MB in 0.328secs using 5.0% overhead, throughput: 3096.4Mbit/s\nsymbol count = 5000, decoded 122 MB in 0.349secs using 5.0% overhead, throughput: 2798.2Mbit/s\nsymbol count = 10000, decoded 122 MB in 0.402secs using 5.0% overhead, throughput: 2429.3Mbit/s\nsymbol count = 20000, decoded 122 MB in 0.500secs using 5.0% overhead, throughput: 1953.1Mbit/s\nsymbol count = 50000, decoded 122 MB in 0.746secs using 5.0% overhead, throughput: 1309.1Mbit/s\n```\n\nThe following were run on an Intel Core i5-6600K @ 3.50GHz, as of raptorq version 1.6.4\n\n```\nSymbol size: 1280 bytes (without pre-built plan)\nsymbol count = 10, encoded 127 MB in 0.423secs, throughput: 2420.6Mbit/s\nsymbol count = 100, encoded 127 MB in 0.393secs, throughput: 2604.2Mbit/s\nsymbol count = 250, encoded 127 MB in 0.373secs, throughput: 2742.5Mbit/s\nsymbol count = 500, encoded 127 MB in 0.362secs, throughput: 2819.1Mbit/s\nsymbol count = 1000, encoded 126 MB in 0.371secs, throughput: 2737.5Mbit/s\nsymbol count = 2000, encoded 126 MB in 0.401secs, throughput: 2532.7Mbit/s\nsymbol count = 5000, encoded 122 MB in 0.432secs, throughput: 2260.6Mbit/s\nsymbol count = 10000, encoded 122 MB in 0.492secs, throughput: 1984.9Mbit/s\nsymbol count = 20000, encoded 122 MB in 0.642secs, throughput: 1521.1Mbit/s\nsymbol count = 50000, encoded 122 MB in 0.862secs, throughput: 1132.9Mbit/s\n\nSymbol size: 1280 bytes (with pre-built plan)\nsymbol count = 10, encoded 127 MB in 0.213secs, throughput: 4807.2Mbit/s\nsymbol count = 100, encoded 127 MB in 0.141secs, throughput: 7258.4Mbit/s\nsymbol count = 250, encoded 127 MB in 0.153secs, throughput: 6685.9Mbit/s\nsymbol count = 500, encoded 127 MB in 0.162secs, throughput: 6299.4Mbit/s\nsymbol count = 1000, encoded 126 MB in 0.165secs, throughput: 6155.3Mbit/s\nsymbol count = 2000, encoded 126 MB in 0.184secs, throughput: 5519.7Mbit/s\nsymbol count = 5000, encoded 122 MB in 0.214secs, throughput: 4563.4Mbit/s\nsymbol count = 10000, encoded 122 MB in 0.281secs, throughput: 3475.3Mbit/s\nsymbol count = 20000, encoded 122 MB in 0.373secs, throughput: 2618.1Mbit/s\nsymbol count = 50000, encoded 122 MB in 0.518secs, throughput: 1885.3Mbit/s\n\nSymbol size: 1280 bytes\nsymbol count = 10, decoded 127 MB in 0.610secs using 0.0% overhead, throughput: 1678.6Mbit/s\nsymbol count = 100, decoded 127 MB in 0.484secs using 0.0% overhead, throughput: 2114.5Mbit/s\nsymbol count = 250, decoded 127 MB in 0.458secs using 0.0% overhead, throughput: 2233.5Mbit/s\nsymbol count = 500, decoded 127 MB in 0.438secs using 0.0% overhead, throughput: 2329.9Mbit/s\nsymbol count = 1000, decoded 126 MB in 0.450secs using 0.0% overhead, throughput: 2256.9Mbit/s\nsymbol count = 2000, decoded 126 MB in 0.485secs using 0.0% overhead, throughput: 2094.1Mbit/s\nsymbol count = 5000, decoded 122 MB in 0.534secs using 0.0% overhead, throughput: 1828.8Mbit/s\nsymbol count = 10000, decoded 122 MB in 0.621secs using 0.0% overhead, throughput: 1572.6Mbit/s\nsymbol count = 20000, decoded 122 MB in 0.819secs using 0.0% overhead, throughput: 1192.4Mbit/s\nsymbol count = 50000, decoded 122 MB in 1.116secs using 0.0% overhead, throughput: 875.1Mbit/s\n\nsymbol count = 10, decoded 127 MB in 0.609secs using 5.0% overhead, throughput: 1681.3Mbit/s\nsymbol count = 100, decoded 127 MB in 0.490secs using 5.0% overhead, throughput: 2088.6Mbit/s\nsymbol count = 250, decoded 127 MB in 0.463secs using 5.0% overhead, throughput: 2209.4Mbit/s\nsymbol count = 500, decoded 127 MB in 0.443secs using 5.0% overhead, throughput: 2303.6Mbit/s\nsymbol count = 1000, decoded 126 MB in 0.464secs using 5.0% overhead, throughput: 2188.8Mbit/s\nsymbol count = 2000, decoded 126 MB in 0.490secs using 5.0% overhead, throughput: 2072.7Mbit/s\nsymbol count = 5000, decoded 122 MB in 0.555secs using 5.0% overhead, throughput: 1759.6Mbit/s\nsymbol count = 10000, decoded 122 MB in 0.667secs using 5.0% overhead, throughput: 1464.1Mbit/s\nsymbol count = 20000, decoded 122 MB in 0.830secs using 5.0% overhead, throughput: 1176.6Mbit/s\nsymbol count = 50000, decoded 122 MB in 1.328secs using 5.0% overhead, throughput: 735.4Mbit/s\n```\n\nThe following were run on a Raspberry Pi 3 B+ (Cortex-A53 @ 1.4GHz)\n\n```\nSymbol size: 1280 bytes (without pre-built plan)\nsymbol count = 10, encoded 127 MB in 5.078secs, throughput: 201.6Mbit/s\nsymbol count = 100, encoded 127 MB in 3.966secs, throughput: 258.1Mbit/s\nsymbol count = 250, encoded 127 MB in 4.293secs, throughput: 238.3Mbit/s\nsymbol count = 500, encoded 127 MB in 4.451secs, throughput: 229.3Mbit/s\nsymbol count = 1000, encoded 126 MB in 4.606secs, throughput: 220.5Mbit/s\nsymbol count = 2000, encoded 126 MB in 5.127secs, throughput: 198.1Mbit/s\nsymbol count = 5000, encoded 122 MB in 5.615secs, throughput: 173.9Mbit/s\nsymbol count = 10000, encoded 122 MB in 6.321secs, throughput: 154.5Mbit/s\nsymbol count = 20000, encoded 122 MB in 7.450secs, throughput: 131.1Mbit/s\nsymbol count = 50000, encoded 122 MB in 9.407secs, throughput: 103.8Mbit/s\n\nSymbol size: 1280 bytes (with pre-built plan)\nsymbol count = 10, encoded 127 MB in 3.438secs, throughput: 297.8Mbit/s\nsymbol count = 100, encoded 127 MB in 2.476secs, throughput: 413.3Mbit/s\nsymbol count = 250, encoded 127 MB in 2.908secs, throughput: 351.8Mbit/s\nsymbol count = 500, encoded 127 MB in 3.085secs, throughput: 330.8Mbit/s\nsymbol count = 1000, encoded 126 MB in 3.284secs, throughput: 309.3Mbit/s\nsymbol count = 2000, encoded 126 MB in 3.700secs, throughput: 274.5Mbit/s\nsymbol count = 5000, encoded 122 MB in 4.045secs, throughput: 241.4Mbit/s\nsymbol count = 10000, encoded 122 MB in 4.451secs, throughput: 219.4Mbit/s\nsymbol count = 20000, encoded 122 MB in 4.948secs, throughput: 197.4Mbit/s\nsymbol count = 50000, encoded 122 MB in 6.078secs, throughput: 160.7Mbit/s\n\nSymbol size: 1280 bytes\nsymbol count = 10, decoded 127 MB in 6.561secs using 0.0% overhead, throughput: 156.1Mbit/s\nsymbol count = 100, decoded 127 MB in 4.936secs using 0.0% overhead, throughput: 207.3Mbit/s\nsymbol count = 250, decoded 127 MB in 5.206secs using 0.0% overhead, throughput: 196.5Mbit/s\nsymbol count = 500, decoded 127 MB in 5.298secs using 0.0% overhead, throughput: 192.6Mbit/s\nsymbol count = 1000, decoded 126 MB in 5.565secs using 0.0% overhead, throughput: 182.5Mbit/s\nsymbol count = 2000, decoded 126 MB in 6.309secs using 0.0% overhead, throughput: 161.0Mbit/s\nsymbol count = 5000, decoded 122 MB in 6.805secs using 0.0% overhead, throughput: 143.5Mbit/s\nsymbol count = 10000, decoded 122 MB in 7.517secs using 0.0% overhead, throughput: 129.9Mbit/s\nsymbol count = 20000, decoded 122 MB in 8.875secs using 0.0% overhead, throughput: 110.0Mbit/s\nsymbol count = 50000, decoded 122 MB in 11.253secs using 0.0% overhead, throughput: 86.8Mbit/s\n\nsymbol count = 10, decoded 127 MB in 6.157secs using 5.0% overhead, throughput: 166.3Mbit/s\nsymbol count = 100, decoded 127 MB in 4.842secs using 5.0% overhead, throughput: 211.4Mbit/s\nsymbol count = 250, decoded 127 MB in 5.213secs using 5.0% overhead, throughput: 196.2Mbit/s\nsymbol count = 500, decoded 127 MB in 5.328secs using 5.0% overhead, throughput: 191.5Mbit/s\nsymbol count = 1000, decoded 126 MB in 5.630secs using 5.0% overhead, throughput: 180.4Mbit/s\nsymbol count = 2000, decoded 126 MB in 6.364secs using 5.0% overhead, throughput: 159.6Mbit/s\nsymbol count = 5000, decoded 122 MB in 7.035secs using 5.0% overhead, throughput: 138.8Mbit/s\nsymbol count = 10000, decoded 122 MB in 8.165secs using 5.0% overhead, throughput: 119.6Mbit/s\nsymbol count = 20000, decoded 122 MB in 9.929secs using 5.0% overhead, throughput: 98.4Mbit/s\nsymbol count = 50000, decoded 122 MB in 14.399secs using 5.0% overhead, throughput: 67.8Mbit/s\n```\n\n### Public API\nNote that the additional classes exported by the `benchmarking` feature flag are not considered part of this\ncrate's public API. Breaking changes to those classes may occur without warning. The flag is only provided\nso that internal classes can be used in this crate's benchmarks.\n\n## Python bindings\n\nThe Python bindings are generated using [pyo3](https://github.com/PyO3/pyo3). \n\nSome operating systems require additional packages to be installed.\n```\n$ sudo apt install python3-dev cargo\n```\n\n[maturin](https://github.com/PyO3/maturin) is recommended for building the Python bindings in this crate.\n```\n$ pip install maturin\n$ maturin build --features python\n```\n\nAlternatively, refer to the [Building and Distribution section](https://pyo3.rs/v0.8.5/building_and_distribution.html) in the [pyo3 user guide](https://pyo3.rs/v0.8.5/).\nNote, you must pass the `--cargo-extra-args=\"--features python\"` argument to Maturin when building this crate\nto enable the Python binding features.\n\n## License\n\nLicensed under\n\n * Apache License, Version 2.0 ([LICENSE](LICENSE) or http://www.apache.org/licenses/LICENSE-2.0)\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you shall be licensed as above, without any\nadditional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcberner%2Fraptorq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcberner%2Fraptorq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcberner%2Fraptorq/lists"}