-
Notifications
You must be signed in to change notification settings - Fork 30.5k
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
zlib: add zstd support #52100
zlib: add zstd support #52100
Conversation
Review requested:
|
ec19b6e
to
28914c7
Compare
Alright, got up to making the basics (seemingly) work: $ out/Debug/node -p 'zlib.zstdDecompressSync(zlib.zstdCompressSync("Hello World")).toString()'
Hello World |
383ff46
to
47c7ab8
Compare
Fixes: nodejs#48412 PR-URL: nodejs#52100
Fixes: nodejs#48412 PR-URL: nodejs#52100
Fixes: nodejs#48412 PR-URL: nodejs#52100
Fixes: nodejs#48412 PR-URL: nodejs#52100
Fixes: nodejs#48412 PR-URL: nodejs#52100
Fixes: nodejs#48412 PR-URL: nodejs#52100
Fixes: nodejs#48412 PR-URL: nodejs#52100
@jkrems ... can you give this a rebase? |
@jasnell I can but at this point I have spent quite bit of time on this PR without a clear signal on whether this would be likely to land (in this form or another). So it would be easier to justify if there was a tentative "yep, the high level approach looks good". By high level I mean something like "roughly following brotli integration in terms of API, using the facebook zstandard native implementation as the backing". |
That's will be great to have this in a |
@nodejs/tsc There aren't any outstanding objections, but this PR does appear to be at an impasse. @jkrems did not receive an answer to their question #52100 (comment). I have held off for months from doing this, hoping someone could review and collaborate since I couldn't. |
Nobody reviewed and approved the PR, there is nothing officially blocking it. If someone wants to volunteer to review it and approve it without objections, then its gonna land. |
Maybe not, but I don't think I'm in a position to give guidance or give definitive instructions on the approach. I have pinged the zlib team, I pinged the security team, I have asked people to review it in private, so I didn't know what else to do lol. |
I'm interested in landing this PR as well. If we can have one last push (and rebase this PR), I'm more than happy to review and land this PR. |
@anonrig Thanks! I'll work on a rebase. |
Fixes: nodejs#48412 PR-URL: nodejs#52100
Fixes: nodejs#48412 PR-URL: nodejs#52100
Landed in 0782c91...bf12d72 |
PR-URL: #52100 Reviewed-By: Yagiz Nizipli <[email protected]>
Fixes: #48412 PR-URL: #52100 Reviewed-By: Yagiz Nizipli <[email protected]>
Adds
ZstdCompress
andZsdDecompress
to thezlib
module which can be used to compress/decompress with the Zstandard ("zstd") algorithm.Notable omissions:
zlib.md
don't call out any params beyond the basic compression level.The code follows similar patterns to the PR that added Brotli support. Just that instead of brotli, it adds the equivalent zstd APIs. Just like Brotli, this required separate compression/decompression context objects.
Zstd itself has been around and stable for multiple years but this PR is early in terms of web support: It only just starts shipping by default in Chrome 123. On the other hand, by shipping in Chrome it will soon be supported quite widely on the web. Firefox also signaled support (https://bugzilla.mozilla.org/show_bug.cgi?id=1301878#c65).Zstd is now enabled on the web and supported by both Chrome and Firefox: https://caniuse.com/zstdOfficial support in node.js would allow passing additional WPTs around
fetch
(nodejs/undici#2847).