First, this is absolutely not referencing a racket bug.   I feel obligated to 
warn anybody that believes the assertion that GO now generates shared libraries 
consumable by no-GO code.

It's true.  Go generates a shared library, and you can call to it from Racket, 
but I can attest to two issues:

1) Expect crashes on OSX.   Go attempts to make its runtime system compatible 
with code anticipating a extern C interface.   There's lots of chatter with 
people running into "runtime/cgo: could not obtain pthread_keys", but none that 
mention Racket that I see.  However, it does crash inside of DrRacket on OSX.  
Googling delivers examples of Python and Node having similar crashes.

2) Dreadful speed.  Even when functioning, i.e. not on OSX, the speed is 
incredibly slow.  I believe that extern "C" style code runs in a separate GO 
routine and performance-hampering context switching is involved.   I'm talking 
about 1/35 of the speed of calling C/C++ from Racket.

So, this is just a warning to lower expectations if you are thinking about 
calling Go code from an FFI such as Racket's, or if you expect it to work on a 
Mac.  I hope the warning saves somebody a few hours of pain.

As always, thanks for Racket.

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 
For more options, visit

Reply via email to