struct pyruntimestate;
struct _ceval_runtime_state;
-/* WASI has limited call stack. wasmtime 0.36 can handle sufficient amount of
- C stack frames for little more than 750 recursions. */
+/* WASI has limited call stack. Python's recursion limit depends on code
+ layout, optimization, and WASI runtime. Wasmtime can handle about 700-750
+ recursions, sometimes less. 600 is a more conservative limit. */
#ifndef Py_DEFAULT_RECURSION_LIMIT
# ifdef __wasi__
-# define Py_DEFAULT_RECURSION_LIMIT 750
+# define Py_DEFAULT_RECURSION_LIMIT 600
# else
# define Py_DEFAULT_RECURSION_LIMIT 1000
# endif
self.assertEqual(obj_copy, expected_obj)
def test_inline_array_recursion_limit(self):
- # 470 with default recursion limit
- nest_count = int(sys.getrecursionlimit() * 0.47)
+ # 465 with default recursion limit
+ nest_count = int(sys.getrecursionlimit() * 0.465)
recursive_array_toml = "arr = " + nest_count * "[" + nest_count * "]"
tomllib.loads(recursive_array_toml)