On Tuesday, 25 October 2022 at 14:14:00 UTC, Quirin Schroll wrote:
>Asking curiously, wasn’t the function UB before, but the behavior changed?
Until very recently, the language spec [1] said that a scope
parameter "must not escape", but was silent on whether the same rule applied to scope
local variables (although it would be reasonable to infer that it did).
At some point between the release of DMD 2.100.2 and current master
, the spec was updated to additionally state that returning a scope
variable from a function is "disallowed" [2].
So, yes, I think the most reasonable interpretation is that this was always intended to be UB. But I am not confident that the average D user would have known for certain it was UB at the time DMD 2.100.2 was released.
[1] https://dlang.org/spec/function.html#scope-parameters
[2] https://dlang.org/spec/attribute.html#scope