Thread overview
Reed Solomon codes
Dec 04, 2021
Era Scarecrow
Dec 04, 2021
Paul Backus
Dec 04, 2021
Era Scarecrow
Dec 04, 2021
Imperatorn
Dec 04, 2021
Era Scarecrow
Dec 05, 2021
Andre Pany
Dec 05, 2021
Era Scarecrow
Dec 05, 2021
Andre Pany
Dec 05, 2021
Era Scarecrow
Dec 20, 2021
Era Scarecrow
December 04, 2021

I'm curious if a ported/rewrite of a Reed Solomon library would be wanted/needed in the library? Doing a search i don't see anything specific about adding it.

This might be more for networking, QRcodes, storage/backup data or something where extra parity and error detection/correction is needed.

The library I'm redoing in D is located here, thoughts?
http://rscode.sourceforge.net/

December 04, 2021

On Saturday, 4 December 2021 at 15:31:02 UTC, Era Scarecrow wrote:

>

I'm curious if a ported/rewrite of a Reed Solomon library would be wanted/needed in the library? Doing a search i don't see anything specific about adding it.

This might be more for networking, QRcodes, storage/backup data or something where extra parity and error detection/correction is needed.

The library I'm redoing in D is located here, thoughts?
http://rscode.sourceforge.net/

Seems like a good idea for a dub package. Once you have something working, register it on code.dlang.org and make a post in the Announce forum to let people know.

December 04, 2021

On Saturday, 4 December 2021 at 15:57:41 UTC, Paul Backus wrote:

>

On Saturday, 4 December 2021 at 15:31:02 UTC, Era Scarecrow wrote:

>

I'm curious if a ported/rewrite of a Reed Solomon library would be wanted/needed in the library? Doing a search i don't see anything specific about adding it.

Seems like a good idea for a dub package. Once you have something working, register it on code.dlang.org and make a post in the Announce forum to let people know.

Oh it's working. I did a basic transition to make it compile in D, then I've been doing more D features and rewriting sections and removing unneeded sections, some which greatly simplifies the code, and some for speedups for knowing what certain calls are doing and working around to avoid unnecessary work.

Though i wonder if the lookup tables (that fit as ubytes) should be ubyte or size_t; And if i should have it pre-calculate the polynomials to free up space in the struct or not (vs calculating them when you change it). The amount of processing isn't that high vs the space it may be taking up.

December 04, 2021

On Saturday, 4 December 2021 at 16:16:02 UTC, Era Scarecrow wrote:

>

On Saturday, 4 December 2021 at 15:57:41 UTC, Paul Backus wrote:

>

[...]

Oh it's working. I did a basic transition to make it compile in D, then I've been doing more D features and rewriting sections and removing unneeded sections, some which greatly simplifies the code, and some for speedups for knowing what certain calls are doing and working around to avoid unnecessary work.

Though i wonder if the lookup tables (that fit as ubytes) should be ubyte or size_t; And if i should have it pre-calculate the polynomials to free up space in the struct or not (vs calculating them when you change it). The amount of processing isn't that high vs the space it may be taking up.

Cool, like Paul said. Make a dub package so people can find it 👍

December 04, 2021

On Saturday, 4 December 2021 at 17:01:32 UTC, Imperatorn wrote:

>

Cool, like Paul said. Make a dub package so people can find it 👍

Alright, I'll clean it up some more, add some unittests and add it to the dub soon. (How the math works is beyond me with how it's originally written so not sure about those).

December 05, 2021

On Saturday, 4 December 2021 at 15:31:02 UTC, Era Scarecrow wrote:

>

I'm curious if a ported/rewrite of a Reed Solomon library would be wanted/needed in the library? Doing a search i don't see anything specific about adding it.

This might be more for networking, QRcodes, storage/backup data or something where extra parity and error detection/correction is needed.

The library I'm redoing in D is located here, thoughts?
http://rscode.sourceforge.net/

Thanks for doing this work. A side note, the library you translating from has the GPL license, therefore your D library needs to be GPL too, I assume.
Including GPL parts into Phobos is not possible as far as I know. Therefore a Dub package make sense.

Kind regards
Andre

December 05, 2021

On Sunday, 5 December 2021 at 10:35:35 UTC, Andre Pany wrote:

>

Thanks for doing this work. A side note, the library you translating from has the GPL license, therefore your D library needs to be GPL too, I assume. Including GPL parts into Phobos is not possible as far as I know. Therefore a Dub package make sense.

When i messaged Henry regarding porting this to D he seemed interested; I'll ask him if he would offer/allow it under another license to potentially include it in phobos. Looking in the FAQ it seems phobos uses the Boost 1.0 license. Is there any other licenses i should offer/ask for?

December 05, 2021

On Sunday, 5 December 2021 at 15:40:19 UTC, Era Scarecrow wrote:

>

On Sunday, 5 December 2021 at 10:35:35 UTC, Andre Pany wrote:

>

Thanks for doing this work. A side note, the library you translating from has the GPL license, therefore your D library needs to be GPL too, I assume. Including GPL parts into Phobos is not possible as far as I know. Therefore a Dub package make sense.

When i messaged Henry regarding porting this to D he seemed interested; I'll ask him if he would offer/allow it under another license to potentially include it in phobos. Looking in the FAQ it seems phobos uses the Boost 1.0 license. Is there any other licenses i should offer/ask for?

Yes, Boost 1.0 would be perfect if the coding should be integrated into Phobos at some point in time.
For a dub package also MIT and Mozilla is good. (Some companies tries to avoid GPL/ LGPL libraries as much as possible).

Kind regards
Andre

December 05, 2021

On Sunday, 5 December 2021 at 17:05:32 UTC, Andre Pany wrote:

>

Yes, Boost 1.0 would be perfect if the coding should be integrated into Phobos at some point in time. For a dub package also MIT and Mozilla is good. (Some companies tries to avoid GPL/ LGPL libraries as much as possible).

He says he will grant an MIT license to the 'D Language' variant of the code, the original C code stays GPL.

December 20, 2021

Ugg... Watching and reading and trying to understand Polynomial math is melting my brain. I doubt i will be able to add in unittest to each function to prove they are working right other than the final result tests.

I did some tests where i made it 16bit symbols and it worked just fine (although a little slower), the biggest advantage is the range the generated codeword uses covers a max of 131070 bytes vs 255 bytes, which would make it usable for say several blocks of sectors for say a tape backup or large compressed files in an archive.

Probably I'll have 2 ports, one for 8bit symbols and another for any symbol size (3bit-24bit supported, after 24bit it eats way too much memory for the tables generated that are used, 24bit tables would eat up 256Mb-512Mb, but looks like it would cover a 50Mb area).