python-lz4 icon indicating copy to clipboard operation
python-lz4 copied to clipboard

Missing support for dictionary compression (unstable, non-public API)

Open yihuang opened this issue 3 years ago • 6 comments

missing binding to the LZ4F_compressFrame_usingCDict.

yihuang avatar Nov 21 '22 17:11 yihuang

I'm looking into implementing this but hit an upstream roadblock: https://github.com/lz4/lz4/issues/791. The frame dictionary APIs are still considered unstable (despite their age) and are only available with statically linked copies of lz4. Today, python-lz4 supports both but prefers the dynamically-linked system copy of lz4 if available.

We can fail at runtime still if we are using a dynamically linked copy, but how lz4 was built into the package is pretty opaque to the user.

jmerdich avatar Dec 14 '22 18:12 jmerdich

Yup - we won't be adding this to the python bindings until the API is stable and public.

jonathanunderwood avatar Dec 14 '22 20:12 jonathanunderwood

@jonathanunderwood-- do you think having this as experimental only and forcing static links for experimental builds is a good middle ground? This seems like it only isn't stable because there hasn't been a major lz4 release in the last three years.

jmerdich avatar Dec 14 '22 21:12 jmerdich

@jonathanunderwood-- do you think having this as experimental only and forcing static links for experimental builds is a good middle ground? This seems like it only isn't stable because there hasn't been a major lz4 release in the last three years.

I'd consider it if someone submitted a PR and the added complexity in setup.py etc wasn't high and the submitter was prepared to stick around and support it. I have very limited bandwidth to support this package, and this really isn't a high priority compared to the other stuff that is outstanding (fixing/rewriting the frame bindings, Aarch64 builds, type hinting). But honestly, before that, I'd need to see convincing numbers demonstrating it's actually worth it.

jonathanunderwood avatar Dec 14 '22 22:12 jonathanunderwood

Note also issue #236 means we'll be making changes to setup.py and how compilers and flags are set up.

jonathanunderwood avatar Dec 14 '22 23:12 jonathanunderwood

Looks like dictionaries are now fully enabled in the LZ4 https://github.com/lz4/lz4/releases/tag/v1.10.0

danielhrisca avatar Jul 22 '24 11:07 danielhrisca