rhysd / vim.wasm

Vim editor ported to WebAssembly
http://rhysd.github.io/vim.wasm
5.51k stars 145 forks source link

SharedArrayBuffer restricted in new browser versions #45

Open bar9 opened 3 years ago

bar9 commented 3 years ago

Describe the bug

A downstream project as well as the demo on https://rhysd.github.io/vim.wasm/ are now broken on most browsers, since SharedArrayBuffer has been disabled

Steps To Reproduce

Run https://rhysd.github.io/vim.wasm/

Expected behavior

vim opens up

Actual behavior

Alert popup with message FATAL: SharedArrayBuffer is not supported by this browser. If you're using Firefox or Safari, please enable feature flag.

Screenshots/DevTools console (if possible)

Your environment

Additional context (if any)

https://caniuse.com/?search=SharedArrayBuffer https://hacks.mozilla.org/2020/07/safely-reviving-shared-memory/

bar9 commented 3 years ago

Looking into this for my downstream project. If setting the COEP and COOP headers will succeed, I will follow up with a PR here as well.

rhysd commented 3 years ago

Thank you for reporting this. SharedArrayBuffer and atomics are mandatory for this project. I've not looked into this yet, but we'd need to use ServiceWorker to address this on GitHub Pages.

https://dev.to/stefnotch/enabling-coop-coep-without-touching-the-server-2d3n

bar9 commented 3 years ago

I can confirm that setting the headers below resolved the bug for my project (server side however):

        { "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" },
        { "key": "Cross-Origin-Opener-Policy", "value": "same-origin" }
rhysd commented 3 years ago

Yes, setting the headers in server side is the easiest way. But https://rhysd.github.io/vim.wasm is hosted on GitHub Pages and it does not provide a way to customize headers.

mjobuda commented 3 years ago

Can confirm this bug on linux current firefox & brave

rhysd commented 3 years ago

It would not work on other browsers also. Since I joined Chrome's origin trial, it now works only on Chrome and Chromium.

SahidMiller commented 2 years ago

Any way this can work with Xterm.js via a worker instead? Maybe by keeping the internal buffer strictly internal and just stream ANSI sequences out?

rhysd commented 2 years ago

That's not related to this issue.

HKalbasi commented 2 years ago

Netlify allows to set coop and coep headers and is free and as easy to use as gh-pages. Would you care to host this on netlify in addtion to gh-pages?

westurner commented 1 year ago

I can confirm that setting the headers below resolved the bug for my project (server side however):

Cross-Origin-Embedder-Policy: "require-corp"
Cross-Origin-Opener-Policy: "same-origin"
Zireael07 commented 4 months ago

README says any Chrome-based browser works but this is not the case. I use Vivaldi and it doesn't work.

Either it should be fixed or readme updated to mention how to work around