klauspost / reedsolomon

Reed-Solomon Erasure Coding in Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Suggestion: Export Galois field arithmetic and move it to a subpackage like reedsolomon/galois

vitalif opened this issue · comments

Hi!
I tried to use this library to decode data encoded with jerasure and I discovered that jerasure has a different matrix generation algorithm.
With my previous "withCustomMatrix" patch it's now possible to supply a compatible matrix, but problem is that its generation requires GF arithmetic, and it's private.
It could be convenient to make it public. It could probably require moving galois functions into a subpackage, like reedsolomon/galois, to not export too much garbage...
I tried to prepare a PR but it turns out to require a lot of changes, so I'm not done yet, and also I'm not sure how you'll react to it, so I want to ask you about it first :)
Another problem is that I'd also probably split GF(8) and GF(16) (leopard) implementations into separate packages, but now they're mixed and some files are autogenerated, so the generator code should probably be changed too.
Also I need jerasure-compatible algorithm right now regardless of this refactoring :), so maybe I'll just integrate it directly into the library and submit a PR for that.

Submitted jerasure matrix generation here #200

Exporting functions requires proper design, since I will have to support exported functions. I don't have the bandwidth for a refactor. I am focused on getting GF16 to a releasable state.

A don't see why GF16 is a problem and you don't really put up any reasons for it. IMO it is pretty clean.