On 8/23/17 11:59 AM, Walter Bright wrote:
On 8/23/2017 7:37 AM, Steven Schveighoffer wrote:
How do dynamic closures work without the GC?

They don't allocate the closure on the GC heap. (Or do I have static/dynamic closures backwards?)

I thought "closure" means allocating the stack onto the heap so you can return the delegate with its context intact.

From https://en.wikipedia.org/wiki/Closure_(computer_programming) :

"A language implementation cannot easily support full closures if its run-time memory model allocates all automatic variables on a linear stack. In such languages, a function's automatic local variables are deallocated when the function returns. However, a closure requires that the free variables it references survive the enclosing function's execution. Therefore, those variables must be allocated so that they persist until no longer needed, typically via heap allocation, rather than on the stack, and their lifetime must be managed so they survive until all closures referencing them have are no longer in use."

-Steve

Reply via email to