SharedArrayBuffer: cloning vs transferring?

Axel Rauschmayer rauschma at
Sat Jan 28 13:26:29 UTC 2017

Thanks! This worked for me for a toy example (for multiple calls, I’d record whether an exception was thrown during the first try):

try {
    // Try new API (clone)
} catch (e) {
    // Fall back to old API (transfer)
    worker.postMessage({sharedBuffer}, [sharedBuffer]);

Complete source code:


> On 25 Jan 2017, at 15:03, Lars Hansen <lhansen at> wrote:
> You're asking about how postMessage() handles a SharedArrayBuffer, since the spec changed last summer from requiring the buffer to be in the transfer list to forbidding it.  For the time being, Firefox allows the SAB to be in the transfer list but prints a warning in the console; by and by we will throw an error for that (and until then we'll fail any test cases that test for an exception).  This is implemented in Firefox 51, if my testing right now is correct.
> Since no browser has officially shipped this functionality I think some browser sniffing may be reasonable for early adopters who want to operate in a multi-browser setting.  I would expect that when this functionality is enabled by default in a browser the browser would adhere to the spec.
> --lars
> On Wed, Jan 25, 2017 at 10:49 AM, Axel Rauschmayer <rauschma at <mailto:rauschma at>> wrote:
> AFAICT, all current implementations want you to transfer SABs. What’s the best way to prepare for the future? `try` transferring and clone in the `catch` clause?
> Thanks!
> Axel
> --
> Dr. Axel Rauschmayer
> <>
> [Sent from a mobile device, please forgive brevity and typos]
> _______________________________________________
> es-discuss mailing list
> es-discuss at <mailto:es-discuss at>
> <>

Dr. Axel Rauschmayer
axel at

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list