-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Description
Feature request
What are you trying to achieve?
I'm working in a multi-threaded Node.js application where sharp().toBuffer() output is passed to worker_threads via postMessage. To avoid copying overhead, I'd like to transfer the backing ArrayBuffer (i.e., use zero-copy transfers).
However, the current Buffer returned by toBuffer() may point to a shared or larger memory pool (via node::Buffer::New(...) with internal backing), making the .buffer potentially non-transferrable or containing unrelated memory slices.
Specifically you can test this by calling require('worker_threads'). isMarkedAsUntransferable(buffer) which today returns true.
When you searched for similar feature requests, what did you find that might be related?
Didn't find anything relevant to transferrable ArrayBuffer as a backing store.
What would you expect the API to look like?
Ideally, the existing toBuffer() call would already return a Buffer backed by a tightly sliced ArrayBuffer that is safe to transfer.
If not feasible as the default, a new option like:
sharp(...).toBuffer({ transferrable: true });