Re: Coroutines and FFI

  • From: "Soni L." <fakedme+lj@xxxxxxxxx>
  • To: luajit@xxxxxxxxxxxxx
  • Date: Wed, 25 Mar 2015 16:26:26 -0300



On 25/03/15 04:20 PM, Ryan Gonzalez wrote:
You mean you're trying to pass a coroutine to a C function? That's pretty much impossible. Unless I'm misreading your message.

BTW, I like your Google+ profile picture. :)

On Wed, Mar 25, 2015 at 2:14 PM, Soni L. <fakedme+lj@xxxxxxxxx <mailto:fakedme+lj@xxxxxxxxx>> wrote:



    On 25/03/15 04:04 PM, Coda Highland wrote:

        On Wed, Mar 25, 2015 at 8:29 AM, Soni L. <fakedme+lj@xxxxxxxxx
        <mailto:fakedme%2Blj@xxxxxxxxx>> wrote:

            Why can't I pass coroutines thru the FFI as lua_State*s?

        Simply put, the FFI is not intended to interact with Lua at all.
        Accessing the Lua state while an FFI call is on the stack is
        undefined
        behavior and is very likely to blow up in your face.

        (Accessing a DIFFERENT global Lua state via FFI is perfectly
        safe, as
        the LuaJIT interpreter is reentrant.)

        /s/ Adam

    So... I can't have custom userdata? :/

    Hmm... What about adding custom userdata creation to the FFI? (for
    both heavy and light userdatum)




--
Ryan
[ERROR]: Your autotools build scripts are 200 lines longer than your program. Something’s wrong.
http://kirbyfan64.github.io/
Well, technically...

I would use a Lua function (e.g. function f(L) <something> = C.lua_newuserdata(L, <something>); return 1; end), cast it to a C function, then use FFI to register the function, then call it to generate a custom userdata.

Other related posts: