HackerTrans
TopNewTrendsCommentsPastAskShowJobs

felixhandte

no profile record

Submissions

PivCo-Huffman: a novel approach to Huffman decoding

marcinzukowski.github.io
2 points·by felixhandte·letzten Monat·0 comments

OpenZL: A novel data compression framework

github.com
33 points·by felixhandte·vor 9 Monaten·4 comments

comments

felixhandte
·vor 9 Monaten·discuss
SDDL (and the front-end task of reshaping data in general) is only one component of OpenZL. Once you have the streams, you can do all sorts of transformations to them that Zstd doesn't.
felixhandte
·vor 9 Monaten·discuss
The OpenZL core supports arbitrary composition of graphs. So you can do this now via the compressor construction APIs. We just have to figure out how to make it easy to do.
felixhandte
·vor 9 Monaten·discuss
Wanna hop over to https://github.com/facebook/openzl/issues/76?
felixhandte
·vor 9 Monaten·discuss
Update: let's continue discussing genomic sequence compression on https://github.com/facebook/openzl/issues/76.
felixhandte
·vor 9 Monaten·discuss
Yes. None of the algorithms under test used any hardware acceleration in the benchmarks we ran.
felixhandte
·vor 9 Monaten·discuss
Ooh, thanks for mentioning these! I wasn't aware of the existence of these tools but yes it seems very possible that you could transform these other spec formats into SDDL descriptions. I'll check them out.
felixhandte
·vor 9 Monaten·discuss
Yes, definitely! Chunking support is currently in development. Streaming and seeking and so on are features we will certainly pursue as we mature towards an eventual v1.0.0.
felixhandte
·vor 9 Monaten·discuss
Thanks @dang!
felixhandte
·vor 9 Monaten·discuss
It was really hard to resist spilling the beans about OpenZL on this recent HN post about compressing genomic sequence data [0]. It's a great example of the really simple transformations you can perform on data that can unlock significant compression improvements. OpenZL can perform that transformation internally (quite easily with SDDL!).

[0] https://news.ycombinator.com/item?id=45223827
felixhandte
·vor 9 Monaten·discuss
Let us know how it goes!

We developed OpenZL initially for our own consumption at Meta. More recently we've been putting a lot of effort into making this a usable tool for people who, you know, didn't develop OpenZL. Your feedback is welcome!
felixhandte
·vor 9 Monaten·discuss
In addition to open-sourcing the code today, we also published:

- A white paper: https://arxiv.org/abs/2510.03203

- A blog post: https://engineering.fb.com/2025/10/06/developer-tools/openzl...

- The documentation website: https://openzl.org/
felixhandte
·vor 9 Monaten·discuss
In addition to the blog post, here are the other things we've published today:

Code: https://github.com/facebook/openzl

Documentation: https://openzl.org/

White Paper: https://arxiv.org/abs/2510.03203
felixhandte
·vor 10 Monaten·discuss
Zstd has a similar-ish capability called "repetition codes" [0].

The first stage of Zstd does LZ77 matching, which transforms the input into "sequences", a series of instructions each of which describes some literals and one match. The literals component of the instruction says "the next L bytes of the message are these L bytes". The match component says "the next M bytes of the input are the M bytes N bytes ago".

If you want to construct a match between two strings that differ by one character, rather than saying "the next N bytes are the N bytes M bytes ago except for this one byte here which is X instead", Zstd just breaks it up into two sequences, the first part of the match, and then a single literal byte describing the changed byte, and then the rest of the match, which is described as being at offset 0. The encoding rules for Zstd define offset 0 to mean "the previously used match offset". This isn't as powerful as a Levenshtein edit, but it's a reasonable approximation.

The big advantage of this approach is that it doesn't require much additional machinery on the encoder or decoder, and thus remains very fast. Whereas implementing a whole edit description state machine would (I think) slow down decompression and especially compression enormously.

[0] https://datatracker.ietf.org/doc/html/rfc8878#name-repeat-of...
felixhandte
·vor 10 Monaten·discuss
This is because Zstd's long-distance matcher looks for matching sequences of 64 bytes [0]. Because long matching sequences of the data will likely have the newlines inserted in different offsets in the run, this totally breaks Zstd's ability to find the long-distance match.

Ultimately, Zstd is a byte-oriented compressor that doesn't understand the semantics of the data it compresses. Improvements are certainly possible if you can recognize and separate that framing to recover a contiguous view of the underlying data.

[0] https://github.com/facebook/zstd/blob/v1.5.7/lib/compress/zs...

(I am one of the maintainers of Zstd.)
felixhandte
·vor 11 Jahren·discuss
Well, you can do write fanout, or you can do read fanout.