I have some fairly simple code setting up an embedded Racket BC instance in 
a C++ coroutine, allowing me to call `scheme_dynamic_require` a module 
using a custom #lang (supported by an embedded module) and extract a 
cpointer matching a certain type tag from the exported symbols.

It *looks* like it should be possible to port this over to even simpler 
Racket CS code since Racket CS handles suspending itself between calls 
instead of assuming a main-loop program structure; however I have a few 
questions here:
 - What are the preconditions and error-handling setup for calling 
`racket_dynamic_require` and/or other `racket_*` functions?
 - How does one obtain a path from a C string to pass to 
`racket_dynamic_require`? (i.e. what's the equivalent idiom to 
`scheme_make_path`?
 - There don't appear to be documented equivalents to SCHEME_CPTRP and 
SCHEME_CPTR_TYPE. 
What does `racket_cpointer_address` do if the argument is not a cpointer, 
and is there some way to check the type tag without triggering garbage 
collection?
- One of the hassles with Racket BC is that the garbage collection 
algorithm intetionally triggers segfaults and uses a signal handler to 
resolve them, marking it hard to use GDB on the larger embedded 
application. Does Racket CS have the same behavior, or is this not a 
problem anymore?

Thanks!

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/3c713776-3dfc-44f9-b148-b44c623a1d36n%40googlegroups.com.

Reply via email to