Sergey "Shnatsel" Davidoff
Sergey "Shnatsel" Davidoff
This PR fills in release notes and bumps version.
Use the new `zrip` crate instead of `ruzstd` proposed in #349. It is over 2x faster and supports multi-frame streams. The `paranoid` feature is used to disable all `unsafe` code,...
Pros: 100% safe Rust. No memory safety bugs, no C toolchain required Cons: ~3x slower than libzstd ### Future compatibility notes The safe Rust impl has no encoding support. That's...
The animation encoder accepted `AnimFrame`s whose dimensions were smaller than the animation canvas, but `anim_encode()` passed the canvas dimensions to `new_picture()` for every frame. This made libwebp import a smaller...
A similar change in zlib-rs ( https://github.com/trifectatechfoundation/zlib-rs/pull/488 ) nearly doubled performance on large sizes on Zen5. This PR has no impact on Zen4, likely due to its double-pumped AVX-512 implementation....
Since this adds a new file with minimal changes compared to avx512.rs, this is best reviewed with `diff src/imp/avx512.rs src/imp/avx512_vnni.rs` Addresses #22 On desktop Zen4 the improvements are marginal: there's...
AVX-512 has been stable since Rust 1.89 Preserves the nightly feature behavior to avoid disabling AVX-512 for existing nightly users, e.g. Chromium
zlib-rs has recently added an avx512-vnni variant that is 2x faster than baseline avx512 on their benchmarks: https://github.com/trifectatechfoundation/zlib-rs/pull/448 It would be great to have that available in simd-adler32 as well,...
Per-frame `EncodingConfig` handling passed a pointer to a temporary `ConfigContainer` into `WebPAnimEncoderAdd`. Because the temporary was created while building the FFI argument list, it could be dropped before libwebp read...
The first commit adds proof-of-concept tests that trigger out-of-bounds accesses under miri. The second one applies a fix by panicking on arithmetic overflow instead of allowing buffer overflow. This is...