urbit / UIPs

Urbit Improvement Proposals
Creative Commons Zero v1.0 Universal
27 stars 8 forks source link

UIP-0123 %loop hint crash determinism question #59

Open belisarius222 opened 5 months ago

belisarius222 commented 5 months ago

The UIP suggests that the interpreter should produce a deterministic error (bail: exit) when the %loop hint triggers. While this does not violate the Nock spec, @joemfb, @frodwith, and I all had the same gut feeling that it would be more conservative to fail nondeterministically (bail:fail), since that would preserve the existing behavior, i.e. an infinite loop could only ever result in a nondeterministic error in any interpreter that doesn't support the %loop hint.

@eamsden Do you have a specific use case in mind that would benefit from this error being catchable? If not, we are leaning toward making this a bail:fail.

eamsden commented 5 months ago

Yes the case is precisely where you would otherwise keep a set of some sort in your subject to track if you are recurring on some already seen part of . The goal of the hint isn't just to turn otherwise-infinitely-looping nock into a crash, but to allow the removal of explicit checks in hoon while retaining the ability to crash deterministically instead of infinite-looping.

@joemfb there is state in the Hoon compiler like this, right?