HackerTrans
トップ新着トレンドコメント過去質問紹介求人

felixhandte

no profile record

投稿

PivCo-Huffman: a novel approach to Huffman decoding

marcinzukowski.github.io
2 ポイント·投稿者 felixhandte·先月·0 コメント

OpenZL: A novel data compression framework

github.com
33 ポイント·投稿者 felixhandte·9 か月前·4 コメント

コメント

felixhandte
·9 か月前·議論
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
·9 か月前·議論
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
·9 か月前·議論
Wanna hop over to https://github.com/facebook/openzl/issues/76?
felixhandte
·9 か月前·議論
Update: let's continue discussing genomic sequence compression on https://github.com/facebook/openzl/issues/76.
felixhandte
·9 か月前·議論
Yes. None of the algorithms under test used any hardware acceleration in the benchmarks we ran.
felixhandte
·9 か月前·議論
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
·9 か月前·議論
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
·9 か月前·議論
Thanks @dang!
felixhandte
·9 か月前·議論
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
·9 か月前·議論
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
·9 か月前·議論
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
·9 か月前·議論
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
·10 か月前·議論
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
·10 か月前·議論
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
·11 年前·議論
Well, you can do write fanout, or you can do read fanout.