Function: version
Section: programming/specific
C-Name: pari_version
Prototype:
Help: version(): returns the PARI version as [major,minor,patch] or [major,minor,patch,VCSversion].
Doc: returns the current version number as a \typ{VEC} with three integer
components (major version number, minor version number and patchlevel);
if your sources were obtained through our version control system, this will
be followed by further more precise arguments, including
e.g.~a~\kbd{git} \emph{commit hash}.
This function is present in all versions of PARI following releases 2.3.4
(stable) and 2.4.3 (testing).
Unless you are working with multiple development versions, you probably only
care about the 3 first numeric components. In any case, the \kbd{lex} function
offers a clever way to check against a particular version number, since it will
compare each successive vector entry, numerically or as strings, and will not
mind if the vectors it compares have different lengths:
\bprog
if (lex(version(), [2,3,5]) >= 0,
\\ code to be executed if we are running 2.3.5 or more recent.
,
\\ compatibility code
);
@eprog\noindent On a number of different machines, \kbd{version()} could return either of
\bprog
%1 = [2, 3, 4] \\ released version, stable branch
%1 = [2, 4, 3] \\ released version, testing branch
%1 = [2, 6, 1, 15174, ""505ab9b"] \\ development
@eprog
In particular, if you are only working with released versions, the first
line of the gp introductory message can be emulated by
\bprog
[M,m,p] = version();
printf("GP/PARI CALCULATOR Version %s.%s.%s", M,m,p);
@eprog\noindent If you \emph{are} working with many development versions of
PARI/GP, the 4th and/or 5th components can be profitably included in the
name of your logfiles, for instance.
\misctitle{Technical note} For development versions obtained via \kbd{git},
the 4th and 5th components are liable to change eventually, but we document
their current meaning for completeness. The 4th component counts the number
of reachable commits in the branch (analogous to \kbd{svn}'s revision
number), and the 5th is the \kbd{git} commit hash. In particular, \kbd{lex}
comparison still orders correctly development versions with respect to each
others or to released versions (provided we stay within a given branch,
e.g. \kbd{master})!