I am developing my final year project. Developing a browser-based IDE. I am using Pyodide for compiling. It was working fine before, but when I tried to run the project now, I have encountered an error about SHaredArrayBuffer(). I do not know what caused that issue. Please guys anyone help me, my final year presentation is next Wednesday, and my project is not working.
Here is were I am using it.
readline: () => {
let sab = new SharedArrayBuffer(2048)
let sab_int32 = new Int32Array(sab)
let sab_uint8 = new Uint8Array(sab)
send('STDIN', sab)
Atomics.wait(sab_int32, 0, 0)
let str_len = sab_int32[0]
let str_uint8 = sab_uint8.slice(4, 4 + str_len)
return new TextDecoder().decode(str_uint8) + '\n'
},
Is there at least an alternative way to do it? And yes I am using a web-worker. I am getting this error on Edge, Firefox, and Mozilla.
ReferenceError: SharedArrayBuffer is not defined
I am running on the website on the localhost. Is is because my website is not certificated?
SharedArrayBuffer is disabled by default for security reasons starting from Chrome 92 and Firefox. Safari stopped supporting it since long time ago. Here's why: https://developer.chrome.com/blog/enabling-shared-array-buffer/
To use it, you'll need to enable cross-origin isolation by sending some HTTP headers. There are some additional requirements as well. You can learn more here: https://web.dev/coop-coep/
One quick escape-hatch is to register for an origin trial in Chrome. https://developer.chrome.com/blog/enabling-shared-array-buffer/#origin-trial