> > Please check the rebased v32. Minor changes made in v32:
I'm cautiously optimistic about the 0002 patch. It adds the capability that we need from cast functions without imposing any load on the executor - fortunately context already dictates whether a function is called with an error context or not. It also guarantees that custom types are not presumed to be cast-safe until their author explicitly declares them so. To that end, I think there will be considerable debate about how we describe and document this new attribute. Our choice of function names ending in -Safe and our keyword choice can give the reader the impression that the function cannot fail under any circumstances, and we need to be clear that what we mean is that the function is capable of generating soft errors of some sort, presumably related to the inputs to the function, but does not guarantee that all possible errors are caught and captured in the error context. So far, we've been comfortable calling such a situation "safe", but this exposes that shorthand to a larger audience and we should be proactive in dispelling the confusion before it starts. The usage and testing of in 0003 seems adequate.
