I've put together a fix for the inability to share FFI objects between user 
namespaces... but it has a catch.

Specifically, I moved the define-struct of cpointer into a module by itself, 
called ffi/unsafe/cvector-def; that way, my tool.rkt file can require this 
one-line module and attach it to the user's namespace using 'reset-console'.

BUT: the cvector.rkt file wants to use "protect-out" to prevent others from 
using make-cvector explicitly, and I'm not sure how to do this after moving the 
structure definition into another file.  Compilation complains:

module: cannot protect imported identifier with re-provide in: make-cvector

... which seems pretty reasonable; there's no way to guarantee that protection 
when the imported binding could be floating around freely.

I started trying to track down the various instances of make-cvector inside the 
cvector.rkt module, but then decided it would be easier for a proof-of-concept 
simply to remove the protection.  

Happily, this solves my problem, but leaves another. Is there some obvious way 
to recover the protection--after all, I certainly have no need for the user 
namespaces to call make-cvector--without bloating the startup again?

John

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/dev

Reply via email to