#reed-solomon-erasure #reed-solomon #algorithm #encoding

reed-solomon-novelpoly

An implementation of a reed solomon code / encoder / decoder with complexity O(n lg(n))

6 releases (stable)

2.0.0 Jan 25, 2024
1.0.2 Sep 17, 2023
1.0.1 Aug 30, 2023
1.0.0 Mar 26, 2021
0.0.3 Mar 19, 2021

#317 in Algorithms

Download history 36204/week @ 2025-09-30 32552/week @ 2025-10-07 25528/week @ 2025-10-14 30972/week @ 2025-10-21 26366/week @ 2025-10-28 36626/week @ 2025-11-04 33484/week @ 2025-11-11 36192/week @ 2025-11-18 36492/week @ 2025-11-25 44496/week @ 2025-12-02 41174/week @ 2025-12-09 32572/week @ 2025-12-16 13086/week @ 2025-12-23 14277/week @ 2025-12-30 32423/week @ 2026-01-06 34469/week @ 2026-01-13

97,560 downloads per month
Used in 82 crates (4 directly)

Apache-2.0 AND MIT

110KB
2.5K SLoC

Rust 2.5K SLoC // 0.1% comments C 269 SLoC // 0.1% comments

reed-solomon-novelpoly

An implementation of Novel Polynomial Basis and its Application to Reed-Solomon Erasure Codes 1 2 3.

Runs encoding and reconstruction in O(n lg(n)). Note that for small number n there is a static offset due to a walsh transform over the full domain in reconstruction.

Goals

Be really fast for n > 100.

Benchmarking

For benchmarking the implementation against itself and the naive implementation, criterion is used.

cargo bench

Fuzzing

Currently honggfuzz is used.

Install cargo install cargo-hongg and run with:

cargo-hongg fuzz --bin <binary_name>

Dependencies

~0.8–1.8MB
~31K SLoC