You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Lua stack depth outside the Prolog engine: shen.curry, post-reader walkers, user non-tail recursion (~12k frames) #93
This follows up #85 and #88. #90 removes the native Prolog engine's own depth limit by running deep proofs on fresh coroutine stacks, and #91 makes the reader iterative. Several capcov repros still overflow LuaJIT's fixed ~65500-slot Lua stack. The overflow now happens outside the Prolog engine and the reader, in non-tail-recursive Lua code: kernel KL tree walkers and user code. shen-go 1f587de succeeds on all of them, because it has a growable stack.
The general case, user code included: run evaluation on a fresh coroutine when the stack is deep, as fix(prolog): run deep proofs on fresh coroutine stacks (#85) #90 does for the Prolog engine. Every coroutine has its own ~65500-slot stack. The hard part is finding a cheap trigger for compiled KL, which has no single thaw point to count at.
Activity
Merge pull request #95 from pyrex41/capcov/fix-93-lua-stack-depth