
What it looks like I’m going to do is make a separate place which will pump the messages from gstreamer into a thread running in my primary place, that thread will queue-callback
into the eventspace. Hopefully this will all fall together :slightly_smiling_face:

Yeah, sorry, I misunderstood that you meant a piece of syntax that is an identifier. I read “id” but glossed over the “bind” part.

ACTUALLY, I didn’t read the docs closely enough there is a gst_bus method to get a filedescriptor to use in a poll gst_bus_get_pollfd
. It’s pretty trivial to turn that into an event and use that instead of starting a whole other place.

What’s a wrapper module?

Is that when you provide a custom definition for #%module-begin
and process the module body?

If I want to make it so that define
, let
, and lambda
bound variables cannot be set!
, then I need to make my own versions of define
, let
, and lambda
that make variable-like transformers that throw an error on set!
, correct?

Yes, that seems like a reasonable way. You could also define your own set!, depending on what restrictions you wanted to enforce.

Make boxes the primary implementation for mutation?

I plan on using boxes for mutation. However, since I’m allowing arbitrary Racket libraries to be imported, I need to protect bindings defined by my lang from being set!