lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]



On Mar 14, 2016 9:49 PM, "Hisham" <h@hisham.hm> wrote:
>
> On 14 March 2016 at 18:22, Jonathan Goble <jcgoble3@gmail.com> wrote:
> > On Mon, Mar 14, 2016 at 5:06 PM, ThePhD <jm3689@columbia.edu> wrote:
> >> Dear Everyone,
> >>
> >> [long rant]
> >
> > I agree. Although I've not dug into it much, and not tried to write
> > any code for it, I prefer Python's C API over Lua's, because Python
> > defines a `PyObject *` pointer that can be used to point to an
> > arbitrary Python value, without need for complicated stack operations.
> > And building on that, Python functions written in C receive their
> > positional arguments as a `PyObject *` tuple passed directly as an
> > actual argument to the C function. (The method of unpacking that tuple
> > into C values is a bit clunky, but in my uneducated opinion, worth the
> > trade-off.)
> >
> > I'd love to see something similar to that for Lua.
>
> Python's C API looks much simpler on surface, indeed, but it has one
> complication that breaks the deal: garbage collection. This is the one
> thing that Lua's stack oriented API gives you for free, and it's its
> killer feature. Ask anyone who has coded significantly with Python's C
> API and the one thing they'll complain you about is having to deal
> explicitly with reference counting for GC.
>
> -- Hisham
>

I just wrapped PyObject in a C++ class and got it for free. >.>

/s/ Adam