3 ms·
Lua 5.3 (2015-01-12) added the bitwise operators: https://www.lua.org/versions.html#5.3 https://www.lua.org/versions.html#5.3 https://www.lua.org/manual/5.3/m
by omoikane 4mo ago
Lua 5.3 (2015-01-12) added the bitwise operators:
https://www.lua.org/versions.html#5.3 https://www.lua.org/versions.html#5.3
https://www.lua.org/manual/5.3/manual.html#3.4.2 https://www.lua.org/manual/5.3/manual.html#3.4.2
Looks like LuaJIT is catching up, but calling these "syntax extensions" is confusing. Is the intent to hold LuaJIT fixed against some earlier Lua version (I guess 5.1) and adopt newer syntax piecemeal?
I welcome the compound assignment operators. Playdate's version of Lua also has that extension.
- orthoxerox 4mo agoLuaJIT is an involuntary fork of 5.1. It already had various extensions that conflicted with the 5.2 implementation of the same features, and Mike Pall made it clear on the mailing list he wasn't going to change how LuaJIT worked.
- matheusmoreira 4mo ago> Is the intent to hold LuaJIT fixed against some earlier Lua version (I guess 5.1) Yeah. PUC-Rio went in a direction that Mike Pall didn't want to follow. Something to do with garbage collector finalizers, if I remember correctly, which is a notoriously thorny issue in every language it exists.
- fsfod 4mo agoI think it was more the extra layers of indirection added to function environment\effectively global variable access added in 5.2 . The removal of scanning for changed userdata finalizer meta method in 5.2 is just a commonsense fix for bad design that made GC atomic phase run time, thats not incremental scale up with the number of GC userdata objects alive no matter if they have a finalizer or not.
- Dylan16807 4mo ago5.1 had function environments, then 5.2 changed them from a hidden value to a hardcoded variable name that was easier to change. How did that add extra indirection or slow anything down?
- deleted 4mo ago[deleted]
- Heliodex 4mo agoI wouldn't be surprised if their plan is to keep compatible with 5.1 and adopt newer features where feasible/compatible. Luau, another language with the explicit goal of extending Lua 5.1 in a compatible way, has a section in their documentation listing all newer Lua features and detailing why they chose to or not to adopt them <https://luau.org/compatibility/ https://luau.org/compatibility/>. The needs of Luau and LuaJIT are different though the reasoning is nonetheless fascinating.