Why did you refactor autograd.Function by using static functions?

I found the warning in Function.__call__() showing Legacy autograd function with non-static forward method is deprecated.... It use static forward method in latest code, and users must use Function.apply() to call custom functions.

I wonder why do this kind of refactoring. Is there any document or discuss to consult for me? Please tell me and thank a lot.

See https://github.com/pytorch/pytorch/pull/22983#discussion_r304642671

tl;dr: usage of legacy autograd function is error prone, if you invoke it twice for example, it will actually share the grad_fn, which may cause correctness issues