2

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?

  • For reference here is a browser IDE using Pyodide, web workers, and SharedArrayBuffer: https://futurecoder.io/ – Alex Hall Sep 05 '21 at 15:25

1 Answers1

2

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

agektmr
  • 2,144
  • 15
  • 14
  • What happens when you enable the headers and check in the request headers in dev tools but it still says the same error? – user3112634 Feb 01 '23 at 21:39
  • Try it on Chrome and debug issues following the instructions here: https://web.dev/coop-coep/#debug-issues-using-chrome-devtools – agektmr Feb 03 '23 at 06:11