Crates for suffix array construction

Popular C libraries are:

Both have a ..64 variant that supports input strings longer than 2GB.

Rust wrappers:

  • divsufsort: rust reimplementation, does not support large inputs.
  • cdivsufsort: c-wrapper, does not support large inputs
  • livdivsufsort-rs: c-wrapper, does support large inputs
  • sais: unrelated to the original library; does not implement a linear time algorithm anyway
  • libsais-rs: Daniel Liu’s fork-of-fork of the original, but not on crates.io. Supports multithreading using OpenMP and wraps both the original and 64bit version.
  • simple-saca: Daniel Liu’s bounded-context suffix array construction that is faster than divsufsort and libsais, but does not return a true fully sorted suffix array.

References