Enforce evaluation order for generic applications in Closure#13882
Conversation
|
This kind of change is always delicate because we risk breaking user code by changing the evaluation order -- which they shouldn't rely on, but they do. On the other hand, if I understand correctly I'll put this change as a topic for discussion in our upcoming maintainer meeting. |
|
It's changing the evaluation order of indirect calls with Closure to be the same as direct calls with Closure (which is also the same as all calls in bytecode and flambda). I don't think it is a very risky move, particularly since effects/coeffects on the function side are not very common, but there's no harm in discussing this at the meeting. |
|
This needs a Changes entry I suppose? |
|
Do you think I should mark it as a potentially breaking change (with |
Yes, I think so. |
2268483 to
ca89e30
Compare
Fixes #13874, by enforcing evaluation order for function calls in
Closure.I have an alternative branch here which binds the arguments in
Cmmgeninstead. It is a bit simpler because it doesn't change much existing code, but I prefer this one because it allows some factorisation with the direct application case.