SharedArrayBuffer
SharedArrayBuffer - JavaScript | MDN
Spectre対策で2018に無効化し、今は過渡期
Atomics - JavaScript | MDN
これでatomicなメモリ操作
SharedMemory と Atomic API について - Qiita
Chrome 92以降のSharedArrayBuffer警告に対するZOZOTOWNが実施した調査と解決策 - ZOZO TECH BLOG
SharedArrayBuffer と過渡期な cross-origin isolation の話
cross-origin isolation
他のoriginから完全に切り離された、安全な状態
これならSharedArrayBufferなど、Spectre対策で無効になったものが使える
有効にするには、いくつかの条件がある
現状は、COEPとCOOP
このヘッダをWebサーバーで提供する必要がある(COEP/COOP)
Cross-Origin-Embedder-Policy: require-corp
リソース側で、CORP, CORSでこのサイトがロードすることを許可していないとブロックされる
CORP: cross-originが設定してないリソースはブロック!
Cross-Origin-Resource-Policy
これを対応してもらうのは現実的でない
Cross-Origin-Opener-Policy: same-origin
window.openで新しいリンクを開いたときに、プロセスを使い回すか否か
same-originの場合のみ使い回す = cross originとはpostMessageができない
しかし制約がきつすぎるので、緩和する動き
単にSharedArrayBufferを使うだけなら、chromeならオリジントライアル(でプリケーショントライアル)で使うことができる
2021/04/29
New WebKit Features in Safari 14.1 | WebKit
Threading
WebAssembly support for the atomic instructions in the Threading specification, are enabled in Safari 14.1. Note, that until Safari supports the COEP/COOP headers, shared memory is not enabled as it could expose users to cross-origin Specter data leaks.
For more information, see the WebAssembly Specification for WASM Threads.
atomicは対応しているんだけどCOEP/COOPをサポートしてないのでSharedArrayBufferが使えない
TP133でCOEP/COOPをサポートしてcross-origin isolationが有効になった
とはいえ制約がきつい。cross-originなりソースを諦めれば行けるけど
Safari 11でwasmがはいったらしい
2021/09/30
Release Notes for Safari Technology Preview 133 | WebKit
Enabled Cross-Origin-Opener-Policy / Cross-Origisn-EmbedderPolicy headers support (r282105, r282246)
2021/12/16
iOS 15.2でCOOP,COEPがサポート
https://twitter.com/webkit/status/1471215349932691463