refactor: consolidate loose constants into tables in World.lua and add GameViewport module dependency

and updated the behavior of the patch notes
also fixed manual update checking
added test to make sure no prs or build tasks are able to pass if the luajit limits ar exceeded.
This commit is contained in:
1jamie
2026-08-16 15:45:45 -05:00
parent e9a4a592a4
commit a542ed90ba
4 changed files with 262 additions and 283 deletions
@@ -0,0 +1,54 @@
-- Source file LuaJIT limits gate.
-- Verifies that every game engine source file compiles cleanly under
-- LuaJIT without exceeding LuaJIT's strict 200 local variables per-scope limit,
-- 60 upvalue limit, or bytecode compiler limits.
-- luajit tests/engine/luajit_source_limits_test.lua
package.path = "./?.lua;./?/init.lua;" .. package.path
local T = require("tests.harness")
local check, eq = T.check, T.eq
-- Find all .lua files in a directory recursively.
local function findLuaFiles(dir, out)
out = out or {}
local p = io.popen("find " .. dir .. " -type f -name '*.lua'")
if p then
for line in p:lines() do
out[#out + 1] = line
end
p:close()
end
table.sort(out)
return out
end
local files = findLuaFiles("src")
findLuaFiles("tools/save-editor", files)
files[#files + 1] = "main.lua"
files[#files + 1] = "conf.lua"
check(#files > 50, "discovered project source files (found " .. tostring(#files) .. ")")
for _, path in ipairs(files) do
local f = assert(io.open(path, "rb"), "could not open " .. path)
local source = f:read("*a")
f:close()
-- Compile through LuaJIT loadstring: detects 'main function has more than 200 local variables'
-- or 'function has more than 200 local variables' across any function scope in the file.
local chunk, err = loadstring(source, "@" .. path)
check(chunk ~= nil, path .. " compiles under LuaJIT: " .. tostring(err))
end
-- Meta-test: prove that exceeding 200 locals fails the gate
do
local overflowLocals = {}
for i = 1, 201 do overflowLocals[i] = "v" .. i end
local badCode = "local " .. table.concat(overflowLocals, ", ")
local chunk, err = loadstring(badCode, "@overflow_test.lua")
check(chunk == nil, "LuaJIT strictly rejects chunks exceeding 200 locals")
check(tostring(err):find("200 local variables", 1, true) ~= nil, "error message specifies 200 local variable limit")
end
T.finish("luajit_source_limits")