Versions.html revision 1056
1056N/A<?xml version="1.0" encoding="UTF-8"?>
1056N/A<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
1056N/A<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>X.Org Version Numbering Schemes</title><link rel="stylesheet" href="/usr/share/sgml/X11/xorg.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.69.1" /><meta name="description" content="&#10;X.Org has adopted the same basic numbering scheme used by the XFree86&#10;Project, Inc. for their releases. The actual numbers are different, but the&#10;basic scheme is the same. This document reflects the policy that X.Org uses.&#10;" /></head><body><div class="article" lang="en" xml:lang="en"><div class="titlepage"><div><div><h1 class="title"><a id="id2418659"></a>X.Org Version Numbering Schemes</h1></div><div><h3 class="corpauthor">
1056N/AThe XFree86 Project, Inc
1056N/A</h3></div><div><h3 class="corpauthor">
1056N/AUpdated for X.Org by Keith Packard, Kevin E. Martin, and Alan Coopersmith
1056N/A</h3></div><div><p class="pubdate">November 2010</p></div><div><div class="abstract"><p class="title"><b>Abstract</b></p><p>
1056N/AX.Org has adopted the same basic numbering scheme used by the XFree86
1056N/AProject, Inc. for their releases. The actual numbers are different, but the
1056N/Abasic scheme is the same. This document reflects the policy that X.Org uses.
1056N/A</p></div></div></div><hr /></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="#id2465608">Module Versions</a></span></dt><dt><span class="sect1"><a href="#id2465694">Releases, Development Streams and Branches</a></span></dt><dt><span class="sect1"><a href="#id2494250">Current Version Numbering Scheme</a></span></dt><dd><dl><dt><span class="sect2"><a href="#id2494298">Development Branch</a></span></dt><dt><span class="sect2"><a href="#id2466380">Stable Branch</a></span></dt></dl></dd><dt><span class="sect1"><a href="#id2464673">Finding the X.Org X Server Version From a Client</a></span></dt></dl></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2465608"></a>Module Versions</h2></div></div></div><p>
1056N/AStarting with the X11R7.0 release, each module has its own version number.
1056N/AFor those without a natural starting point, the version numbers started at
1056N/A1.0. For instance, the X11R7.0 release included the xorg-server 1.0
1056N/Amodule. As modules are released independently from the rest of the
1056N/Awindow system, the module version is the most accurate source of version
1056N/Ainformation. For instance, there are many X server releases in a year,
1056N/Abut generally only one window system release, so an X server version number
1056N/Asuch as 1.7.7 is more informative than the X11R7.5 version for the window
1056N/Asystem “<span class="quote">katamari</span>” release.
1056N/A</p><p>
1056N/AUnfortunately, up through the X server 1.3 release, the X server
1056N/Aused the Window System version when reporting its version number
1056N/Ain log files, the -version option, and the connection setup string
1056N/A(displayed by xdpyinfo). This was corrected with X server 1.3, which
1056N/Acaused the visible version number string to appear to jump backwards
1056N/Afrom 7.2 to 1.3.
1056N/A</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2465694"></a>Releases, Development Streams and Branches</h2></div></div></div><p>
1056N/AX.Org has two release branches for the X server software, and several
1056N/Aother modules with active ongoing development.
1056N/AFirst is the trunk of the git repository. This is
1056N/Athe main development stream, where all new work and work for future
1056N/Areleases is done.
1056N/A</p><p>
1056N/ASecond is the stable bugfix branch for the latest full release. It is
1056N/Acreated around the time of the release. The branch will be named for the
1056N/Arelease version, such as “<span class="quote"><code class="literal">server-1.9-branch</code></span>”
1056N/Afor the X server 1.9.x series of releases.
1056N/AFixes for bugs found in the release will be added to this branch (as
1056N/Awell as the trunk), and updates to this release (if any) will be cut
1056N/Afrom this branch. Similar stable branches are present for previous full
1056N/Areleases.
1056N/A</p><p>
1056N/AThe X.Org Foundation is planning to make full releases from the main
1056N/Adevelopment stream at regular intervals in the 6-12 month range. The
1056N/Afeature freezes for these releases will usually be 2-3 months before the
1056N/Arelease dates. This general plan is a goal, not a binding commitment.
1056N/AThe actual release intervals and dates will depend to a large degree on
1056N/Athe resource available to X.Org.
1056N/AUpdate/bugfix releases will be made on an as-required basis,
1056N/Adepending also on the availability of resources, and will generally be
1056N/Alimited to serious bug and security fixes. New features will not
1056N/Ausually be added in update releases.
1056N/A</p><p>
1056N/AAside from actual releases, snapshots of the active release branches
1056N/Aare tagged in the git repository from time to time. Each such snapshot
1056N/Ahas an identifiable version number.
1056N/A</p></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2494250"></a>Current Version Numbering Scheme</h2></div></div></div><p>
1056N/AStarting with the main development branch after X11R6.7, the X.Org
1056N/Aversions are numbered according to the scheme outlined here.
1056N/A</p><p>
1056N/AThe version numbering format is <code class="literal">M.m.P.s</code>,
1056N/Awhere <em class="replaceable"><code>M</code></em> is the major version number,
1056N/A<em class="replaceable"><code>m</code></em> is the minor version number,
1056N/A<em class="replaceable"><code>P</code></em> is the patch level, and
1056N/A<em class="replaceable"><code>s</code></em> is the snapshot number.
1056N/AFull releases have <em class="replaceable"><code>P</code></em> set to zero, and it is
1056N/Aincremented for each subsequent bug fix release on the post-release
1056N/Astable branch. The snapshot number <em class="replaceable"><code>s</code></em> is
1056N/Apresent only for between-release snapshots of the development and
1056N/Astable branches.
1056N/A</p><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="id2494298"></a>Development Branch</h3></div></div></div><p>
1056N/AImmediately after forming a release stable branch, the patch level
1056N/Anumber for the main development branch is bumped to 99, and the snapshot
1056N/Anumber is reset. The snapshot number is incremented for each tagged
1056N/Adevelopment snapshot. The git tag for snapshots is
1056N/A“<span class="quote"><code class="literal">xorg-server-M.m.P.s</code></span>”.
1056N/AWhen the development branch enters feature
1056N/Afreeze, the snapshot number is bumped to 900. A stable branch may be
1056N/Acreated for the next full release at any time after the feature freeze.
1056N/AWhen it is, the branch is called
1056N/A“<span class="quote"><code class="literal">server-M.m-branch</code></span>”. The
1056N/Asnapshot number is incremented from there until the release is
1056N/Afinalised. Each of these snapshots is a “<span class="quote">release candidate</span>”. When the
1056N/Arelease is finalised, the minor version is incremented, the patch level
1056N/Ais set to zero, and the snapshot number removed.
1056N/A</p><p>
1056N/AHere's an example which shows the version number sequence for the
1056N/Adevelopment leading up to version 1.8:
1056N/A</p><p>
1056N/A</p><div class="variablelist"><table border="0"><col align="left" valign="top" /><tbody><tr><td><span class="term"><code class="literal">1.7.99.1</code></span></td><td><p>
1056N/AThe first snapshot of the pre-1.8 development branch.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.7.99.23</code></span></td><td><p>
1056N/AThe twenty-third snapshot of the pre-1.8 development branch.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.7.99.900</code></span></td><td><p>
1056N/AThe start of the 1.8 feature freeze.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.7.99.903</code></span></td><td><p>
1056N/AThe third 1.8 release candidate.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.8.0</code></span></td><td><p>
1056N/AThe 1.8 release.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.8.99.1</code></span></td><td><p>
1056N/AThe first pre-1.9 development snapshot, which is the first main
1056N/Abranch snapshot after creating the 1.8 stable branch.
1056N/A</p></td></tr></tbody></table></div><p>
1056N/A</p></div><div class="sect2" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="id2466380"></a>Stable Branch</h3></div></div></div><p>
1056N/AAfter a full release, the stable branch for the release will be
1056N/Amaintained with bug fixes and important updates until the next full
1056N/Arelease. Any snapshots on this branch are considered “<span class="quote">release
1056N/Acandidates,</span>” which is indicated by setting <em class="replaceable"><code>s</code></em>
1056N/Ato a number above
1056N/A900. The snapshot number is incremented for each release candidate
1056N/Auntil the update release is finalised. The patch level value
1056N/A(<em class="replaceable"><code>P</code></em>) is incremented for each update release.
1056N/A</p><p>
1056N/AHere's an example which shows a version number sequence for a 1.8.x
1056N/Astable branch:
1056N/A</p><p>
1056N/A</p><div class="variablelist"><table border="0"><col align="left" valign="top" /><tbody><tr><td><span class="term"><code class="literal">1.8.0</code></span></td><td><p>
1056N/AThe 1.8 release.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.8.0.901</code></span></td><td><p>
1056N/AThe first pre 1.8.1 snapshot.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.8.0.903</code></span></td><td><p>
1056N/AThe third pre 1.8.1 snapshot, also known as the third 1.8.1 release
1056N/Acandidate.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.8.1</code></span></td><td><p>
1056N/AThe 1.8.1 release.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.8.1.901</code></span></td><td><p>
1056N/AThe first pre 1.8.2 snapshot.
1056N/A</p></td></tr><tr><td><span class="term"><code class="literal">1.8.2</code></span></td><td><p>
1056N/AThe 1.8.2 release.
1056N/A</p></td></tr></tbody></table></div><p>
1056N/A</p></div></div><div class="sect1" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="id2464673"></a>Finding the X.Org X Server Version From a Client</h2></div></div></div><p>
1056N/AThe X.Org X servers report a <code class="function">VendorRelease</code> value that
1056N/Amatches the X.Org version number. There have been some cases of releases where
1056N/Athis value wasn't set correctly. The rules for interpreting this value
1056N/Aas well as the known exceptions are outlined here.
1056N/A</p><p>
1056N/AAs noted above, the version reported by <code class="function">VendorRelease</code>
1056N/Achanged from the window system version to the X server version starting in
1056N/Athe xorg-server 1.3 release.
1056N/A</p><p>
1056N/AFor all X.Org development and release versions using this numbering
1056N/Ascheme, the <code class="function">VendorRelease</code> value is
1056N/A<em class="replaceable"><code>MMmmPPsss</code></em>. That is, version
1056N/A<em class="replaceable"><code>M.m.P.s</code></em> has <code class="function">VendorRelease</code> set to
1056N/A<code class="code">M * 10000000 + m * 100000 + P * 1000 + s</code>.
1056N/A</p><p>
1056N/AThe following is a code fragment taken from <code class="filename">xdpyinfo.c</code>
1056N/Athat shows how the <code class="function">VendorRelease</code> information can be
1056N/Ainterpreted.
1056N/A</p><p>
1056N/A
1056N/A</p><pre class="programlisting">
1056N/A if (strstr(ServerVendor(dpy), "X.Org")) {
1056N/A int vendrel = VendorRelease(dpy);
1056N/A
1056N/A printf("X.Org version: ");
1056N/A printf("%d.%d.%d", vendrel / 10000000,
1056N/A (vendrel / 100000) % 100,
1056N/A (vendrel / 1000) % 100);
1056N/A if (vendrel % 1000) {
1056N/A printf(".%d", vendrel % 1000);
1056N/A }
1056N/A }
1056N/A</pre><p>
1056N/A
1056N/A</p></div></div></body></html>