MiloszKrajewski / K4os.Compression.LZ4

LZ4/LH4HC compression for .NET Standard 1.6/2.0 (formerly known as lz4net)
MIT License
670 stars 76 forks source link

xxhash dependency #4

Closed Krakean closed 6 years ago

Krakean commented 6 years ago

@MiloszKrajewski Curious, what is it for? And, can it be done via some common interface instead of lock-in to xxHash? Like a IHasher with doHash() function or something like this, so I can provide my own hash library that I use to do the required hash job? For example, in my game engine I prefer FarmHash (https://github.com/nickbabcock/Farmhash.Sharp this port particullary, which seems faster to me) instead of xxHash.

Krakean commented 6 years ago

@MiloszKrajewski curious, is project alive?

MiloszKrajewski commented 6 years ago

Skiing holiday :-)

Krakean commented 6 years ago

@MiloszKrajewski oh, nice rest then :) when you plan back to lz4?

Krakean commented 6 years ago

@MiloszKrajewski ping :)

MiloszKrajewski commented 6 years ago

working :-) stream decoder is now decompressing streams created with lz4.exe (reference implementation)

MiloszKrajewski commented 6 years ago

BTW, for now I'm not checking any hash at all. I'm just ignoring it, so them whole discussion might be a little bit premature. Although, my primary goal is 100% compatibility, so xxhash with be definitely default option, and only option in version 1.0. Plugable hashing algorithm sounds cool but it is not priority. NOTE: The only required hash is a hash of ~16 bytes of header, no block not content hashes are required.

MiloszKrajewski commented 6 years ago

Moved to ticked called '1.0.0-alpha'

Krakean commented 6 years ago

@MiloszKrajewski

whole discussion might be a little bit premature.

Think that things like this better to discuss while development in alpha :)

Plugable hashing algorithm sounds cool but it is not priority.

Just in my opinion it wouldn't be so hard to implement via somekind of interface I suggested, so would be nice if v1.0 have it. Plus, in my case for example I have no intention to have compatibility with any official reference implementation (in case if xxhash is matters in context of compability), because I use your library in my game engine for assets archive format, so would be nice for me as lib user to provide my own hash function :) So I'll be able, for example, write checksum header with my hash function & read too so in this case I unlikely will get InvalidChecksumException() :) Plus, if I understand correctly, currently you use xxHash only for reading on frame reading stage, you not use it on write frame stage yet?