Sounds good, I've just sent a patch with a test to cover alignment issues
we might run into in the optimised implementation, and I emailed
ass...@fsf.org and asked to kick off the copyright assignment process.
Anything else I should be starting now to make things run more smoothly?

On Tue, 15 Oct 2024 at 09:38, Simon Josefsson <si...@josefsson.org> wrote:

> I suggest to focus on the immediate use-case and see if we can complete
> that, to not get overwhelmed with the variety of ideas.  Just getting
> your bigger table speedup into a LGPL'd crc.c in gnulib, and to get gzip
> to use that module, seems like a good improvement.  You should start on
> the copyright assignment paper process first.
>
> /Simon
>
> Sam Russell <sam.h.russ...@gmail.com> writes:
>
> > IANAL but it appears the source (paper, not code) for both
> implementations
> > in coreutils is free, I'm happy to write from scratch based off the
> papers:
> >
> > Slice-by-8: "Novel Table Lookup-Based Algorithms for High-Performance CRC
> > Generation"
> > PCLMUL: "Fast CRC Computation for Numeric Polynomials Using PCLMULQDQ
> > Instruction"
> >
> > I'm happy to leave the licensing decision to other people.
> >
> > The current coreutils implemention would need modifying as it has the
> > polynomial constants hardcoded, and I'm not sure what impact endianness
> has
> > on a bit-reversed polynomial. If we want gnulib to have a generic
> > implementation with CRC32 and CRC32-C with both normal and bit-reversed
> > polynomials with big/little endian support then we'd need a proper test
> > suite. What would you like the gnulib implementation to offer? My primary
> > goal is to improve the speed for gzip, so I would want to simply add the
> > new algorithms with hard-coded gzip parameters and get that shipped, and
> > then as a next step we could make gnulib the generic performant reference
> > CRC32 implementation shipping with standard polynomials but also having
> the
> > option to work with any given polynomial.
> >
> > What are your thoughts? What would you want to see the gnulib
> > implementation look like?
> >
> >
> > On Tue, 15 Oct 2024 at 09:07, Simon Josefsson <si...@josefsson.org>
> wrote:
> >
> >> The coreutils code is GPL and the crc module in gnulib is LGPL.  I'm
> >> using the gnulib crc module in some LGPL projects.  Is it wortwhile to
> >> keep the optimization GPL?  I would prefer a LGPL crc module that is
> >> performant, with #ifdef-varianted support for 1) no tables at all, 2)
> >> small table like today, and 3) your bigger tables, together with support
> >> for the SSE instruction.  If that makes sense and would work.  Thoughts?
> >> Otherwise another approach is to keep a simple LGPL crc module and
> >> performant crc-gpl module that uses the coreutils code.
> >>
> >> /Simon
> >>
> >> Sam Russell <sam.h.russ...@gmail.com> writes:
> >>
> >> > That sounds good. It looks like there some subtle differences anyway,
> the
> >> > gzip version does everything bit reversed, and while the intel paper
> has
> >> > constants for that there are some logic things that would have to
> change
> >> > (take hiword then loword instead of loword then hiword etc)
> >> >
> >> > On Mon, Oct 14, 2024, 19:05 Pádraig Brady <p...@draigbrady.com> wrote:
> >> >
> >> >> On 14/10/2024 15:53, Sam Russell wrote:
> >> >> >  > For reference, coreutils' cksum uses slice by 8 unconditionally
> >> since:
> >> >> >  > https://github.com/coreutils/coreutils/commit/a7533917e <
> >> >> https://github.com/coreutils/coreutils/commit/a7533917e>
> >> >> >
> >> >> > perfect, we could just copy this across then? is there a reason
> gnulib
> >> >> wouldn't just include coreutils as a dependency?
> >> >>
> >> >> It might be best to copy/adjust the coreutils code across to gnulib,
> >> >> then coreutils could be adjusted to use the gnulib routines.
> >> >> The crc code is under the same licence in gnulib and coreutils, so
> there
> >> >> should be no issue.
> >> >>
> >> >> cheers,
> >> >> Pádraig
> >> >>
> >> >>
> >>
>

Reply via email to