summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRafael Garcia-Suarez <rgarciasuarez@gmail.com>2008-07-15 08:59:13 +0000
committerRafael Garcia-Suarez <rgarciasuarez@gmail.com>2008-07-15 08:59:13 +0000
commit219bf41872a28e4a469d4274a14dca87429a5a5e (patch)
tree240666aa427d8bd88a5cdebf7e48798d6ca31b3c /lib
parenta469502ffde47af0b05b575bdfc51039218392df (diff)
downloadperl-219bf41872a28e4a469d4274a14dca87429a5a5e.tar.gz
Upgrade to version 0.76 by John Peacock
Fix segfault in serialized version objects (bug #56606) p4raw-id: //depot/perl@34142
Diffstat (limited to 'lib')
-rw-r--r--lib/version.pm2
-rw-r--r--lib/version.pod33
-rw-r--r--lib/version.t8
3 files changed, 39 insertions, 4 deletions
diff --git a/lib/version.pm b/lib/version.pm
index f05d20a399..998180b2f5 100644
--- a/lib/version.pm
+++ b/lib/version.pm
@@ -6,7 +6,7 @@ use strict;
use vars qw(@ISA $VERSION $CLASS *qv);
-$VERSION = 0.74;
+$VERSION = 0.76;
$CLASS = 'version';
diff --git a/lib/version.pod b/lib/version.pod
index dee652dbed..7f85ecb154 100644
--- a/lib/version.pod
+++ b/lib/version.pod
@@ -22,8 +22,12 @@ version - Perl extension for Version Objects
=head1 DESCRIPTION
Overloaded version objects for all modern versions of Perl. This module
-implements all of the features of version objects which will be part
-of Perl 5.10.0.
+implements all of the features of version objects which are part
+of Perl 5.10.0. All previous releases (i.e. before 0.74) are deprecated
+and should not be used due to incompatible API changes. If you 'use
+version' in your code, you are strongly urged to set a minimum, e.g.
+
+ use version 0.74; # to remain compatible with Perl v5.10.0
=head2 BEST PRACTICES
@@ -407,6 +411,31 @@ For example:
See also L<UNIVERSAL::VERSION>, as this also returns the stringified form
when used as a class method.
+IMPORTANT NOTE: There is one exceptional cases shown in the above table
+where the "initializer" is not stringwise equivalent to the stringified
+representation. If you use the C<qv()> operator on a version without a
+leading 'v' B<and> with only a single decimal place, the stringified output
+will have a leading 'v', to preserve the sense. See the L<qv()> operator
+for more details.
+
+IMPORTANT NOTE 2: Attempting to bypass the normal stringification rules by
+manually applying L<numify()> and L<normal()> will sometimes yield
+surprising results:
+
+ print version->new(version->new("v1.0")->numify)->normal; # v1.0.0
+
+The reason for this is that the L<numify()> operator will turn "v1.0"
+into the equivalent string "1.000000". Forcing the outer version object
+to L<normal()> form will display the mathematically equivalent "v1.0.0".
+
+As the example in L<new()> shows, you can always create a copy of an
+existing version object with the same value by the very compact:
+
+ $v2 = $v1->new($v1);
+
+and be assured that both C<$v1> and C<$v2> will be completely equivalent,
+down to the same internal representation as well as stringification.
+
=back
=over 4
diff --git a/lib/version.t b/lib/version.t
index a839d5d6c3..47989e3394 100644
--- a/lib/version.t
+++ b/lib/version.t
@@ -551,7 +551,13 @@ SKIP: {
is $alpha2, $alpha1, "Don't fall for Data::Dumper's tricks";
}
-
+ {
+ # http://rt.perl.org/rt3/Ticket/Display.html?id=56606
+ my $badv = bless { version => [1,2,3] }, "version";
+ is $badv, '1.002003', "Deal with badly serialized versions from YAML";
+ my $badv2 = bless { qv => 1, version => [1,2,3] }, "version";
+ is $badv2, 'v1.2.3', "Deal with badly serialized versions from YAML ";
+ }
}
1;