[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: "nesting" metatables
- From: Roberto Ierusalimschy <roberto@...>
- Date: Wed, 30 Dec 2015 14:17:06 -0200
> On Fri, Dec 25, 2015 at 12:00 AM, Jonathan Goble <firstname.lastname@example.org> wrote:
> > On Thu, Dec 24, 2015 at 3:54 PM, Egor Skriptunoff
> > <email@example.com> wrote:
> > > On Thu, Dec 24, 2015 at 12:29 PM, Jonathan Goble <firstname.lastname@example.org>
> > wrote:
> > >>
> > >> This metatable chaining could theoretically continue indefinitely.
> > >
> > > The nested metatable limit is 2000 levels for Lua 5.3 (and 100 for
> > LuaJIT).
> > Hence "theoretically". :)
> > I figured there were recursion limits, as in practice stack overflow
> > become a concern.
> It seems that nesting of "__index" metamethods results in tail calls.
The nesting of "__index" metamethods is done in a C loop, with no
calls at all. The limit is there only to avoid infinite loops (with
a table inheriting from itself).