Makefile 39c39 < PLATS= guess aix bsd c89 freebsd generic ios linux macosx mingw posix solaris > PLATS= guess aix bsd c89 freebsd generic ios linux linux-readline macosx mingw posix solaris 49c49 < R= $V.0 > R= $V.1 README 2c2 < This is Lua 5.5.0, released on 15 Dec 2025. > This is Lua 5.5.1, released on 24 Jul 2026. doc/contents.html 35c35 < Copyright © 2020–2025 Lua.org, PUC-Rio. > Copyright © 2020–2026 Lua.org, PUC-Rio. 708c708 < Thu Dec 4 17:32:26 UTC 2025 > Mon Jul 13 21:19:58 UTC 2026 711c711 < Last change: revised for Lua 5.5.0 > Last change: revised for Lua 5.5.1 doc/manual.css 9a10,13 > pre.api { > white-space: normal ; > } > doc/manual.html 22c22 < Copyright © 2020–2025 Lua.org, PUC-Rio. > Copyright © 2020–2026 Lua.org, PUC-Rio. 2103c2103 < foo() -- 'foo' can freely change any global > foo() -- 'foo' can freely change any global 3266c3266,3280 < Several functions in the API return pointers (<code>const char*</code>) > Several functions in the API have parameters > that are pointers to C strings (<code>const char*</code>). > Some of these parameters have an associated length (<code>size_t</code>). > Unless stated otherwise, > when there is an associated length, > the string can contain embedded zeros; > moreover, the pointer can be <code>NULL</code> if the length is zero. > When there is no associated length, > the pointer must point to a zero-terminated string. > In any case, the string contents should remain unchanged > until the function returns. > > > <p> > Several functions in the API also return pointers (<code>const char*</code>) 3675c3689 < <pre>int lua_absindex (lua_State *L, int idx);</pre> > <pre class="api">int lua_absindex (lua_State *L, int idx);</pre> 3687c3701 < <pre>typedef void * (*lua_Alloc) (void *ud, > <pre class="api">typedef void * (*lua_Alloc) (void *ud, 3766c3780 < <pre>void lua_arith (lua_State *L, int op);</pre> > <pre class="api">void lua_arith (lua_State *L, int op);</pre> 3805c3819 < <pre>lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf);</pre> > <pre class="api">lua_CFunction lua_atpanic (lua_State *L, lua_CFunction panicf);</pre> 3816c3830 < <pre>void lua_call (lua_State *L, int nargs, int nresults);</pre> > <pre class="api">void lua_call (lua_State *L, int nargs, int nresults);</pre> 3889c3903 < <pre>void lua_callk (lua_State *L, > <pre class="api">void lua_callk (lua_State *L, 3904c3918 < <pre>typedef int (*lua_CFunction) (lua_State *L);</pre> > <pre class="api">typedef int (*lua_CFunction) (lua_State *L);</pre> 3956c3970 < <pre>int lua_checkstack (lua_State *L, int n);</pre> > <pre class="api">int lua_checkstack (lua_State *L, int n);</pre> 3976c3990 < <pre>void lua_close (lua_State *L);</pre> > <pre class="api">void lua_close (lua_State *L);</pre> 3998c4012 < <pre>void lua_closeslot (lua_State *L, int index);</pre> > <pre class="api">void lua_closeslot (lua_State *L, int index);</pre> 4016c4030 < <pre>int lua_closethread (lua_State *L, lua_State *from);</pre> > <pre class="api">int lua_closethread (lua_State *L, lua_State *from);</pre> 4051c4065 < <pre>int lua_compare (lua_State *L, int index1, int index2, int op);</pre> > <pre class="api">int lua_compare (lua_State *L, int index1, int index2, int op);</pre> 4079c4093 < <pre>void lua_concat (lua_State *L, int n);</pre> > <pre class="api">void lua_concat (lua_State *L, int n);</pre> 4096c4110 < <pre>void lua_copy (lua_State *L, int fromidx, int toidx);</pre> > <pre class="api">void lua_copy (lua_State *L, int fromidx, int toidx);</pre> 4110c4124 < <pre>void lua_createtable (lua_State *L, int nseq, int nrec);</pre> > <pre class="api">void lua_createtable (lua_State *L, int nseq, int nrec);</pre> 4129c4143 < <pre>int lua_dump (lua_State *L, > <pre class="api">int lua_dump (lua_State *L, 4173c4187 < <pre>int lua_error (lua_State *L);</pre> > <pre class="api">int lua_error (lua_State *L);</pre> 4188c4202 < <pre>int lua_gc (lua_State *L, int what, ...);</pre> > <pre class="api">int lua_gc (lua_State *L, int what, ...);</pre> 4273c4287 < <pre>lua_Alloc lua_getallocf (lua_State *L, void **ud);</pre> > <pre class="api">lua_Alloc lua_getallocf (lua_State *L, void **ud);</pre> 4286c4300 < <pre>int lua_getfield (lua_State *L, int index, const char *k);</pre> > <pre class="api">int lua_getfield (lua_State *L, int index, const char *k);</pre> 4304c4318 < <pre>void *lua_getextraspace (lua_State *L);</pre> > <pre class="api">void *lua_getextraspace (lua_State *L);</pre> 4329c4343 < <pre>int lua_getglobal (lua_State *L, const char *name);</pre> > <pre class="api">int lua_getglobal (lua_State *L, const char *name);</pre> 4341c4355 < <pre>int lua_geti (lua_State *L, int index, lua_Integer i);</pre> > <pre class="api">int lua_geti (lua_State *L, int index, lua_Integer i);</pre> 4359c4373 < <pre>int lua_getmetatable (lua_State *L, int index);</pre> > <pre class="api">int lua_getmetatable (lua_State *L, int index);</pre> 4373c4387 < <pre>int lua_gettable (lua_State *L, int index);</pre> > <pre class="api">int lua_gettable (lua_State *L, int index);</pre> 4397c4411 < <pre>int lua_gettop (lua_State *L);</pre> > <pre class="api">int lua_gettop (lua_State *L);</pre> 4411c4425 < <pre>int lua_getiuservalue (lua_State *L, int index, int n);</pre> > <pre class="api">int lua_getiuservalue (lua_State *L, int index, int n);</pre> 4429c4443 < <pre>void lua_insert (lua_State *L, int index);</pre> > <pre class="api">void lua_insert (lua_State *L, int index);</pre> 4442c4456 < <pre>typedef ... lua_Integer;</pre> > <pre class="api">typedef ... lua_Integer;</pre> 4467c4481 < <pre>int lua_isboolean (lua_State *L, int index);</pre> > <pre class="api">int lua_isboolean (lua_State *L, int index);</pre> 4479c4493 < <pre>int lua_iscfunction (lua_State *L, int index);</pre> > <pre class="api">int lua_iscfunction (lua_State *L, int index);</pre> 4491c4505 < <pre>int lua_isfunction (lua_State *L, int index);</pre> > <pre class="api">int lua_isfunction (lua_State *L, int index);</pre> 4503c4517 < <pre>int lua_isinteger (lua_State *L, int index);</pre> > <pre class="api">int lua_isinteger (lua_State *L, int index);</pre> 4516c4530 < <pre>int lua_islightuserdata (lua_State *L, int index);</pre> > <pre class="api">int lua_islightuserdata (lua_State *L, int index);</pre> 4528c4542 < <pre>int lua_isnil (lua_State *L, int index);</pre> > <pre class="api">int lua_isnil (lua_State *L, int index);</pre> 4540c4554 < <pre>int lua_isnone (lua_State *L, int index);</pre> > <pre class="api">int lua_isnone (lua_State *L, int index);</pre> 4552c4566 < <pre>int lua_isnoneornil (lua_State *L, int index);</pre> > <pre class="api">int lua_isnoneornil (lua_State *L, int index);</pre> 4565c4579 < <pre>int lua_isnumber (lua_State *L, int index);</pre> > <pre class="api">int lua_isnumber (lua_State *L, int index);</pre> 4578c4592 < <pre>int lua_isstring (lua_State *L, int index);</pre> > <pre class="api">int lua_isstring (lua_State *L, int index);</pre> 4591c4605 < <pre>int lua_istable (lua_State *L, int index);</pre> > <pre class="api">int lua_istable (lua_State *L, int index);</pre> 4603c4617 < <pre>int lua_isthread (lua_State *L, int index);</pre> > <pre class="api">int lua_isthread (lua_State *L, int index);</pre> 4615c4629 < <pre>int lua_isuserdata (lua_State *L, int index);</pre> > <pre class="api">int lua_isuserdata (lua_State *L, int index);</pre> 4627c4641 < <pre>int lua_isyieldable (lua_State *L);</pre> > <pre class="api">int lua_isyieldable (lua_State *L);</pre> 4638c4652 < <pre>typedef ... lua_KContext;</pre> > <pre class="api">typedef ... lua_KContext;</pre> 4653c4667 < <pre>typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);</pre> > <pre class="api">typedef int (*lua_KFunction) (lua_State *L, int status, lua_KContext ctx);</pre> 4664c4678 < <pre>void lua_len (lua_State *L, int index);</pre> > <pre class="api">void lua_len (lua_State *L, int index);</pre> 4678c4692 < <pre>int lua_load (lua_State *L, > <pre class="api">int lua_load (lua_State *L, 4758c4772 < <pre>lua_State *lua_newstate (lua_Alloc f, void *ud, > <pre class="api">lua_State *lua_newstate (lua_Alloc f, void *ud, 4779c4793 < <pre>void lua_newtable (lua_State *L);</pre> > <pre class="api">void lua_newtable (lua_State *L);</pre> 4791c4805 < <pre>lua_State *lua_newthread (lua_State *L);</pre> > <pre class="api">lua_State *lua_newthread (lua_State *L);</pre> 4811c4825 < <pre>void *lua_newuserdatauv (lua_State *L, size_t size, int nuvalue);</pre> > <pre class="api">void *lua_newuserdatauv (lua_State *L, size_t size, int nuvalue);</pre> 4817,4818c4831,4838 < (The user values can be set and read with the functions < <a href="#lua_setiuservalue"><code>lua_setiuservalue</code></a> and <a href="#lua_getiuservalue"><code>lua_getiuservalue</code></a>.) > > > <p> > The user values can be set and read with the functions > <a href="#lua_setiuservalue"><code>lua_setiuservalue</code></a> and <a href="#lua_getiuservalue"><code>lua_getiuservalue</code></a>. > The block of memory is suitably aligned for any ISO C object. > (See macro <code>LUAI_MAXALIGN</code> in file <code>luaconf.h</code> for other > alignment requirements.) 4834c4854 < <pre>int lua_next (lua_State *L, int index);</pre> > <pre class="api">int lua_next (lua_State *L, int index);</pre> 4872,4873c4892,4895 < See function <a href="#pdf-next"><code>next</code></a> for the caveats of modifying < the table during its traversal. > > > <p> > See function <a href="#pdf-next"><code>next</code></a> for more details about the traversal. 4880c4902 < <pre>typedef ... lua_Number;</pre> > <pre class="api">typedef ... lua_Number;</pre> 4896c4918 < <pre>int lua_numbertointeger (lua_Number n, lua_Integer *p);</pre> > <pre class="api">int lua_numbertointeger (lua_Number n, lua_Integer *p);</pre> 4918c4940 < <pre>unsigned lua_numbertocstring (lua_State *L, int idx, > <pre class="api">unsigned lua_numbertocstring (lua_State *L, int idx, 4936c4958 < <pre>int lua_pcall (lua_State *L, int nargs, int nresults, int msgh);</pre> > <pre class="api">int lua_pcall (lua_State *L, int nargs, int nresults, int msgh);</pre> 4986c5008 < <pre>int lua_pcallk (lua_State *L, > <pre class="api">int lua_pcallk (lua_State *L, 5003c5025 < <pre>void lua_pop (lua_State *L, int n);</pre> > <pre class="api">void lua_pop (lua_State *L, int n);</pre> 5015c5037 < <pre>void lua_pushboolean (lua_State *L, int b);</pre> > <pre class="api">void lua_pushboolean (lua_State *L, int b);</pre> 5026c5048 < <pre>void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);</pre> > <pre class="api">void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);</pre> 5075c5097 < <pre>void lua_pushcfunction (lua_State *L, lua_CFunction f);</pre> > <pre class="api">void lua_pushcfunction (lua_State *L, lua_CFunction f);</pre> 5087c5109 < <pre>const char *lua_pushexternalstring (lua_State *L, > <pre class="api">const char *lua_pushexternalstring (lua_State *L, 5129c5151 < <pre>const char *lua_pushfstring (lua_State *L, const char *fmt, ...);</pre> > <pre class="api">const char *lua_pushfstring (lua_State *L, const char *fmt, ...);</pre> 5163c5185 < <pre>void lua_pushglobaltable (lua_State *L);</pre> > <pre class="api">void lua_pushglobaltable (lua_State *L);</pre> 5174c5196 < <pre>void lua_pushinteger (lua_State *L, lua_Integer n);</pre> > <pre class="api">void lua_pushinteger (lua_State *L, lua_Integer n);</pre> 5185c5207 < <pre>void lua_pushlightuserdata (lua_State *L, void *p);</pre> > <pre class="api">void lua_pushlightuserdata (lua_State *L, void *p);</pre> 5206c5228 < <pre>const char *lua_pushliteral (lua_State *L, const char *s);</pre> > <pre class="api">const char *lua_pushliteral (lua_State *L, const char *s);</pre> 5219c5241 < <pre>const char *lua_pushlstring (lua_State *L, const char *s, size_t len);</pre> > <pre class="api">const char *lua_pushlstring (lua_State *L, const char *s, size_t len);</pre> 5245c5267 < <pre>void lua_pushnil (lua_State *L);</pre> > <pre class="api">void lua_pushnil (lua_State *L);</pre> 5256c5278 < <pre>void lua_pushnumber (lua_State *L, lua_Number n);</pre> > <pre class="api">void lua_pushnumber (lua_State *L, lua_Number n);</pre> 5267c5289 < <pre>const char *lua_pushstring (lua_State *L, const char *s);</pre> > <pre class="api">const char *lua_pushstring (lua_State *L, const char *s);</pre> 5290c5312 < <pre>int lua_pushthread (lua_State *L);</pre> > <pre class="api">int lua_pushthread (lua_State *L);</pre> 5302c5324 < <pre>void lua_pushvalue (lua_State *L, int index);</pre> > <pre class="api">void lua_pushvalue (lua_State *L, int index);</pre> 5314c5336 < <pre>const char *lua_pushvfstring (lua_State *L, > <pre class="api">const char *lua_pushvfstring (lua_State *L, 5332c5354 < <pre>int lua_rawequal (lua_State *L, int index1, int index2);</pre> > <pre class="api">int lua_rawequal (lua_State *L, int index1, int index2);</pre> 5347c5369 < <pre>int lua_rawget (lua_State *L, int index);</pre> > <pre class="api">int lua_rawget (lua_State *L, int index);</pre> 5360c5382 < <pre>int lua_rawgeti (lua_State *L, int index, lua_Integer n);</pre> > <pre class="api">int lua_rawgeti (lua_State *L, int index, lua_Integer n);</pre> 5378c5400 < <pre>int lua_rawgetp (lua_State *L, int index, const void *p);</pre> > <pre class="api">int lua_rawgetp (lua_State *L, int index, const void *p);</pre> 5397c5419 < <pre>lua_Unsigned lua_rawlen (lua_State *L, int index);</pre> > <pre class="api">lua_Unsigned lua_rawlen (lua_State *L, int index);</pre> 5414c5436 < <pre>void lua_rawset (lua_State *L, int index);</pre> > <pre class="api">void lua_rawset (lua_State *L, int index);</pre> 5427c5449 < <pre>void lua_rawseti (lua_State *L, int index, lua_Integer i);</pre> > <pre class="api">void lua_rawseti (lua_State *L, int index, lua_Integer i);</pre> 5446c5468 < <pre>void lua_rawsetp (lua_State *L, int index, const void *p);</pre> > <pre class="api">void lua_rawsetp (lua_State *L, int index, const void *p);</pre> 5465c5487 < <pre>typedef const char * (*lua_Reader) (lua_State *L, > <pre class="api">typedef const char * (*lua_Reader) (lua_State *L, 5488c5510 < <pre>void lua_register (lua_State *L, const char *name, lua_CFunction f);</pre> > <pre class="api">void lua_register (lua_State *L, const char *name, lua_CFunction f);</pre> 5504c5526 < <pre>void lua_remove (lua_State *L, int index);</pre> > <pre class="api">void lua_remove (lua_State *L, int index);</pre> 5518c5540 < <pre>void lua_replace (lua_State *L, int index);</pre> > <pre class="api">void lua_replace (lua_State *L, int index);</pre> 5532c5554 < <pre>int lua_resume (lua_State *L, lua_State *from, int nargs, > <pre class="api">int lua_resume (lua_State *L, lua_State *from, int nargs, 5543c5565 < then you call <a href="#lua_resume"><code>lua_resume</code></a>, > Then you call <a href="#lua_resume"><code>lua_resume</code></a>, 5581c5603 < <pre>void lua_rotate (lua_State *L, int idx, int n);</pre> > <pre class="api">void lua_rotate (lua_State *L, int idx, int n);</pre> 5601c5623 < <pre>void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);</pre> > <pre class="api">void lua_setallocf (lua_State *L, lua_Alloc f, void *ud);</pre> 5613c5635 < <pre>void lua_setfield (lua_State *L, int index, const char *k);</pre> > <pre class="api">void lua_setfield (lua_State *L, int index, const char *k);</pre> 5632c5654 < <pre>void lua_setglobal (lua_State *L, const char *name);</pre> > <pre class="api">void lua_setglobal (lua_State *L, const char *name);</pre> 5644c5666 < <pre>void lua_seti (lua_State *L, int index, lua_Integer n);</pre> > <pre class="api">void lua_seti (lua_State *L, int index, lua_Integer n);</pre> 5663c5685 < <pre>int lua_setiuservalue (lua_State *L, int index, int n);</pre> > <pre class="api">int lua_setiuservalue (lua_State *L, int index, int n);</pre> 5677c5699 < <pre>int lua_setmetatable (lua_State *L, int index);</pre> > <pre class="api">int lua_setmetatable (lua_State *L, int index);</pre> 5695c5717 < <pre>void lua_settable (lua_State *L, int index);</pre> > <pre class="api">void lua_settable (lua_State *L, int index);</pre> 5715c5737 < <pre>void lua_settop (lua_State *L, int index);</pre> > <pre class="api">void lua_settop (lua_State *L, int index);</pre> 5735c5757 < <pre>void lua_setwarnf (lua_State *L, lua_WarnFunction f, void *ud);</pre> > <pre class="api">void lua_setwarnf (lua_State *L, lua_WarnFunction f, void *ud);</pre> 5748c5770 < <pre>typedef struct lua_State lua_State;</pre> > <pre class="api">typedef struct lua_State lua_State;</pre> 5769c5791 < <pre>int lua_status (lua_State *L);</pre> > <pre class="api">int lua_status (lua_State *L);</pre> 5793,5794c5815,5816 < <span class="apii">[-0, +1, –]</span> < <pre>size_t lua_stringtonumber (lua_State *L, const char *s);</pre> > <span class="apii">[-0, +(0|1), –]</span> > <pre class="api">size_t lua_stringtonumber (lua_State *L, const char *s);</pre> 5815c5837 < <pre>int lua_toboolean (lua_State *L, int index);</pre> > <pre class="api">int lua_toboolean (lua_State *L, int index);</pre> 5833c5855 < <pre>lua_CFunction lua_tocfunction (lua_State *L, int index);</pre> > <pre class="api">lua_CFunction lua_tocfunction (lua_State *L, int index);</pre> 5846c5868 < <pre>void lua_toclose (lua_State *L, int index);</pre> > <pre class="api">void lua_toclose (lua_State *L, int index);</pre> 5888c5910 < <pre>lua_Integer lua_tointeger (lua_State *L, int index);</pre> > <pre class="api">lua_Integer lua_tointeger (lua_State *L, int index);</pre> 5899c5921 < <pre>lua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);</pre> > <pre class="api">lua_Integer lua_tointegerx (lua_State *L, int index, int *isnum);</pre> 5920c5942 < <pre>const char *lua_tolstring (lua_State *L, int index, size_t *len);</pre> > <pre class="api">const char *lua_tolstring (lua_State *L, int index, size_t *len);</pre> 5958c5980 < <pre>lua_Number lua_tonumber (lua_State *L, int index);</pre> > <pre class="api">lua_Number lua_tonumber (lua_State *L, int index);</pre> 5969c5991 < <pre>lua_Number lua_tonumberx (lua_State *L, int index, int *isnum);</pre> > <pre class="api">lua_Number lua_tonumberx (lua_State *L, int index, int *isnum);</pre> 5990c6012 < <pre>const void *lua_topointer (lua_State *L, int index);</pre> > <pre class="api">const void *lua_topointer (lua_State *L, int index);</pre> 6010c6032 < <pre>const char *lua_tostring (lua_State *L, int index);</pre> > <pre class="api">const char *lua_tostring (lua_State *L, int index);</pre> 6021c6043 < <pre>lua_State *lua_tothread (lua_State *L, int index);</pre> > <pre class="api">lua_State *lua_tothread (lua_State *L, int index);</pre> 6035c6057 < <pre>void *lua_touserdata (lua_State *L, int index);</pre> > <pre class="api">void *lua_touserdata (lua_State *L, int index);</pre> 6050c6072 < <pre>int lua_type (lua_State *L, int index);</pre> > <pre class="api">int lua_type (lua_State *L, int index);</pre> 6074c6096 < <pre>const char *lua_typename (lua_State *L, int tp);</pre> > <pre class="api">const char *lua_typename (lua_State *L, int tp);</pre> 6085c6107 < <pre>typedef ... lua_Unsigned;</pre> > <pre class="api">typedef ... lua_Unsigned;</pre> 6096c6118 < <pre>int lua_upvalueindex (int i);</pre> > <pre class="api">int lua_upvalueindex (int i);</pre> 6109c6131 < <pre>lua_Number lua_version (lua_State *L);</pre> > <pre class="api">lua_Number lua_version (lua_State *L);</pre> 6119c6141 < <pre>typedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont);</pre> > <pre class="api">typedef void (*lua_WarnFunction) (void *ud, const char *msg, int tocont);</pre> 6140c6162 < <pre>void lua_warning (lua_State *L, const char *msg, int tocont);</pre> > <pre class="api">void lua_warning (lua_State *L, const char *msg, int tocont);</pre> 6156c6178 < <pre>typedef int (*lua_Writer) (lua_State *L, > <pre class="api">typedef int (*lua_Writer) (lua_State *L, 6188c6210 < <pre>void lua_xmove (lua_State *from, lua_State *to, int n);</pre> > <pre class="api">void lua_xmove (lua_State *from, lua_State *to, int n);</pre> 6204c6226 < <pre>int lua_yield (lua_State *L, int nresults);</pre> > <pre class="api">int lua_yield (lua_State *L, int nresults);</pre> 6221c6243 < <pre>int lua_yieldk (lua_State *L, > <pre class="api">int lua_yieldk (lua_State *L, 6244c6266 < with the <code>n</code> results removed and > with all the results (<code>nresults</code>) removed and 6345c6367 < The length of the string <code>source</code>. > the length of the string <code>source</code>. 6445c6467 < <pre>lua_Hook lua_gethook (lua_State *L);</pre> > <pre class="api">lua_Hook lua_gethook (lua_State *L);</pre> 6456c6478 < <pre>int lua_gethookcount (lua_State *L);</pre> > <pre class="api">int lua_gethookcount (lua_State *L);</pre> 6467c6489 < <pre>int lua_gethookmask (lua_State *L);</pre> > <pre class="api">int lua_gethookmask (lua_State *L);</pre> 6478c6500 < <pre>int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);</pre> > <pre class="api">int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);</pre> 6531c6553 < fills in the fields <code>source</code>, <code>short_src</code>, > fills in the fields <code>source</code>, <code>srclen</code>, <code>short_src</code>, 6564c6586 < <pre>const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);</pre> > <pre class="api">const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);</pre> 6605c6627 < <pre>int lua_getstack (lua_State *L, int level, lua_Debug *ar);</pre> > <pre class="api">int lua_getstack (lua_State *L, int level, lua_Debug *ar);</pre> 6628c6650 < <pre>const char *lua_getupvalue (lua_State *L, int funcindex, int n);</pre> > <pre class="api">const char *lua_getupvalue (lua_State *L, int funcindex, int n);</pre> 6647c6669 < <pre>typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);</pre> > <pre class="api">typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);</pre> 6696c6718 < <pre>void lua_sethook (lua_State *L, lua_Hook f, int mask, int count);</pre> > <pre class="api">void lua_sethook (lua_State *L, lua_Hook f, int mask, int count);</pre> 6746c6768 < <pre>const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);</pre> > <pre class="api">const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);</pre> 6762c6784,6786 < Parameters <code>ar</code> and <code>n</code> are as in the function <a href="#lua_getlocal"><code>lua_getlocal</code></a>. > Parameters <code>ar</code> and <code>n</code> are as in the function <a href="#lua_getlocal"><code>lua_getlocal</code></a>, > except that <code>ar</code> cannot be <code>NULL</code>, > as <code>lua_setlocal</code> only operates on activation records. 6770c6794 < <pre>const char *lua_setupvalue (lua_State *L, int funcindex, int n);</pre> > <pre class="api">const char *lua_setupvalue (lua_State *L, int funcindex, int n);</pre> 6794c6818 < <pre>void *lua_upvalueid (lua_State *L, int funcindex, int n);</pre> > <pre class="api">void *lua_upvalueid (lua_State *L, int funcindex, int n);</pre> 6820c6844 < <pre>void lua_upvaluejoin (lua_State *L, int funcindex1, int n1, > <pre class="api">void lua_upvaluejoin (lua_State *L, int funcindex1, int n1, 6895c6919 < <pre>void luaL_addchar (luaL_Buffer *B, char c);</pre> > <pre class="api">void luaL_addchar (luaL_Buffer *B, char c);</pre> 6907c6931 < <pre>const void luaL_addgsub (luaL_Buffer *B, const char *s, > <pre class="api">const void luaL_addgsub (luaL_Buffer *B, const char *s, 6921c6945 < <pre>void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);</pre> > <pre class="api">void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);</pre> 6935c6959 < <pre>void luaL_addsize (luaL_Buffer *B, size_t n);</pre> > <pre class="api">void luaL_addsize (luaL_Buffer *B, size_t n);</pre> 6948c6972 < <pre>void luaL_addstring (luaL_Buffer *B, const char *s);</pre> > <pre class="api">void luaL_addstring (luaL_Buffer *B, const char *s);</pre> 6961c6985 < <pre>void luaL_addvalue (luaL_Buffer *B);</pre> > <pre class="api">void luaL_addvalue (luaL_Buffer *B);</pre> 6981c7005 < <pre>void luaL_argcheck (lua_State *L, > <pre class="api">void luaL_argcheck (lua_State *L, 6996c7020 < <pre>int luaL_argerror (lua_State *L, int arg, const char *extramsg);</pre> > <pre class="api">int luaL_argerror (lua_State *L, int arg, const char *extramsg);</pre> 7015c7039 < <pre>void luaL_argexpected (lua_State *L, > <pre class="api">void luaL_argexpected (lua_State *L, 7030c7054 < <pre>typedef struct luaL_Buffer luaL_Buffer;</pre> > <pre class="api">typedef struct luaL_Buffer luaL_Buffer;</pre> 7102c7126 < <pre>char *luaL_buffaddr (luaL_Buffer *B);</pre> > <pre class="api">char *luaL_buffaddr (luaL_Buffer *B);</pre> 7115c7139 < <pre>void luaL_buffinit (lua_State *L, luaL_Buffer *B);</pre> > <pre class="api">void luaL_buffinit (lua_State *L, luaL_Buffer *B);</pre> 7129c7153 < <pre>size_t luaL_bufflen (luaL_Buffer *B);</pre> > <pre class="api">size_t luaL_bufflen (luaL_Buffer *B);</pre> 7141c7165 < <pre>char *luaL_buffinitsize (lua_State *L, luaL_Buffer *B, size_t sz);</pre> > <pre class="api">char *luaL_buffinitsize (lua_State *L, luaL_Buffer *B, size_t sz);</pre> 7153c7177 < <pre>void luaL_buffsub (luaL_Buffer *B, int n);</pre> > <pre class="api">void luaL_buffsub (luaL_Buffer *B, int n);</pre> 7166c7190 < <pre>int luaL_callmeta (lua_State *L, int obj, const char *e);</pre> > <pre class="api">int luaL_callmeta (lua_State *L, int obj, const char *e);</pre> 7187c7211 < <pre>void luaL_checkany (lua_State *L, int arg);</pre> > <pre class="api">void luaL_checkany (lua_State *L, int arg);</pre> 7199c7223 < <pre>lua_Integer luaL_checkinteger (lua_State *L, int arg);</pre> > <pre class="api">lua_Integer luaL_checkinteger (lua_State *L, int arg);</pre> 7212c7236 < <pre>const char *luaL_checklstring (lua_State *L, int arg, size_t *l);</pre> > <pre class="api">const char *luaL_checklstring (lua_State *L, int arg, size_t *l);</pre> 7231c7255 < <pre>lua_Number luaL_checknumber (lua_State *L, int arg);</pre> > <pre class="api">lua_Number luaL_checknumber (lua_State *L, int arg);</pre> 7243c7267 < <pre>int luaL_checkoption (lua_State *L, > <pre class="api">int luaL_checkoption (lua_State *L, 7274c7298 < <pre>void luaL_checkstack (lua_State *L, int sz, const char *msg);</pre> > <pre class="api">void luaL_checkstack (lua_State *L, int sz, const char *msg);</pre> 7288c7312 < <pre>const char *luaL_checkstring (lua_State *L, int arg);</pre> > <pre class="api">const char *luaL_checkstring (lua_State *L, int arg);</pre> 7305c7329 < <pre>void luaL_checktype (lua_State *L, int arg, int t);</pre> > <pre class="api">void luaL_checktype (lua_State *L, int arg, int t);</pre> 7317c7341 < <pre>void *luaL_checkudata (lua_State *L, int arg, const char *tname);</pre> > <pre class="api">void *luaL_checkudata (lua_State *L, int arg, const char *tname);</pre> 7330c7354 < <pre>void luaL_checkversion (lua_State *L);</pre> > <pre class="api">void luaL_checkversion (lua_State *L);</pre> 7342c7366 < <pre>int luaL_dofile (lua_State *L, const char *filename);</pre> > <pre class="api">int luaL_dofile (lua_State *L, const char *filename);</pre> 7361c7385 < <pre>int luaL_dostring (lua_State *L, const char *str);</pre> > <pre class="api">int luaL_dostring (lua_State *L, const char *str);</pre> 7379c7403 < <pre>int luaL_error (lua_State *L, const char *fmt, ...);</pre> > <pre class="api">int luaL_error (lua_State *L, const char *fmt, ...);</pre> 7402c7426 < <pre>int luaL_execresult (lua_State *L, int stat);</pre> > <pre class="api">int luaL_execresult (lua_State *L, int stat);</pre> 7415c7439 < <pre>int luaL_fileresult (lua_State *L, int stat, const char *fname);</pre> > <pre class="api">int luaL_fileresult (lua_State *L, int stat, const char *fname);</pre> 7428c7452 < <pre>int luaL_getmetafield (lua_State *L, int obj, const char *e);</pre> > <pre class="api">int luaL_getmetafield (lua_State *L, int obj, const char *e);</pre> 7443c7467 < <pre>int luaL_getmetatable (lua_State *L, const char *tname);</pre> > <pre class="api">int luaL_getmetatable (lua_State *L, const char *tname);</pre> 7457c7481 < <pre>int luaL_getsubtable (lua_State *L, int idx, const char *fname);</pre> > <pre class="api">int luaL_getsubtable (lua_State *L, int idx, const char *fname);</pre> 7473c7497 < <pre>const char *luaL_gsub (lua_State *L, > <pre class="api">const char *luaL_gsub (lua_State *L, 7490c7514 < <pre>lua_Integer luaL_len (lua_State *L, int index);</pre> > <pre class="api">lua_Integer luaL_len (lua_State *L, int index);</pre> 7505c7529 < <pre>int luaL_loadbuffer (lua_State *L, > <pre class="api">int luaL_loadbuffer (lua_State *L, 7519c7543 < <pre>int luaL_loadbufferx (lua_State *L, > <pre class="api">int luaL_loadbufferx (lua_State *L, 7545c7569 < <pre>int luaL_loadfile (lua_State *L, const char *filename);</pre> > <pre class="api">int luaL_loadfile (lua_State *L, const char *filename);</pre> 7556c7580 < <pre>int luaL_loadfilex (lua_State *L, const char *filename, > <pre class="api">int luaL_loadfilex (lua_State *L, const char *filename, 7587c7611 < <pre>int luaL_loadstring (lua_State *L, const char *s);</pre> > <pre class="api">int luaL_loadstring (lua_State *L, const char *s);</pre> 7609c7633 < <pre>unsigned int luaL_makeseed (lua_State *L);</pre> > <pre class="api">unsigned int luaL_makeseed (lua_State *L);</pre> 7622c7646 < <pre>void luaL_newlib (lua_State *L, const luaL_Reg l[]);</pre> > <pre class="api">void luaL_newlib (lua_State *L, const luaL_Reg l[]);</pre> 7644c7668 < <pre>void luaL_newlibtable (lua_State *L, const luaL_Reg l[]);</pre> > <pre class="api">void luaL_newlibtable (lua_State *L, const luaL_Reg l[]);</pre> 7665c7689 < <pre>int luaL_newmetatable (lua_State *L, const char *tname);</pre> > <pre class="api">int luaL_newmetatable (lua_State *L, const char *tname);</pre> 7682a7707,7716 > <p> > Usage note: Beware the use of the return value of this function to > conditionally initializes the new metatable > (e.g., by adding metamethods to it). > If the initialization raises an error, > the metatable will not be properly initialized, > but a subsequent execution of that code will detect that the > metatable already exists and then skip the initialization. > > 7688c7722 < <pre>lua_State *luaL_newstate (void);</pre> > <pre class="api">lua_State *luaL_newstate (void);</pre> 7709c7743 < <pre>T luaL_opt (L, func, arg, dflt);</pre> > <pre class="api">T luaL_opt (L, func, arg, dflt);</pre> 7730c7764 < <pre>lua_Integer luaL_optinteger (lua_State *L, > <pre class="api">lua_Integer luaL_optinteger (lua_State *L, 7748c7782 < <pre>const char *luaL_optlstring (lua_State *L, > <pre class="api">const char *luaL_optlstring (lua_State *L, 7779c7813 < <pre>lua_Number luaL_optnumber (lua_State *L, int arg, lua_Number d);</pre> > <pre class="api">lua_Number luaL_optnumber (lua_State *L, int arg, lua_Number d);</pre> 7794c7828 < <pre>const char *luaL_optstring (lua_State *L, > <pre class="api">const char *luaL_optstring (lua_State *L, 7811c7845 < <pre>char *luaL_prepbuffer (luaL_Buffer *B);</pre> > <pre class="api">char *luaL_prepbuffer (luaL_Buffer *B);</pre> 7823c7857 < <pre>char *luaL_prepbuffsize (luaL_Buffer *B, size_t sz);</pre> > <pre class="api">char *luaL_prepbuffsize (luaL_Buffer *B, size_t sz);</pre> 7839c7873 < <pre>void luaL_pushfail (lua_State *L);</pre> > <pre class="api">void luaL_pushfail (lua_State *L);</pre> 7850c7884 < <pre>void luaL_pushresult (luaL_Buffer *B);</pre> > <pre class="api">void luaL_pushresult (luaL_Buffer *B);</pre> 7862c7896 < <pre>void luaL_pushresultsize (luaL_Buffer *B, size_t sz);</pre> > <pre class="api">void luaL_pushresultsize (luaL_Buffer *B, size_t sz);</pre> 7873c7907 < <pre>int luaL_ref (lua_State *L, int t);</pre> > <pre class="api">int luaL_ref (lua_State *L, int t);</pre> 7913c7947 < <pre>typedef struct luaL_Reg { > <pre class="api">typedef struct luaL_Reg { 7932c7966 < <pre>void luaL_requiref (lua_State *L, const char *modname, > <pre class="api">void luaL_requiref (lua_State *L, const char *modname, 7956c7990 < <pre>void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);</pre> > <pre class="api">void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);</pre> 7983c8017 < <pre>void luaL_setmetatable (lua_State *L, const char *tname);</pre> > <pre class="api">void luaL_setmetatable (lua_State *L, const char *tname);</pre> 7995c8029 < <pre>void *luaL_alloc (void *ud, void *ptr, size_t osize, size_t nsize);</pre> > <pre class="api">void *luaL_alloc (void *ud, void *ptr, size_t osize, size_t nsize);</pre> 8006c8040 < <pre>typedef struct luaL_Stream { > <pre class="api">typedef struct luaL_Stream { 8045c8079 < <pre>void *luaL_testudata (lua_State *L, int arg, const char *tname);</pre> > <pre class="api">void *luaL_testudata (lua_State *L, int arg, const char *tname);</pre> 8058c8092 < <pre>const char *luaL_tolstring (lua_State *L, int idx, size_t *len);</pre> > <pre class="api">const char *luaL_tolstring (lua_State *L, int idx, size_t *len);</pre> 8081c8115 < <pre>void luaL_traceback (lua_State *L, lua_State *L1, const char *msg, > <pre class="api">void luaL_traceback (lua_State *L, lua_State *L1, const char *msg, 8097c8131 < <pre>int luaL_typeerror (lua_State *L, int arg, const char *tname);</pre> > <pre class="api">int luaL_typeerror (lua_State *L, int arg, const char *tname);</pre> 8112c8146 < <pre>const char *luaL_typename (lua_State *L, int index);</pre> > <pre class="api">const char *luaL_typename (lua_State *L, int index);</pre> 8123c8157 < <pre>void luaL_unref (lua_State *L, int t, int ref);</pre> > <pre class="api">void luaL_unref (lua_State *L, int t, int ref);</pre> 8143c8177 < <pre>void luaL_where (lua_State *L, int lvl);</pre> > <pre class="api">void luaL_where (lua_State *L, int lvl);</pre> 8258c8292 < <pre>void luaL_openlibs (lua_State *L);</pre> > <pre class="api">void luaL_openlibs (lua_State *L);</pre> 8269c8303 < <pre>void luaL_openselectedlibs (lua_State *L, int load, int preload);</pre> > <pre class="api">void luaL_openselectedlibs (lua_State *L, int load, int preload);</pre> 8657,8658c8691 < See function <a href="#pdf-next"><code>next</code></a> for the caveats of modifying < the table during its traversal. > See function <a href="#pdf-next"><code>next</code></a> for more details about the traversal. 11683a11717,11719 > > > <p> 11692a11729,11730 > It is good practice to always require this library explicitly > before using it. 12308a12347,12351 > > > <p> > The compilation option <code>LUA_COMPAT_GLOBAL</code> (see <code>luaconf.h</code>) > makes <code>global</code> a regular word. 12438c12481 < <b>global</b> attnamelist | > <b>global</b> attnamelist [‘<b>=</b>’ explist] | 12502c12545 < Mon Dec 15 21:02:05 UTC 2025 > Fri Jul 24 14:07:32 UTC 2026 12505c12548 < Last change: revised for Lua 5.5.0 > Last change: revised for Lua 5.5.1 doc/readme.html 112c112 < the top-level directory, which is named <TT>lua-5.5.0</TT>. > the top-level directory, which is named <TT>lua-5.5.1</TT>. 265a266 > <LI> named vararg tables 299c300 < Copyright © 1994–2025 Lua.org, PUC-Rio. > Copyright © 1994–2026 Lua.org, PUC-Rio. 326c327 < Wed Dec 10 11:37:23 UTC 2025 > Mon Jul 13 21:20:24 UTC 2026 329c330 < Last change: revised for Lua 5.5.0 > Last change: revised for Lua 5.5.1 src/Makefile 33c33 < PLATS= guess aix bsd c89 freebsd generic ios linux macosx mingw posix solaris > PLATS= guess aix bsd c89 freebsd generic ios linux linux-readline macosx mingw posix solaris 125a126,128 > linux-readline: > $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX -DLUA_USE_READLINE" SYSLIBS="-Wl,-E -ldl -lreadline" > 127c130 < $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX -DLUA_USE_READLINE" SYSLIBS="-lreadline" > $(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline" src/lapi.c 190c190 < setnilvalue(s2v(L->top.p++)); /* clear new slots */ > setnilvalue2s(L->top.p++); /* clear new slots */ 213c213 < setnilvalue(s2v(level)); > setnilvalue2s(level); 369c369 < LUA_API unsigned (lua_numbertocstring) (lua_State *L, int idx, char *buff) { > LUA_API unsigned lua_numbertocstring (lua_State *L, int idx, char *buff) { 516c516 < setnilvalue(s2v(L->top.p)); > setnilvalue2s(L->top.p); 573c573 < setnilvalue(s2v(L->top.p)); > setnilvalue2s(L->top.p); 746c746 < setnilvalue(s2v(L->top.p)); > setnilvalue2s(L->top.p); 839c839 < setnilvalue(s2v(L->top.p)); > setnilvalue2s(L->top.p); 1124a1125 > luaC_checkGC(L); 1203a1205 > l_mem newdebt; 1207,1208c1209,1214 < n = g->GCdebt; /* force to run one basic step */ < luaE_setdebt(g, g->GCdebt - n); > newdebt = 0; /* force to run one basic step */ > else if (g->GCdebt >= n - MAX_LMEM) /* no overflow? */ > newdebt = g->GCdebt - n; > else /* overflow */ > newdebt = -MAX_LMEM; /* set debt to mininum value */ > luaE_setdebt(g, newdebt); 1296d1301 < api_checknelems(L, n); 1297a1303 > api_checkpop(L, n); 1415c1421 < api_checknelems(L, 1); > api_checkpop(L, 1); src/lauxlib.c 515a516,529 > /* > ** Get/create metatable (MT) for boxes > */ > static void getBoxMT (lua_State *L) { > const char *BOXMT = "_UBOX*"; /* key for the metatable */ > if (luaL_getmetatable(L, BOXMT) == LUA_TNIL) { /* MT not created yet? */ > luaL_newlibtable(L, boxmt); /* create it */ > luaL_setfuncs(L, boxmt, 0); /* initialize it */ > lua_copy(L, -1, -2); /* change stack from nil,MT to MT,MT */ > lua_setfield(L, LUA_REGISTRYINDEX, BOXMT); /* store MT in the registry */ > } > } > > 520,521c534 < if (luaL_newmetatable(L, "_UBOX*")) /* creating metatable? */ < luaL_setfuncs(L, boxmt, 0); /* set its metamethods */ > getBoxMT(L); 877c890 < return luaL_loadbuffer(L, s, strlen(s), s); > return luaL_loadbufferx(L, s, strlen(s), s, "t"); src/lauxlib.h 84,85c84,85 < LUALIB_API void *luaL_alloc (void *ud, void *ptr, size_t osize, < size_t nsize); > LUALIB_API void *(luaL_alloc) (void *ud, void *ptr, size_t osize, > size_t nsize); 106c106 < LUALIB_API unsigned luaL_makeseed (lua_State *L); > LUALIB_API unsigned (luaL_makeseed) (lua_State *L); src/lbaselib.c 343,344c343,345 < const char *mode = luaL_optstring(L, idx, "bt"); < if (strchr(mode, 'B') != NULL) /* Lua code cannot use fixed buffers */ > const char *mode = luaL_optstring(L, idx, NULL); > if (mode != NULL && strchr(mode, 'B') != NULL) { > /* Lua code cannot use fixed buffers */ 345a347 > } 367,378c369 < ** reserved slot, above all arguments, to hold a copy of the returned < ** string to avoid it being collected while parsed. 'load' has four < ** optional arguments (chunk, source name, mode, and environment). < */ < #define RESERVEDSLOT 5 < < < /* < ** Reader for generic 'load' function: 'lua_load' uses the < ** stack for internal stuff, so the reader cannot change the < ** stack top. Instead, it keeps its resulting string in a < ** reserved slot inside the stack. > ** Reader for generic 'load' function. 381c372 < (void)(ud); /* not used */ > int *firstcall = cast(int *, ud); 382a374,377 > if (*firstcall) > *firstcall = 0; > else > lua_pop(L, 1); /* remove previous result */ 386d380 < lua_pop(L, 1); /* pop result */ 392,393c386 < lua_replace(L, RESERVEDSLOT); /* save string in reserved slot */ < return lua_tolstring(L, RESERVEDSLOT, size); > return lua_tolstring(L, -1, size); 407a401 > int firstcall = 1; /* userdata for generic_reader */ 410,411c404 < lua_settop(L, RESERVEDSLOT); /* create reserved slot */ < status = lua_load(L, generic_reader, NULL, chunkname, mode); > status = lua_load(L, generic_reader, &firstcall, chunkname, mode); 428c421 < if (l_unlikely(luaL_loadfile(L, fname) != LUA_OK)) > if (l_unlikely(luaL_loadfilex(L, fname, "bt") != LUA_OK)) src/lcode.c 666,667c666,667 < TValue k, v; < setnilvalue(&v); > lua_State *L = fs->ls->L; > TValue k; 669,670c669,670 < sethvalue(fs->ls->L, &k, fs->kcache); < return k2proto(fs, &k, &v); > sethvalue(L, &k, fs->kcache); > return k2proto(fs, &k, &G(L)->nilvalue); 830c830 < e->u.info = temp; /* (can't do a direct assignment; values overlap) */ > e->u.info = temp; /* (avoid a direct assignment; values overlap) */ 1368c1368 < t->u.ind.t = temp; /* (can't do a direct assignment; values overlap) */ > t->u.ind.t = temp; /* (avoid a direct assignment; values overlap) */ 1376c1376 < t->u.ind.t = vreg; /* (avoid a direct assignment; values may overlap) */ > t->u.ind.t = vreg; /* (avoid a direct assignment; values may overlap?) */ 1381c1381,1382 < t->u.ind.t = cast_byte((t->k == VLOCAL) ? t->u.var.ridx: t->u.info); > lu_byte temp = cast_byte((t->k == VLOCAL) ? t->u.var.ridx: t->u.info); > t->u.ind.t = temp; /* (avoid a direct assignment; values may overlap?) */ 1936,1937d1936 < /* avoid "not used" warnings when assert is off (for 'onelua.c') */ < (void)luaP_isOT; (void)luaP_isIT; src/ldblib.c 430c430 < if (luaL_loadbuffer(L, buffer, strlen(buffer), "=(debug command)") || > if (luaL_loadbufferx(L, buffer, strlen(buffer), "=(debug command)", "t") || src/ldebug.c 294c294 < setnilvalue(s2v(L->top.p)); > setnilvalue2s(L->top.p); 583c583 < case OP_GETTABLE: { > case OP_GETTABLE: case OP_GETVARG: { src/ldo.c 224,226c224,226 < ** Check whether stack has enough space to run a simple function (such < ** as a finalizer): At least BASIC_STACK_SIZE in the Lua stack and < ** 2 slots in the C stack. > ** Check whether stacks have enough space to run a simple function (such > ** as a finalizer): At least BASIC_STACK_SIZE in the Lua stack, two > ** available CallInfos, and two "slots" in the C stack. 229,230c229,238 < return ((stacksize(L) < MAXSTACK - BASIC_STACK_SIZE) && < (getCcalls(L) < LUAI_MAXCCALLS - 2)); > if (getCcalls(L) >= LUAI_MAXCCALLS - 2) > return 0; /* not enough C-stack slots */ > if (L->ci->next == NULL && luaE_extendCI(L, 0) == NULL) > return 0; /* unable to allocate first ci */ > if (L->ci->next->next == NULL && luaE_extendCI(L, 0) == NULL) > return 0; /* unable to allocate second ci */ > if (L->stack_last.p - L->top.p >= BASIC_STACK_SIZE) > return 1; /* enough (BASIC_STACK_SIZE) free slots in the Lua stack */ > else /* try to grow stack to a size with enough free slots */ > return luaD_growstack(L, BASIC_STACK_SIZE, 0); 344c352 < setnilvalue(s2v(newstack + i)); /* erase new segment */ > setnilvalue2s(newstack + i); /* erase new segment */ 425,430d432 < < void luaD_inctop (lua_State *L) { < L->top.p++; < luaD_checkstack(L, 1); < } < 549c551 < setnilvalue(s2v(res + i)); > setnilvalue2s(res + i); 569c571 < setnilvalue(s2v(res)); /* adjust with nil */ > setnilvalue2s(res); /* adjust with nil */ 619c621 < #define next_ci(L) (L->ci->next ? L->ci->next : luaE_extendCI(L)) > #define next_ci(L) (L->ci->next ? L->ci->next : luaE_extendCI(L, 1)) 689c691 < setnilvalue(s2v(func + narg1)); /* complete missing arguments */ > setnilvalue2s(func + narg1); /* complete missing arguments */ 736c738 < setnilvalue(s2v(L->top.p++)); /* complete missing arguments */ > setnilvalue2s(L->top.p++); /* complete missing arguments */ 1122a1125,1128 > /* > ** Before the first call to the reader function, Lua reserves a slot > ** with a table for anchoring stuff. > */ 1127c1133,1139 < int c = zgetc(p->z); /* read first character */ > int c; > Table *anchor; > ptrdiff_t otop = savestack(L, L->top.p); /* original top */ > luaD_checkstack(L, 2); > anchor = luaH_new(L); /* create the anchor table */ > sethvalue2s(L, L->top.p++, anchor); /* anchor the anchor table */ > c = zgetc(p->z); /* read first character */ 1134c1146 < cl = luaU_undump(L, p->z, p->name, fixed); > cl = luaU_undump(L, p->z, anchor, p->name, fixed); 1138c1150 < cl = luaY_parser(L, p->z, &p->buff, &p->dyd, p->name, c); > cl = luaY_parser(L, p->z, anchor, &p->buff, &p->dyd, p->name, c); 1139a1152,1153 > L->top.p = restorestack(L, otop); /* restore stack */ > setclLvalue2s(L, L->top.p++, cl); /* push closure */ 1141a1156,1169 > } > > > /* > ** Anchor an object in a table in the stack. First, anchor the object > ** temporarily in the stack, as luaH_set may call an emergency GC. > ** Then, add it in the table with itself as its key. > */ > void luaD_anchorobj (lua_State *L, Table *anchor, GCObject *obj) { > setgcovalue(L, s2v(L->top.p++), obj); /* temporary anchor in the stack */ > luaH_set(L, anchor, s2v(L->top.p - 1), s2v(L->top.p - 1)); > /* Because this is a new key, luaH_set will call the GC barrier, so > we don't need to call the barrier again here */ > L->top.p--; src/ldo.h 91d90 < LUAI_FUNC void luaD_inctop (lua_State *L); 92a92 > LUAI_FUNC void luaD_anchorobj (lua_State *L, Table *anchor, GCObject *obj); src/lgc.c 712c712 < setnilvalue(s2v(o)); /* clear dead stack slice */ > setnilvalue2s(o); /* clear dead stack slice */ 1296c1296 < if (!g->gcemergency && luaD_checkminstack(L)) > if (g->tobefnz != NULL && !g->gcemergency && luaD_checkminstack(L)) 1675c1675 < else { /* no more finalizers or emergency mode or no enough stack > else { /* no more finalizers or emergency mode or not enough stack src/llex.c 191c191 < #if defined(LUA_COMPAT_GLOBAL) > #if LUA_COMPAT_GLOBAL src/llimits.h 237c237 < #define luai_numidiv(L,a,b) ((void)L, l_floor(luai_numdiv(L,a,b))) > #define luai_numidiv(L,a,b) l_floor(luai_numdiv(L,a,b)) 242c242 < #define luai_numdiv(L,a,b) ((a)/(b)) > #define luai_numdiv(L,a,b) ((void)L, (a)/(b)) 270,273c270,273 < #define luai_numadd(L,a,b) ((a)+(b)) < #define luai_numsub(L,a,b) ((a)-(b)) < #define luai_nummul(L,a,b) ((a)*(b)) < #define luai_numunm(L,a) (-(a)) > #define luai_numadd(L,a,b) ((void)L, (a)+(b)) > #define luai_numsub(L,a,b) ((void)L, (a)-(b)) > #define luai_nummul(L,a,b) ((void)L, (a)*(b)) > #define luai_numunm(L,a) ((void)L, -(a)) src/loadlib.c 544c544 < return checkload(L, (luaL_loadfile(L, filename) == LUA_OK), filename); > return checkload(L, (luaL_loadfilex(L, filename, "bt") == LUA_OK), filename); src/lobject.h 211c211,212 < #define setnilvalue(obj) settt_(obj, LUA_VNIL) > #define setnilvalue(obj) settt_(obj, LUA_VNIL) > #define setnilvalue2s(stk) setnilvalue(s2v(stk)) src/lopcodes.c 107c107 < ,opmode(0, 0, 1, 0, 1, iABC) /* OP_VARARGPREP */ > ,opmode(0, 0, 0, 0, 0, iABC) /* OP_VARARGPREP */ 112,124c112 < < /* < ** Check whether instruction sets top for next instruction, that is, < ** it results in multiple values. < */ < int luaP_isOT (Instruction i) { < OpCode op = GET_OPCODE(i); < switch (op) { < case OP_TAILCALL: return 1; < default: < return testOTMode(op) && GETARG_C(i) == 0; < } < } > #define testITMode(m) (luaP_opmodes[m] & (1 << 5)) 128,129c116,118 < ** Check whether instruction uses top from previous instruction, that is, < ** it accepts multiple results. > ** Check whether instruction uses top. That happens for OP_VARARGPREP > ** and for instructions that use multiple values set by the previous > ** instruction. 135c124,126 < return testITMode(GET_OPCODE(i)) && GETARG_vB(i) == 0; > return GETARG_vB(i) == 0; > case OP_VARARGPREP: > return 1; src/lopcodes.h 420,421c420,421 < ** bit 5: instruction uses 'L->top' set by previous instruction (when B == 0) < ** bit 6: instruction sets 'L->top' for next instruction (when C == 0) > ** bit 5: used by 'luaP_isIT' > ** bit 6: used by 'luaP_isOT' 430,431d429 < #define testITMode(m) (luaP_opmodes[m] & (1 << 5)) < #define testOTMode(m) (luaP_opmodes[m] & (1 << 6)) 435c433,440 < LUAI_FUNC int luaP_isOT (Instruction i); > /* Check whether instruction sets top for next instruction, that is, > ** it results in multiple values. Used only for tests. > */ > #define luaP_isOT(i) \ > (GET_OPCODE(i) == OP_TAILCALL || \ > ((luaP_opmodes[GET_OPCODE(i)] & (1 << 6)) && GETARG_C(i) == 0)) > > src/lparser.c 824,825c824 < sethvalue2s(L, L->top.p, fs->kcache); /* anchor it */ < luaD_inctop(L); > luaD_anchorobj(L, ls->h, obj2gco(fs->kcache)); /* anchor it */ 833a833 > TValue temp; 845a846,848 > /* remove kcache table from scanner table ("weigh" its anchor) */ > sethvalue(L, &temp, fs->kcache); /* key to be set to nil */ > luaH_set(L, ls->h, &temp, &G(L)->nilvalue); 847d849 < L->top.p--; /* pop kcache table */ 1166a1169 > return; /* to avoid warnings */ 1614d1616 < leaveblock(fs); /* finish scope */ 1622a1625 > leaveblock(fs); /* finish scope */ 2114c2117 < #if defined(LUA_COMPAT_GLOBAL) > #if LUA_COMPAT_GLOBAL 2168c2171 < LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, > LClosure *luaY_parser (lua_State *L, ZIO *z, Table *anchor, Mbuffer *buff, 2172,2177c2175,2178 < LClosure *cl = luaF_newLclosure(L, 1); /* create main closure */ < setclLvalue2s(L, L->top.p, cl); /* anchor it (to avoid being collected) */ < luaD_inctop(L); < lexstate.h = luaH_new(L); /* create table for scanner */ < sethvalue2s(L, L->top.p, lexstate.h); /* anchor it */ < luaD_inctop(L); > LClosure *cl; > lexstate.h = anchor; /* table for scanner */ > cl = luaF_newLclosure(L, 1); /* create main closure */ > luaD_anchorobj(L, anchor, obj2gco(cl)); /* anchor it in scanner table */ 2190,2191c2191 < L->top.p--; /* remove scanner's table */ < return cl; /* closure is on the stack, too */ > return cl; src/lparser.h 192,193c192,194 < LUAI_FUNC LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, < Dyndata *dyd, const char *name, int firstchar); > LUAI_FUNC LClosure *luaY_parser (lua_State *L, ZIO *z, Table *anchor, > Mbuffer *buff, Dyndata *dyd, > const char *name, int firstchar); src/lstate.c 71c71 < CallInfo *luaE_extendCI (lua_State *L) { > CallInfo *luaE_extendCI (lua_State *L, int err) { 73,76c73,79 < lua_assert(L->ci->next == NULL); < ci = luaM_new(L, CallInfo); < lua_assert(L->ci->next == NULL); < L->ci->next = ci; > ci = luaM_reallocvector(L, NULL, 0, 1, CallInfo); > if (l_unlikely(ci == NULL)) { /* allocation failed? */ > if (err) > luaM_error(L); /* raise the error */ > return NULL; /* else only report it */ > } > ci->next = L->ci->next; 78c81,83 < ci->next = NULL; > L->ci->next = ci; > if (ci->next) > ci->next->previous = ci; 149c154 < setnilvalue(s2v(ci->func.p)); /* 'function' entry for basic 'ci' */ > setnilvalue2s(ci->func.p); /* 'function' entry for basic 'ci' */ 164c169 < setnilvalue(s2v(L1->stack.p + i)); /* erase new stack */ > setnilvalue2s(L1->stack.p + i); /* erase new stack */ src/lstate.h 386c386 < ** Union of all collectable objects (only for conversions) > ** Union of all collectable objects 406,409c406,412 < /* < ** ISO C99, 6.7.2.1 p.14: < ** "A pointer to a union object, suitably converted, points to each of < ** its members [...], and vice versa." > /* macros to convert a GCObject into a specific value > ** ISO C99, 6.3.2.2 p.7: > ** "A pointer to an object or incomplete type may be converted to a > ** pointer to a different object or incomplete type. If the resulting > ** pointer is not correctly aligned for the pointed-to type, the > ** behavior is undefined. Otherwise, when converted back again, the > ** result shall compare equal to the original pointer." 411,424c414,424 < #define cast_u(o) cast(union GCUnion *, (o)) < < /* macros to convert a GCObject into a specific value */ < #define gco2ts(o) \ < check_exp(novariant((o)->tt) == LUA_TSTRING, &((cast_u(o))->ts)) < #define gco2u(o) check_exp((o)->tt == LUA_VUSERDATA, &((cast_u(o))->u)) < #define gco2lcl(o) check_exp((o)->tt == LUA_VLCL, &((cast_u(o))->cl.l)) < #define gco2ccl(o) check_exp((o)->tt == LUA_VCCL, &((cast_u(o))->cl.c)) < #define gco2cl(o) \ < check_exp(novariant((o)->tt) == LUA_TFUNCTION, &((cast_u(o))->cl)) < #define gco2t(o) check_exp((o)->tt == LUA_VTABLE, &((cast_u(o))->h)) < #define gco2p(o) check_exp((o)->tt == LUA_VPROTO, &((cast_u(o))->p)) < #define gco2th(o) check_exp((o)->tt == LUA_VTHREAD, &((cast_u(o))->th)) < #define gco2upv(o) check_exp((o)->tt == LUA_VUPVAL, &((cast_u(o))->upv)) > #define gco2(v,T,o) check_exp((o)->tt == v, cast(T*, o)) > #define gco2nv(t,T,o) check_exp(novariant((o)->tt) == t, cast(T*, o)) > #define gco2ts(o) gco2nv(LUA_TSTRING, TString, o) > #define gco2u(o) gco2(LUA_VUSERDATA, Udata, o) > #define gco2lcl(o) (&gco2(LUA_VLCL, Closure, o)->l) > #define gco2ccl(o) (&gco2(LUA_VCCL, Closure, o)->c) > #define gco2cl(o) gco2nv(LUA_TFUNCTION, Closure, o) > #define gco2t(o) gco2(LUA_VTABLE, Table, o) > #define gco2p(o) gco2(LUA_VPROTO, Proto, o) > #define gco2th(o) gco2(LUA_VTHREAD, lua_State, o) > #define gco2upv(o) gco2(LUA_VUPVAL, UpVal, o) 431c431 < check_exp(novariant((v)->tt) >= LUA_TSTRING, &(cast_u(v)->gc)) > check_exp(novariant((v)->tt) >= LUA_TSTRING, cast(GCObject*, v)) 441c441 < LUAI_FUNC CallInfo *luaE_extendCI (lua_State *L); > LUAI_FUNC CallInfo *luaE_extendCI (lua_State *L, int err); src/lstrlib.c 144,145c144,145 < if (n <= 0) < lua_pushliteral(L, ""); > if (n <= 0 || (len | lsep) == 0) > lua_pushliteral(L, ""); /* no repetitions or both strings empty */ 759a760,762 > /* > ** Prepare state for matches. These fields are not affected by each match. > */ 763d765 < ms->matchdepth = MAXCCALLS; 769a772,775 > /* > ** (Re)prepare state for a match, setting fields that change during > ** each match. > */ 770a777 > ms->matchdepth = MAXCCALLS; 772d778 < lua_assert(ms->matchdepth == MAXCCALLS); 971c977 < changed = add_value(&ms, &b, src, e, tr) | changed; > changed = add_value(&ms, &b, src, e, tr) || changed; 1729c1735 < luaL_argcheck(L, totalsize <= LUA_MAXINTEGER - size, > luaL_argcheck(L, totalsize <= MAX_SIZE - size, src/ltable.c 654,657c654,656 < ** Exchange the hash part of 't1' and 't2'. (In 'flags', only the < ** dummy bit must be exchanged: The 'isrealasize' is not related < ** to the hash part, and the metamethod bits do not change during < ** a resize, so the "real" table can keep their values.) > ** Exchange the hash part of 't1' and 't2'. (In 'flags', only the dummy > ** bit must be exchanged: The metamethod bits do not change during a > ** resize, so the "real" table can keep their values.) 1158a1158 > const TValue *actk = key; /* actual key to insert */ 1164,1166c1164,1166 < if (luaV_flttointeger(f, &k, F2Ieq)) { < setivalue(&aux, k); /* key is equal to an integer */ < key = &aux; /* insert it as an integer */ > if (luaV_flttointeger(f, &k, F2Ieq)) { /* is key equal to an integer? */ > setivalue(&aux, k); > actk = &aux; /* use the integer as the key */ 1179c1179 < luaH_newkey(L, t, key, value); > luaH_newkey(L, t, actk, value); src/ltablib.c 45c45 < ** has a metatable with the required metamethods) > ** has a metatable with the required metamethods). 48c48,49 < if (lua_type(L, arg) != LUA_TTABLE) { /* is it not a table? */ > int tp = lua_type(L, arg); > if (tp != LUA_TTABLE) { /* is it not a table? */ 53c54,55 < (!(what & TAB_L) || checkfield(L, "__len", ++n))) { > (!(what & TAB_L) || /* strings don't need '__len' to have a length */ > tp == LUA_TSTRING || checkfield(L, "__len", ++n))) { 206a209 > lua_Integer len = aux_getn(L, 1, TAB_R); 208c211 < lua_Integer e = luaL_opt(L, luaL_checkinteger, 3, luaL_len(L, 1)); > lua_Integer e = luaL_opt(L, luaL_checkinteger, 3, len); src/ltm.c 265c265 < setnilvalue(s2v(ci->func.p + i)); /* erase original parameter (for GC) */ > setnilvalue2s(ci->func.p + i); /* erase original parameter (for GC) */ 286c286 < setnilvalue(s2v(ci->func.p + nfixparams + 1)); > setnilvalue2s(ci->func.p + nfixparams + 1); 310c310 < setnilvalue(s2v(ra)); /* else produce nil */ > setnilvalue2s(ra); /* else produce nil */ 358c358 < setnilvalue(s2v(where + i)); > setnilvalue2s(where + i); 362c362 < setnilvalue(s2v(where + i)); > setnilvalue2s(where + i); src/ltm.h 52c52 < ** the table is using the dummy node; bit 7 is used for 'isrealasize'.) > ** the table is using the dummy node.) src/lua.c 32a33,38 > /* Name of the environment variable with the name of the readline library */ > #if !defined(LUA_RLLIB_VAR) > #define LUA_RLLIB_VAR "LUA_READLINELIB" > #endif > > 204c210 < return dochunk(L, luaL_loadfile(L, name)); > return dochunk(L, luaL_loadfilex(L, name, "bt")); 209c215 < return dochunk(L, luaL_loadbuffer(L, s, strlen(s), name)); > return dochunk(L, luaL_loadbufferx(L, s, strlen(s), name, "t")); 263c269 < status = luaL_loadfile(L, fname); > status = luaL_loadfilex(L, fname, "bt"); 376a383,391 > static char *(*l_getenv)(const char *name); > > /* Function to ignore environment variables, used by option -E */ > static char *no_getenv (const char *name) { > UNUSED(name); > return NULL; > } > > 379c394 < const char *init = getenv(name + 1); > const char *init = l_getenv(name + 1); 382c397 < init = getenv(name + 1); /* try alternative name */ > init = l_getenv(name + 1); /* try alternative name */ 501,504c516,521 < void *lib = dlopen(LUA_READLINELIB, RTLD_NOW | RTLD_LOCAL); < if (lib == NULL) < lua_warning(L, "library '" LUA_READLINELIB "' not found", 0); < else { > const char *rllib = l_getenv(LUA_RLLIB_VAR); /* name of readline library */ > void *lib; /* library handle */ > if (rllib == NULL) /* no environment variable? */ > rllib = LUA_READLINELIB; /* use default name */ > lib = dlopen(rllib, RTLD_NOW | RTLD_LOCAL); > if (lib != NULL) { 510,512c527,533 < if (l_readline == NULL) < lua_warning(L, "unable to load 'readline'", 0); < } > if (l_readline != NULL) /* could load readline function? */ > return; /* everything ok */ > /* else emit a warning */ > } > lua_warning(L, "unable to load readline library '", 1); > lua_warning(L, rllib, 1); > lua_warning(L, "'", 0); 591c612 < int status = luaL_loadbuffer(L, retline, strlen(retline), "=stdin"); > int status = luaL_loadbufferx(L, retline, strlen(retline), "=stdin", "t"); 595c616 < lua_pop(L, 2); /* pop result from 'luaL_loadbuffer' and modified line */ > lua_pop(L, 2); /* pop result from 'luaL_loadbufferx' and modified line */ 622c643 < int status = luaL_loadbuffer(L, line, len, "=stdin"); /* try it */ > int status = luaL_loadbufferx(L, line, len, "=stdin", "t"); /* try it */ 696c717,723 < #define luai_openlibs(L) luaL_openselectedlibs(L, ~0, 0) > #if defined(LUA_NODEBUGLIB) > /* With this option, code must require the debug library before using it */ > #define luai_openlibs(L) luaL_openselectedlibs(L, ~LUA_DBLIBK, LUA_DBLIBK) > #else > /* The default is to open all standard libraries */ > #define luai_openlibs(L) luaL_openselectedlibs(L, ~0, 0) > #endif 717a745 > l_getenv = &no_getenv; /* program will ignore environment variables */ 720a749,750 > else > l_getenv = &getenv; 725,728c755,756 < if (!(args & has_E)) { /* no option '-E'? */ < if (handle_luainit(L) != LUA_OK) /* run LUA_INIT */ < return 0; /* error running LUA_INIT */ < } > if (handle_luainit(L) != LUA_OK) /* run LUA_INIT */ > return 0; /* error running LUA_INIT */ src/lua.h 16c16 < #define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2025 Lua.org, PUC-Rio" > #define LUA_COPYRIGHT LUA_RELEASE " Copyright (C) 1994-2026 Lua.org, PUC-Rio" 22c22 < #define LUA_VERSION_RELEASE_N 0 > #define LUA_VERSION_RELEASE_N 1 524c524 < * Copyright (C) 1994-2025 Lua.org, PUC-Rio. > * Copyright (C) 1994-2026 Lua.org, PUC-Rio. src/luaconf.h 72a73 > #if !defined(LUA_READLINELIB) 74a76 > #endif 80c82 < #define LUA_READLINELIB "libedit.dylib" > #define LUA_USE_READLINE /* needs an extra library: -lreadline */ 227,229c229,231 < LUA_LDIR"?.lua;" LUA_LDIR"?\\init.lua;" \ < LUA_CDIR"?.lua;" LUA_CDIR"?\\init.lua;" \ < LUA_SHRDIR"?.lua;" LUA_SHRDIR"?\\init.lua;" \ > LUA_LDIR "?.lua;" LUA_LDIR "?\\init.lua;" \ > LUA_CDIR "?.lua;" LUA_CDIR "?\\init.lua;" \ > LUA_SHRDIR "?.lua;" LUA_SHRDIR "?\\init.lua;" \ 235,237c237,239 < LUA_CDIR"?.dll;" \ < LUA_CDIR"..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \ < LUA_CDIR"loadall.dll;" ".\\?.dll" > LUA_CDIR "?.dll;" \ > LUA_CDIR "..\\lib\\lua\\" LUA_VDIR "\\?.dll;" \ > LUA_CDIR "loadall.dll;" ".\\?.dll" 248,249c250,251 < LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \ < LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \ > LUA_LDIR "?.lua;" LUA_LDIR "?/init.lua;" \ > LUA_CDIR "?.lua;" LUA_CDIR "?/init.lua;" \ 255c257 < LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so" > LUA_CDIR "?.so;" LUA_CDIR "loadall.so;" "./?.so" 342c344,346 < #define LUA_COMPAT_GLOBAL > #if !defined(LUA_COMPAT_GLOBAL) > #define LUA_COMPAT_GLOBAL 1 > #endif 652c656 < #if defined(__GNUC__) && !defined(LUA_NOBUILTIN) > #if !defined(LUA_NOBUILTIN) && defined(__GNUC__) && (__GNUC__ >= 3) 724,725c728,730 < @@ LUAI_MAXALIGN defines fields that, when used in a union, ensure < ** maximum alignment for the other items in that union. > @@ LUAI_MAXALIGN defines fields that ensure proper alignment for > ** memory areas offered by Lua (e.g., userdata memory). > ** Add fields to it if you need alignment for non-ISO objects. 726a732,736 > #if defined(LLONG_MAX) > /* use ISO C99 stuff */ > #define LUAI_MAXALIGN long double u; void *s; long long l > #else > /* use only C89 stuff */ 727a738 > #endif src/lundump.c 395c395,396 < LClosure *luaU_undump (lua_State *L, ZIO *Z, const char *name, int fixed) { > LClosure *luaU_undump (lua_State *L, ZIO *Z, Table *anchor, const char *name, > int fixed) { 408,411c409 < cl = luaF_newLclosure(L, loadByte(&S)); < setclLvalue2s(L, L->top.p, cl); < luaD_inctop(L); < S.h = luaH_new(L); /* create list of saved strings */ > S.h = anchor; 413,414c411,412 < sethvalue2s(L, L->top.p, S.h); /* anchor it */ < luaD_inctop(L); > cl = luaF_newLclosure(L, loadByte(&S)); > luaD_anchorobj(L, anchor, obj2gco(cl)); 421d418 < L->top.p--; /* pop table */ src/lundump.h 33,34c33,34 < LUAI_FUNC LClosure* luaU_undump (lua_State* L, ZIO* Z, const char* name, < int fixed); > LUAI_FUNC LClosure* luaU_undump (lua_State* L, ZIO* Z, Table *anchor, > const char* name, int fixed); src/lutf8lib.c 58a59,60 > else if (c >= 0xfe) /* c >= 1111 1110b ? */ > return NULL; /* would need six or more continuation bytes */ 66a69 > lua_assert(count <= 5); 68c71 < if (count > 5 || res > MAXUTF || res < limits[count]) > if (res > MAXUTF || res < limits[count]) 149c152 < lua_pushfstring(L, "%U", (long)code); > lua_pushfstring(L, "%U", cast(unsigned long, code)); src/lvm.c 271c271 < ** written online with opcode OP_FORLOOP, for performance.) > ** written inline with opcode OP_FORLOOP, for performance.) 273c273 < static int floatforloop (StkId ra) { > static int floatforloop (lua_State *L, StkId ra) { 306c306 < setnilvalue(s2v(val)); /* result is nil */ > setnilvalue2s(val); /* result is nil */ 363,367c363,373 < t = tm; /* else repeat assignment over 'tm' */ < luaV_fastset(t, key, val, hres, luaH_pset); < if (hres == HOK) { < luaV_finishfastset(L, t, val); < return; /* done */ > t = tm; /* else must repeat assignment over 'tm' */ > /* do the equivalent to 'luaV_fastset', but saving 'h' */ > if (!ttistable(t)) > hres = HNOTATABLE; > else { > Table *h = hvalue(t); /* next call can change the value at 't' */ > hres = luaH_pset(h, key, val); > if (hres == HOK) { > luaC_barrierback(L, obj2gco(h), val); /* luaV_finishfastset */ > return; /* done */ > } 369c375 < /* else 'return luaV_finishset(L, t, key, val, slot)' (loop) */ > /* else 'return luaV_finishset(L, t, key, val, hres)' (loop) */ 922c928 < ** iterpreter loop (function luaV_execute) and may access directly > ** interpreter loop (function luaV_execute) and may access directly 1844c1850 < else if (floatforloop(ra)) /* float loop */ > else if (floatforloop(L, ra)) /* float loop */