Re:Crafting Interpreters with Rust: On Garbage Collection
by bombela on Wednesday July 31, 2024 @10:55PM
(#41125762)
With a huge static stack allocation the stack check must be done within a parent function instead of within the same function.
In any case it is up to you to do the stack check. Though alloca can easily be wrapped by a function running the check.
In Rust I would write a check stack function that takes a function/closure as parameters. Within the closure, you are guaranteed to have at least the requested stack space.
The compiler will inline it all nicely, while preserving the semantic of the stack allocation.
It's not all that much worse than using a huge, static stack allocation. In fact, there are cases where alloca is safer since you can take into account how much stack memory you already have available before incrementing the stack pointer.