On 03/05/2015 09:14 PM, Stefan Monnier wrote: >>>> * fixnum <-> int64_t is the only type conversion supported >>> Not sure I understand: can the C side see "Lisp_Object" (presumably as >>> an opaque type)? >> As I'm imagining the system, no. Access is indirected. That insulates C >> code from Emacs GC requirements and lets us easily support global >> references. > > But that forces a completely manual management of Lisp_Object > references, making the interface a lot more painful to use. > I must prefer exposing staticpro and conservative stack scanning. Reasonable people can differ on the conservative scanning issue (JSC does it; V8 and Java don't). If we bake the assumption of conservative scanning into the interface, we're going to regret it later. In practice, manually managing references is no trouble at all since most Lisp->C code is call-response, and we automatically unwind references when C functions return. I have to insist on not requiring staticpro, at least in its present form. Registration of new GC roots (i.e., global references) must be dynamic. You can't possibly predict the reference models modules might want to use.