=begin pod

=TITLE class Version

=SUBTITLE Module version descriptor

    class Version { }

Version objects identify version of software components (and potentially other
entities). Perl 6 uses them internally for versioning modules.

A version consists of several parts, which are visually represented by joining
them with a dot. A version part is usually an integer, a string like C<alpha>,
or a L<Whatever>-star C<*>. The latter is used to indicate that any version
part is acceptable in another version that is compared to the current one.

    say v1.0.1 ~~ v.1.*;    # True

Version literals can only contain numeric and L<Whatever> parts. They start
with a lower-case C<v>, and are followed by at least one part. Multiple parts
are separate with a dot C<.>. A trailing C<+> indicates that higher versions
are OK in comparisons:

    say v1.2 ~~ v1.0;       # False
    say v1.2 ~~ v1.0+;      # True

In comparisons, early parts take precedence over later parts.

    say v1.2 cmp v2.1;      # Increase

=head1 Methods

=head2 method new

    method new(Str:d $s)

Creates a Version from a string C<$s>.  The string is combed
for the numeric, alphabetic, and wildcard components of the version object.
Any characters other than alphanumerics and asterisks are assumed
to be equivalent to a dot.  A dot is also assumed between any adjacent
numeric and alphabetic characters.

=head2 method parts

    method parts(Version:D:) returns List:D

Returns the list of parts that make up this Version object

=head2 method plus

    method plus(Version:D:) returns Bool:D

Returns C<True> if comparisons against this version allow larger versions too.

=end pod
