Это ошибка. Что было исправлено с помощью https://github.com/rakudo/rakudo/commit/f70d95e299 .
Причина, по которой он действовал иначе, Rat
чем для любого другого типа, заключается в том, что Rat
дело было оптимизировано таким образом, чтобы не приходилось выполнять какое-либо принуждение, и, следовательно, не нужно проверять результат принуждения. В этом случае значение было помещено непосредственно в новый Duration
объект. Однако, это было сделано без деконтейнерства, поэтому Duration
объект фактически ссылался на переменную $x
из вашего примера. В целом это нормально, но .gist
логика каким-то образом создала бесконечный цикл, пытаясь создать представление из- Duration
за этой самореференции. Должен признать, я действительно не изучал, где это точно вошло в петлю.
В любом случае, убедившись, что значение внутри Duration
объекта обнуляется , проблема исчезает, так как она больше не может ссылаться на себя.