Hi, > > Alternatively I could implement a check for the loops, if you feel > > like this is worth the effort. > > I thought about that, but I'm not sure how to build a bulletproof > check at reasonable (ie, near zero) cost. We could detect the example > case where an object refers directly to itself, by noticing that "in" > doesn't change in one iteration. But I'm pretty sure it's possible to > build reference loops involving two or more Perl objects, and those > would fool such a check.
I was thinking about depth-first search where we store our current path in a set. If the visited node is already in the set then the graph has loops. This is not exactly cheap but the complexity is proportional to the cost of the serialization so I think we should be fine. The good thing is that the user will get a sensible error message instead of an infinite loop. -- Best regards, Aleksander Alekseev
