С тех пор как завезли - совместимость должна быть.
Но в любом случае, вторая часть моего поста более интересна чем обсасывание обратной совместимости. Разверну ее:
если ты попытался вычислить какую-то функцию с лимитом в N шагов, у тебя есть три варианта.
1) Произошла паника/UB/etc. В общем-то, мы можем в такой ситуации плевать на обратную совместимость, давать ошибку компиляции и жить.
2) Функция успешно вычислилась. Прекрасно, подставляем эту константу куда надо и радуемся.
3) Функция до сих пор не завершилась. Если мы пишем обычный оптимизатор, то все ясно - просто забрасываем эти попытки соптимизировать это выражение.
Но в этот момент мы как раз теряем гарантию обязательности оптимизации константых функций, потому что какие-то совершенно прекрасные, корректные во всех смыслах функции мы не будет вычислять при компиляции.
Поэтому нужен гвард по таймеру, константные функции должны быть терминальными, нет ни одной причины почему бы им хотелось таковыми не быть