It's backwards compatible because the old behavior was to simply make long evaluations an error every time. The new system gives you the option to allow a long evaluation if you opt in
Though to be honest this problem existed even before rust 1.72.0 and likely can't be solved while preventing infinite computations.
Just to be clear, this was the case before the new changes in 1.72. They already had that limit, and code could break in exactly that way. There were two problems with that beyond the simple backwards compatibility break. One is that there was no opt out, so if you broke you were kinda hosed at the library level. The second is that the limit was relatively low and so it was very possible to hit it.
Now if you end up running too long and the compiler fails, you’ve at least got an opt out, and the limit before failure is much higher.