|Just another Perl shrine|
Seeking thoughts on version numbers in modulesby xdg (Monsignor)
|on Dec 27, 2004 at 16:53 UTC||Need Help??|
xdg has asked for the
wisdom of the Perl Monks concerning the following question:
I'm looking for some recommendations on best-practices for version numbers in modules. There's several different "standard" approaches out there, but there doesn't seem to be a lot of consensus in actual pracice. I'm still not sure if we're supposed to be using v-strings or not, or "our" vs "use vars" for that matter, and I've other questions, too. After playing with version number parsing in response to Help update the Phalanx 100, it's clear that TIMTOWTDI rules on CPAN with distributions numbered all sorts of strange ways. I'd like to spark some discussion on the topic and see what people's latest thoughts are. Background reading for this discussion could include Everything you wanted to know about Module Version Numbers and Checking and the version module, the VERSION_FROM section of ExtUtils::MakeMaker, and Other Conventions from PAUSE.
Here are some questions (in no particular order):
I'd love to hear answers to any/all of these questions or to see additional questions on the same topic.
Thanks very much
Code posted by xdg on PerlMonks is public domain. It has no warranties, express or implied. Posted code may not have been tested. Use at your own risk.
Update: Several people have commented that v-strings are deprecated, but I'm not sure this is entirely true. From what I can see, the "version" object is going into the core, and its documentation suggests that only the leading-v form "v10.2" is being deprecated, whereas bare numbers with two or more decimal places will continue to be treated as v-strings. The documentation for version as included in perl-5.9.1 certainly has a lot to say (almost too much) on the topic. (AM's comment about his/her brain popping is apropos.) Can anyone involved in perl 5.9/5.10/perl6 shed some light on the direction of v-strings?
Update 2: After reading comments here, reading version several times, and researching mailing lists and even code for Module::Build and ExtUtils::MakeMaker, I've come to the personal conclusion that version is headed in the right direction, but won't be appropriate for widespread usage until it has better support within Module::Build and ExtUtils::MakeMaker. See this thread and this post in particular.