lua-users home
lua-l archive

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


Hi!

Am 31.07.2014 20:30 schröbte Luiz Henrique de Figueiredo:
Lua 5.3.0 (alpha) is now available for testing at
	http://www.lua.org/work/lua-5.3.0-alpha.tar.gz

All feedback welcome. Thanks.
--lhf

I think I spotted a formatting error in the manual (`id{__ipairs}` in 
the "Changes in the Libraries" section).
I really like that many table operations now respect metamethods, but 
now starts the complaining:
Is there a reason why the protocol for `ipairs` has changed from 
"iterate to first nil value" to "iterate to #table"? The first is well 
defined for all tables, and runs in O(n), while the second needs 
O(nlog(n)) time, requires a proper sequence for defined behavior, or can 
yield nil values during iteration.
If this behavior is going to stay, I also think the metamethod check can 
be simplified to
    lua_CFunction iter =
        (luaL_getmetafield(L, 1, "__len"))
           ? ipairsaux : ipairsaux_raw;

I.e. `__index` will never trigger unless there is a hole in the table in which case you need `__len` as well for the iteration to have defined behavior.

Philipp