On Tue, Feb 1, 2011 at 2:57 PM, Jesse Vincent <jesse@fsck.com> wrote: > Before we continue to argue about which fix is the least harmful, let's > characterize the problem. > The problem is probably only affecting some debugging tools, and has been doing so since 5.12.0 (dev versions aside). A backwards incompatible change in ->VERSION (the addition of validation in 5.12, the addition of the possibility of throwing exceptions) is causing some introspection tools to die (e.g. Devel::TraceUse) on the version set the base.pm in some situations (which it has been doing for "ages"). There's some fault at both ends. - ->VERSION changed. I don't know what problem that addresses. What is gained by having ->VERSION validate $VERSION if ->VERSION doesn't return a version object? It result must first be converted into a version object before any comparisons can be made, and that will do validation. - base.pm sets $VERSION to something which isn't a version. But it used to be treated as valid practically all the time. Possible fixes: - Devel::TraceUse (and the like) should use $VERSION directly. Argument: Don't ask for the version if you want $VERSION. - Devel::TraceUse (and the like) should catch exceptions from ->VERSION. Argument: New sources of errors are a fact of life. - ->VERSION shouldn't validate. Argument: It's a convenient way of getting $VERSION. - ->VERSION should return undef on error (as if $VERSION wasn't set). Argument: The change to ->VERSION was too major. - ->VERSION should accept the string from base.pm. Argument: The change to ->VERSION didn't reflect current practices. - base.pm should stop using an invalid version string. Argument: Should have known better, GIGO. Does anyone ever check if $VERSION is set to "-1, ..."? - EricThread Previous | Thread Next