Esto es un error Que se ha solucionado con https://github.com/rakudo/rakudo/commit/f70d95e299 .
La razón por la que actuó de manera diferente Rat
que para cualquier otro tipo, es que el Rat
caso fue optimizado para no tener que hacer ninguna coerción, y por lo tanto no fue necesario verificar el resultado de la coerción. En ese caso, el valor se colocó directamente en el nuevo Duration
objeto. Sin embargo, lo hizo sin desempaquetar, por lo que el Duration
objeto realmente estaría haciendo referencia a la variable $x
de su ejemplo. En general, todo está bien, pero la .gist
lógica de alguna manera creó un bucle infinito tratando de crear una representación del Duration
debido a esta autorreferencia. Debo admitir que realmente no investigé dónde exactamente se metió en un bucle.
De todos modos, al asegurarse de que el valor se descontamine dentro del Duration
objeto, el problema desaparece, ya que ya no se puede hacer referencia a sí mismo.