> Fibers is the highest priority library for us to get running with
Hoot.

well I'm very happy to hear that! There's very specific abstractions I want
to work with for exploring stuff and that makes it easier.

On Mon, Dec 11, 2023, 11:39 AM Thompson, David <dthomps...@worcester.edu>
wrote:

> On Mon, Dec 11, 2023 at 12:03 PM Daniel Skinner <dan...@dasa.cc> wrote:
> >
> > > I don't think I quite understand what's going on. Are you passing over
> WebAssembly.Instance objects as the event data to the AudioWorklet?
> >
> > Not the instance, but rather WebAssembly.Module via compileStreaming as
> the instance is not serializable.
> >
> > > Could you just instantiate everything in the main "thread" and pass
> over ready to use instances?
> >
> > My understanding is no; modules on the other hand can be serialized and
> passed to AudioWorklet via postMessage. Once there, they can be
> instantiated in the worklet.
>
> Ah, okay. That makes sense. I haven't used AudioWorklets before and
> it's been awhile since I've used Web Workers which have similar
> constraints.
>
> > In my research, this is a pervasive issue for projects targeting wasm
> that stems from limited api availability in AudioWorklet (e.g. no
> networking, no fetch due to thread priority given, other little things). It
> also appears the situation is made intentional and won't be changing.
> >
> > see for example:
> > https://github.com/WebAudio/web-audio-api/issues/1439
> >
> > https://github.com/rustwasm/wasm-pack/issues/689
> >
> > or search "wasm audioworklet fetch"
> >
> > The situation in hoot could be improved by accounting for this and
> basing the Scheme.load* of reflect.js around modules too instead of only
> fetchable paths. What I did was the smallest diff possible to confirm
> workable by adjusting instantiate_streaming and adding a
> Scheme.set_module_map but I dont necessarily recommend this.
>
> Yeah, I think what we'd want is an alternate interface rather than
> overloading what instantiate_streaming does, but the general pattern
> of loading the module on the main thread and instantiating on the
> worker sounds like the way to go.
>
> > iirc and specific to AudioWorklet, the situation could be further
> improved by making the contents of reflect.js work with import, but (again,
> iirc) the import statement for AudioWorklet only currently works in firefox
> and I didn't get a chance to see if its planned for other browsers; in this
> way, I wouldn't need to copy/paste the contents into realtime_worklet.js
>
> reflect.js is pretty rudimentary right now. import support would be
> very nice. I'll file an issue on GitLab so we don't forget about it.
>
> > > I also noticed you are doing things with WebGL. You beat me to it. ;)
> >
> > it "just worked"! But I need to write up some helpers as I explore forms
> of api design to do something more interesting.
>
> Yeah, it takes quite a bit of helper code to make something useful with
> OpenGL.
>
> > > At some point, I will be porting Chickadee to the web using WebGL and
> > Web Audio so your exploration here will help make that happen.
> >
> > I've only been writing scheme for like 5 weeks so it's my process for
> learning. I read through Chickadee like 3 weeks back when researching
> people's conventions and I appreciate you making that available.
>
> Oh neat, welcome to the world of Scheme, then! :)
>
> > What would be neat is to also get guile-fibers going (guile-fibers on
> desktop platform is what got me to dive in to begin with).
>
> Fibers is the highest priority library for us to get running with
> Hoot. We're still working on how the module system is going to work
> (very tricky!) but when it does we're going to figure out how we port
> fibers.
>
> - Dave
>

Reply via email to