#reed-solomon-erasure #reed-solomon #erasure #leopard

leopard-codec

Implementation of Reed-Solomon codes using leopard algorithm

1 unstable release

0.1.0 Apr 15, 2024

#1054 in Encoding

Download history 3559/week @ 2024-12-03 3249/week @ 2024-12-10 3335/week @ 2024-12-17 647/week @ 2024-12-24 1837/week @ 2024-12-31 4917/week @ 2025-01-07 5132/week @ 2025-01-14 3497/week @ 2025-01-21 3148/week @ 2025-01-28 4436/week @ 2025-02-04 5419/week @ 2025-02-11 5704/week @ 2025-02-18 4990/week @ 2025-02-25 5361/week @ 2025-03-04 4718/week @ 2025-03-11 3799/week @ 2025-03-18

19,905 downloads per month
Used in 11 crates (2 directly)

Apache-2.0

345KB
846 lines

Leopard codec

This is a Rust rewrite of a Go O(n*log n) implementation of Reed-Solomon codes, ported from the klauspost/reedsolomon, which is a port of the C++ library catid/leopard.

The original implementation is based on the paper:

S.-J. Lin, T. Y. Al-Naffouri, Y. S. Han, and W.-H. Chung,

"Novel Polynomial Basis with Fast Fourier Transform and Its Application to Reed-Solomon Erasure Codes"

IEEE Trans. on Information Theory, pp. 6284-6299, November, 2016.

Features support

The leopard algorithm uses either 8-bit or 16-bit Galois fields with Cantor basis. The 8-bit implementation should be used with up to 256 total shards and 16-bit when more shards are needed.

  • Encoding parity shards using 8-bit leopard algorithm
  • Reconstructing shards using 8-bit leopard algorithm
  • Encoding parity shards using 16-bit leopard algorithm
  • Reconstructing shards using 16-bit leopard algorithm

Dependencies

~0.4–0.9MB
~19K SLoC