smichr/sympy — comment on commit a00f5e8c5ffec22f2a15acc2b105478cca9a6619
File:  line 0
By smichr:

I don't think it breaks compatibility:

If self is not equal to old then _eval_subs is called.
If _eval_subs doesn't want to make any special replacement
then a None is received which indicates that the fallback
should be applied wherein a search for replacements is made
amongst the arguments of self.

So if someone writes an _eval_subs that does all the replacements and returns what they think should be the final answer, _subs won't do it again. _subs only does the common "nothing worked so try the subs on the args" idiom if _eval_subs returns a None.