On 2/19/23 7:50 PM, Etienne wrote:
Hello,
I'm wondering at which moment the following would make an allocation of
the scope variables on the GC. Should I assume that the second parameter
of enforce being lazy, we would get a delegate/literal that saves the
current scope on the GC even if it's not needed? I'm asking purely for a
performance perspective of avoiding GC allocations.
```
void main() {
int a = 5;
enforce(true, format("a: %d", a));
}
```
enforce takes a lazy variable, which I believe is scope by default, so
no closure should be allocated.
Indeed, you can't really "save" the hidden delegate somewhere, so the
calling function knows that the delgate can't escape.
-Steve