Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

What's next... #5

Open
23 of 26 tasks
MiloszKrajewski opened this issue Apr 23, 2018 · 19 comments
Open
23 of 26 tasks

What's next... #5

MiloszKrajewski opened this issue Apr 23, 2018 · 19 comments
Assignees
Labels
enhancement New feature or request

Comments

@MiloszKrajewski
Copy link
Owner

MiloszKrajewski commented Apr 23, 2018

1.0.3

  • block fast encoder
  • block high encoder
  • block decoder
  • stream encoder (dependent blocks)
  • stream decoder (dependent blocks)
  • frame decoder
  • frame encoder
  • checksum in header
  • friendly(ier?) API
  • provide read-only Position and Length (if available)

1.1.0

  • stream encoder (independent blocks)
  • stream decoder (independent blocks)
  • signing assemblies

1.1.3

  • add LegacyLz4Stream (compatible with lz4net, but not lz4 frame)

1.2.1-beta

  • porting 1.9.2
  • explicit support for both 32 and 64 environments

1.2.5

  • provide read-only Position and Length for compression stream (nothing fancy, just symmetry)
  • add true async read/write interface
  • add full async support (ie: DisposeAync for .NET Standard 2.1)

1.3.0

  • reduce allocations / use memory pool
  • stream abstraction

1.3.3

  • block (encoded) checksum
  • content (decoded) checksum

vNext

  • abstract frame encoder/decoder state machine
  • predefined dictionaries

Not planned

  • fast decoder loop (gotos across scopes, not a thing in C#)

Note: block checksum and content checksum are not required (and may be ignored)
Note: frame encoder/decoder now pulls data from stream, which means it needs to "understand" async. I would love to remove this dependency, and make it a pure state machine, which will still allow to build "async" solution on top of it.

@Krakean
Copy link

Krakean commented Apr 23, 2018

Note: lz4 1.8.2 introduces important bugfix but also breaking changes

You mean released 1.8.1.2 or 1.8.2 that one which is in dev branch? Just to be sure :)
And, if we speak about 1.8.2-dev, what important bugfix it made?

Also, I suppose you want 1.0.0-alpha be compatible with 1.8.1(.2?) that you initially picked up, but later anyway plan to upgrade to later version of lz4 with those breaking changes (imho there is nothing wrong in breaking changes, user always can stay with old/previously released version)?

@MiloszKrajewski
Copy link
Owner Author

MiloszKrajewski commented Apr 24, 2018

1.8.2 fixes some low probability/high impact security issue. It won't happen on PC but might happen on IoT devices. So, I'm not too concerned but still it is worth to port it, as once ported it freezes for a while.
It is not a interface breaking change (so no problem for you), but produced output is not binary identical so lots of my unit tests will start to fail.

@Krakean
Copy link

Krakean commented Apr 24, 2018

@MiloszKrajewski got it. :) if there is no problem for PC, so no reason to rush then with bringing 1.8.2 update :)
1.8.1.2 I assume will be fine for 1.0.0 final.

@Krakean
Copy link

Krakean commented Jun 14, 2018

@MiloszKrajewski development stalled? :-\

@MiloszKrajewski
Copy link
Owner Author

Yup. I had a bug and a mental block for a while. And then, after returning from holiday, found and fixed problem in one day.
Anyway, last thing to do is: more tests (stressing it a little bit) and friendlier API.

@Krakean
Copy link

Krakean commented Sep 9, 2018

@MiloszKrajewski good to see you back.
By the way, any plans to update fresh version of lz4? :) As I assume your source code is based on lz4 1.8.1 (deprecated one?), and now 1.8.2 is available

@MiloszKrajewski
Copy link
Owner Author

I just release to nuget and wrote some docs on main page. I'll wait for some API feedback and try to port next version. As long as it is just bug fixes it should be relatively easy, but if there are breaking changes it may take while.

@Krakean
Copy link

Krakean commented Sep 9, 2018

@MiloszKrajewski Well, since major version hasn't been changed, I guess its just minor fixes + optimizations, so I guess it shouldn't take much time :)
Plus, would be nice if you will add to readme.md some benchmarks, just have some speed comparing to C's lz4.

@MiloszKrajewski MiloszKrajewski added the enhancement New feature or request label Sep 12, 2018
@MiloszKrajewski MiloszKrajewski changed the title 1.0.0-alpha What's next... Sep 12, 2018
@MiloszKrajewski MiloszKrajewski self-assigned this Nov 4, 2018
@MiloszKrajewski MiloszKrajewski pinned this issue Jan 3, 2019
@Krakean
Copy link

Krakean commented Feb 10, 2019

@MiloszKrajewski

try to port next version

Seems like development a bit stalled, but curious, any progress on this?

@Krakean
Copy link

Krakean commented Feb 28, 2019

@MiloszKrajewski ping :)

@Krakean
Copy link

Krakean commented Mar 21, 2019

@MiloszKrajewski Hello Milosz, when you plan to continue development on this library? Or its no longer maintained?

@MiloszKrajewski
Copy link
Owner Author

Yes, I do. I'm just doing some online courses now and all my evenings are consumed by writing Scala. I'll come back to this project soon.
Do you have any urgent bugs/issues?

@Krakean
Copy link

Krakean commented Mar 26, 2019

@MiloszKrajewski

I'll come back to this project soon.

Glad to hear :)

Do you have any urgent bugs/issues?

Nah, not at the moment at least :)
Just worry about this project future, its the only C# native decent compression library which is suitable for games. Cant wait to see update sources to latest lz4 master with optimized decompression :) Block/content checksum also would be nice to see

@Krakean
Copy link

Krakean commented May 4, 2019

@MiloszKrajewski
Hello Milosz
No update to lz4 v1.9.1 in near feature? :-\ It has decent decomp speed optimizations which are really nice to have.

@MiloszKrajewski
Copy link
Owner Author

MiloszKrajewski commented May 5, 2019

I pulled 1.9.1 and compared it with 1.8 and change are quite drastic so no tweaking, it would require full port again. On the radar, but functional changes (like true async/await) would take precedence I think.
I can try latest 1.8.x though, but I'm not sure if this makes sense.

@Krakean
Copy link

Krakean commented May 10, 2019

@MiloszKrajewski

I can try latest 1.8.x though, but I'm not sure if this makes sense.

Its better than nothing at all :)

but functional changes (like true async/await) would take precedence I think.

Oh, good.
Any approximate estimates on new version? :)

@Krakean
Copy link

Krakean commented May 21, 2019

@MiloszKrajewski
Hello Milosz
Any progress on v1.9.1? As I can see by existing of the branch '191' you decided to integrate 1.9.1 after all, right?

@MiloszKrajewski
Copy link
Owner Author

MiloszKrajewski commented Mar 15, 2020

New version 1.2.1-beta released

@kylemc
Copy link

kylemc commented May 24, 2020

I see 'add true async read/write interface' in vNext above, but I also wrote up #34 to explain the value to me. Without a fix, I'll have to look for other fast compression options. Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants