etemesi254 / zune-image

A fast and memory efficient image library in Rust
Other
325 stars 29 forks source link

Inflate: write to provided buffer #147

Open nickbabcock opened 11 months ago

nickbabcock commented 11 months ago

I'm interested in adapting zune-inflate for my purposes: concatenating multiple deflated pieces of data into a single buffer (imagine a zip file that has several files that can should be seen as one)

Right now, zune-inflate will issue a new buffer per request that then needs to be copied to the concatenated buffer.

Do you see a future where zune-inflate writes to a provided buffer? I can provide a buffer that has the required space + necessary padding.

For context, I'm in an environment where memory allocations are slower (Wasm), so I'm interested in avoiding them where possible.

EDIT: removed irrelevant discussion if provided API is implemented.

etemesi254 commented 11 months ago

Hi, yes, I do strive to provide an api that can writes to a pre-allocated buffer, but the problem is with inflate, we can't know how much space is needed to fully decompress given compressed data as the format doesn't have a size field or anything like that , unless you frame your data and explicitly provide size.

The alternative is that we always check if we can write to a provided buffer and if not we signal an error but suspension and recoverability complicates the api a lot so I'm not sure that's a worthwhile road to follow, but open to ideas

wcampbell0x2a commented 8 months ago

I use zune-inflate for backhand in which I already know the size of the uncompressed bytes and would use this feature if added!